{"version":3,"file":"index.mjs","sources":["../node_modules/.pnpm/pdfjs-dist@4.7.76/node_modules/pdfjs-dist/build/pdf.mjs"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsLib = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  AbortException: () => (/* reexport */ AbortException),\n  AnnotationEditorLayer: () => (/* reexport */ AnnotationEditorLayer),\n  AnnotationEditorParamsType: () => (/* reexport */ AnnotationEditorParamsType),\n  AnnotationEditorType: () => (/* reexport */ AnnotationEditorType),\n  AnnotationEditorUIManager: () => (/* reexport */ AnnotationEditorUIManager),\n  AnnotationLayer: () => (/* reexport */ AnnotationLayer),\n  AnnotationMode: () => (/* reexport */ AnnotationMode),\n  CMapCompressionType: () => (/* reexport */ CMapCompressionType),\n  ColorPicker: () => (/* reexport */ ColorPicker),\n  DOMSVGFactory: () => (/* reexport */ DOMSVGFactory),\n  DrawLayer: () => (/* reexport */ DrawLayer),\n  FeatureTest: () => (/* reexport */ util_FeatureTest),\n  GlobalWorkerOptions: () => (/* reexport */ GlobalWorkerOptions),\n  ImageKind: () => (/* reexport */ util_ImageKind),\n  InvalidPDFException: () => (/* reexport */ InvalidPDFException),\n  MissingPDFException: () => (/* reexport */ MissingPDFException),\n  OPS: () => (/* reexport */ OPS),\n  OutputScale: () => (/* reexport */ OutputScale),\n  PDFDataRangeTransport: () => (/* reexport */ PDFDataRangeTransport),\n  PDFDateString: () => (/* reexport */ PDFDateString),\n  PDFWorker: () => (/* reexport */ PDFWorker),\n  PasswordResponses: () => (/* reexport */ PasswordResponses),\n  PermissionFlag: () => (/* reexport */ PermissionFlag),\n  PixelsPerInch: () => (/* reexport */ PixelsPerInch),\n  RenderingCancelledException: () => (/* reexport */ RenderingCancelledException),\n  TextLayer: () => (/* reexport */ TextLayer),\n  UnexpectedResponseException: () => (/* reexport */ UnexpectedResponseException),\n  Util: () => (/* reexport */ Util),\n  VerbosityLevel: () => (/* reexport */ VerbosityLevel),\n  XfaLayer: () => (/* reexport */ XfaLayer),\n  build: () => (/* reexport */ build),\n  createValidAbsoluteUrl: () => (/* reexport */ createValidAbsoluteUrl),\n  fetchData: () => (/* reexport */ fetchData),\n  getDocument: () => (/* reexport */ getDocument),\n  getFilenameFromUrl: () => (/* reexport */ getFilenameFromUrl),\n  getPdfFilenameFromUrl: () => (/* reexport */ getPdfFilenameFromUrl),\n  getXfaPageViewport: () => (/* reexport */ getXfaPageViewport),\n  isDataScheme: () => (/* reexport */ isDataScheme),\n  isPdfFile: () => (/* reexport */ isPdfFile),\n  noContextMenu: () => (/* reexport */ noContextMenu),\n  normalizeUnicode: () => (/* reexport */ normalizeUnicode),\n  setLayerDimensions: () => (/* reexport */ setLayerDimensions),\n  shadow: () => (/* reexport */ shadow),\n  version: () => (/* reexport */ version)\n});\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  SAVE: 0x08,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  IS_EDITING: 0x80,\n  OPLIST: 0x100\n};\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n  DISABLE: -1,\n  NONE: 0,\n  FREETEXT: 3,\n  HIGHLIGHT: 9,\n  STAMP: 13,\n  INK: 15\n};\nconst AnnotationEditorParamsType = {\n  RESIZE: 1,\n  CREATE: 2,\n  FREETEXT_SIZE: 11,\n  FREETEXT_COLOR: 12,\n  FREETEXT_OPACITY: 13,\n  INK_COLOR: 21,\n  INK_THICKNESS: 22,\n  INK_OPACITY: 23,\n  HIGHLIGHT_COLOR: 31,\n  HIGHLIGHT_DEFAULT_COLOR: 32,\n  HIGHLIGHT_THICKNESS: 33,\n  HIGHLIGHT_FREE: 34,\n  HIGHLIGHT_SHOW_ALL: 35\n};\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3\n};\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26\n};\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\"\n};\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n  E: \"Mouse Enter\",\n  X: \"Mouse Exit\",\n  D: \"Mouse Down\",\n  U: \"Mouse Up\",\n  Fo: \"Focus\",\n  Bl: \"Blur\",\n  PO: \"PageOpen\",\n  PC: \"PageClose\",\n  PV: \"PageVisible\",\n  PI: \"PageInvisible\",\n  K: \"Keystroke\",\n  F: \"Format\",\n  V: \"Validate\",\n  C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\"\n};\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5\n};\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1\n};\nconst OPS = {\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n  setStrokeTransparent: 92,\n  setFillTransparent: 93\n};\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\nfunction getVerbosityLevel() {\n  return verbosity;\n}\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\nfunction _isValidProtocol(url) {\n  switch (url?.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  try {\n    if (options && typeof url === \"string\") {\n      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n        const dots = url.match(/\\./g);\n        if (dots?.length >= 2) {\n          url = `http://${url}`;\n        }\n      }\n      if (options.tryConvertEncoding) {\n        try {\n          url = stringToUTF8String(url);\n        } catch {}\n      }\n    }\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch {}\n  return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: !nonSerializable,\n    configurable: true,\n    writable: false\n  });\n  return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n  function BaseException(message, name) {\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n  return BaseException;\n}();\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\nclass MissingPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"MissingPDFException\");\n  }\n}\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg, \"UnexpectedResponseException\");\n    this.status = status;\n  }\n}\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n}\nfunction bytesToString(bytes) {\n  if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n    unreachable(\"Invalid argument for bytesToString\");\n  }\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n  if (typeof str !== \"string\") {\n    unreachable(\"Invalid argument for stringToBytes\");\n  }\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\nfunction string32(value) {\n  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n  const obj = Object.create(null);\n  for (const [key, value] of map) {\n    obj[key] = value;\n  }\n  return obj;\n}\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\nfunction isEvalSupported() {\n  try {\n    new Function(\"\");\n    return true;\n  } catch {\n    return false;\n  }\n}\nclass util_FeatureTest {\n  static get isLittleEndian() {\n    return shadow(this, \"isLittleEndian\", isLittleEndian());\n  }\n  static get isEvalSupported() {\n    return shadow(this, \"isEvalSupported\", isEvalSupported());\n  }\n  static get isOffscreenCanvasSupported() {\n    return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n  }\n  static get platform() {\n    if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n      return shadow(this, \"platform\", {\n        isMac: navigator.platform.includes(\"Mac\"),\n        isWindows: navigator.platform.includes(\"Win\"),\n        isFirefox: typeof navigator?.userAgent === \"string\" && navigator.userAgent.includes(\"Firefox\")\n      });\n    }\n    return shadow(this, \"platform\", {\n      isMac: false,\n      isWindows: false,\n      isFirefox: false\n    });\n  }\n  static get isCSSRoundSupported() {\n    return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n  }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n  static scaleMinMax(transform, minMax) {\n    let temp;\n    if (transform[0]) {\n      if (transform[0] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[0];\n      minMax[2] *= transform[0];\n      if (transform[3] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[3];\n      minMax[3] *= transform[3];\n    } else {\n      temp = minMax[0];\n      minMax[0] = minMax[1];\n      minMax[1] = temp;\n      temp = minMax[2];\n      minMax[2] = minMax[3];\n      minMax[3] = temp;\n      if (transform[1] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[1];\n      minMax[3] *= transform[1];\n      if (transform[2] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[2];\n      minMax[2] *= transform[2];\n    }\n    minMax[0] += transform[4];\n    minMax[1] += transform[5];\n    minMax[2] += transform[4];\n    minMax[3] += transform[5];\n  }\n  static transform(m1, m2) {\n    return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n  }\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = this.applyTransform(r, m);\n    const p2 = this.applyTransform(r.slice(2, 4), m);\n    const p3 = this.applyTransform([r[0], r[3]], m);\n    const p4 = this.applyTransform([r[2], r[1]], m);\n    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n  }\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n  }\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n  static normalizeRect(rect) {\n    const r = rect.slice(0);\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n  static intersect(rect1, rect2) {\n    const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n    const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n    if (xLow > xHigh) {\n      return null;\n    }\n    const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n    const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n    if (yLow > yHigh) {\n      return null;\n    }\n    return [xLow, yLow, xHigh, yHigh];\n  }\n  static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n    if (t <= 0 || t >= 1) {\n      return;\n    }\n    const mt = 1 - t;\n    const tt = t * t;\n    const ttt = tt * t;\n    const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n    const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n    minMax[0] = Math.min(minMax[0], x);\n    minMax[1] = Math.min(minMax[1], y);\n    minMax[2] = Math.max(minMax[2], x);\n    minMax[3] = Math.max(minMax[3], y);\n  }\n  static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n    if (Math.abs(a) < 1e-12) {\n      if (Math.abs(b) >= 1e-12) {\n        this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n      }\n      return;\n    }\n    const delta = b ** 2 - 4 * c * a;\n    if (delta < 0) {\n      return;\n    }\n    const sqrtDelta = Math.sqrt(delta);\n    const a2 = 2 * a;\n    this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n    this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n  }\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n    if (minMax) {\n      minMax[0] = Math.min(minMax[0], x0, x3);\n      minMax[1] = Math.min(minMax[1], y0, y3);\n      minMax[2] = Math.max(minMax[2], x0, x3);\n      minMax[3] = Math.max(minMax[3], y0, y3);\n    } else {\n      minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n    }\n    this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n    this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n    return minMax;\n  }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str) {\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, {\n          fatal: true\n        });\n        const buffer = stringToBytes(str);\n        const decoded = decoder.decode(buffer);\n        if (!decoded.includes(\"\\x1b\")) {\n          return decoded;\n        }\n        return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n  const strBuf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const charCode = str.charCodeAt(i);\n    if (charCode === 0x1b) {\n      while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n      continue;\n    }\n    const code = PDFStringTranslateTable[charCode];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n  return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getModificationDate(date = new Date()) {\n  const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n  return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n  if (!NormalizeRegex) {\n    NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n    NormalizationMap = new Map([[\"ﬅ\", \"ſt\"]]);\n  }\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n  if (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\") {\n    return crypto.randomUUID();\n  }\n  const buf = new Uint8Array(32);\n  if (typeof crypto !== \"undefined\" && typeof crypto?.getRandomValues === \"function\") {\n    crypto.getRandomValues(buf);\n  } else {\n    for (let i = 0; i < 32; i++) {\n      buf[i] = Math.floor(Math.random() * 255);\n    }\n  }\n  return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst FontRenderOps = {\n  BEZIER_CURVE_TO: 0,\n  MOVE_TO: 1,\n  LINE_TO: 2,\n  QUADRATIC_CURVE_TO: 3,\n  RESTORE: 4,\n  SAVE: 5,\n  SCALE: 6,\n  TRANSFORM: 7,\n  TRANSLATE: 8\n};\n\n;// ./src/display/base_factory.js\n\nclass BaseFilterFactory {\n  addFilter(maps) {\n    return \"none\";\n  }\n  addHCMFilter(fgColor, bgColor) {\n    return \"none\";\n  }\n  addAlphaFilter(map) {\n    return \"none\";\n  }\n  addLuminosityFilter(map) {\n    return \"none\";\n  }\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n    return \"none\";\n  }\n  destroy(keepHCM = false) {}\n}\nclass BaseCanvasFactory {\n  #enableHWA = false;\n  constructor({\n    enableHWA = false\n  }) {\n    this.#enableHWA = enableHWA;\n  }\n  create(width, height) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    const canvas = this._createCanvas(width, height);\n    return {\n      canvas,\n      context: canvas.getContext(\"2d\", {\n        willReadFrequently: !this.#enableHWA\n      })\n    };\n  }\n  reset(canvasAndContext, width, height) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    canvasAndContext.canvas.width = width;\n    canvasAndContext.canvas.height = height;\n  }\n  destroy(canvasAndContext) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    canvasAndContext.canvas.width = 0;\n    canvasAndContext.canvas.height = 0;\n    canvasAndContext.canvas = null;\n    canvasAndContext.context = null;\n  }\n  _createCanvas(width, height) {\n    unreachable(\"Abstract method `_createCanvas` called.\");\n  }\n}\nclass BaseCMapReaderFactory {\n  constructor({\n    baseUrl = null,\n    isCompressed = true\n  }) {\n    this.baseUrl = baseUrl;\n    this.isCompressed = isCompressed;\n  }\n  async fetch({\n    name\n  }) {\n    if (!this.baseUrl) {\n      throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n    }\n    if (!name) {\n      throw new Error(\"CMap name must be specified.\");\n    }\n    const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n    const compressionType = this.isCompressed ? CMapCompressionType.BINARY : CMapCompressionType.NONE;\n    return this._fetchData(url, compressionType).catch(reason => {\n      throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n    });\n  }\n  _fetchData(url, compressionType) {\n    unreachable(\"Abstract method `_fetchData` called.\");\n  }\n}\nclass BaseStandardFontDataFactory {\n  constructor({\n    baseUrl = null\n  }) {\n    this.baseUrl = baseUrl;\n  }\n  async fetch({\n    filename\n  }) {\n    if (!this.baseUrl) {\n      throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n    }\n    if (!filename) {\n      throw new Error(\"Font filename must be specified.\");\n    }\n    const url = `${this.baseUrl}${filename}`;\n    return this._fetchData(url).catch(reason => {\n      throw new Error(`Unable to load font data at: ${url}`);\n    });\n  }\n  _fetchData(url) {\n    unreachable(\"Abstract method `_fetchData` called.\");\n  }\n}\nclass BaseSVGFactory {\n  create(width, height, skipDimensions = false) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid SVG dimensions\");\n    }\n    const svg = this._createSVG(\"svg:svg\");\n    svg.setAttribute(\"version\", \"1.1\");\n    if (!skipDimensions) {\n      svg.setAttribute(\"width\", `${width}px`);\n      svg.setAttribute(\"height\", `${height}px`);\n    }\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n    svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n    return svg;\n  }\n  createElement(type) {\n    if (typeof type !== \"string\") {\n      throw new Error(\"Invalid SVG element type\");\n    }\n    return this._createSVG(type);\n  }\n  _createSVG(type) {\n    unreachable(\"Abstract method `_createSVG` called.\");\n  }\n}\n\n;// ./src/display/display_utils.js\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n  static CSS = 96.0;\n  static PDF = 72.0;\n  static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n  #baseUrl;\n  #_cache;\n  #_defs;\n  #docId;\n  #document;\n  #_hcmCache;\n  #id = 0;\n  constructor({\n    docId,\n    ownerDocument = globalThis.document\n  }) {\n    super();\n    this.#docId = docId;\n    this.#document = ownerDocument;\n  }\n  get #cache() {\n    return this.#_cache ||= new Map();\n  }\n  get #hcmCache() {\n    return this.#_hcmCache ||= new Map();\n  }\n  get #defs() {\n    if (!this.#_defs) {\n      const div = this.#document.createElement(\"div\");\n      const {\n        style\n      } = div;\n      style.visibility = \"hidden\";\n      style.contain = \"strict\";\n      style.width = style.height = 0;\n      style.position = \"absolute\";\n      style.top = style.left = 0;\n      style.zIndex = -1;\n      const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n      svg.setAttribute(\"width\", 0);\n      svg.setAttribute(\"height\", 0);\n      this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n      div.append(svg);\n      svg.append(this.#_defs);\n      this.#document.body.append(div);\n    }\n    return this.#_defs;\n  }\n  #createTables(maps) {\n    if (maps.length === 1) {\n      const mapR = maps[0];\n      const buffer = new Array(256);\n      for (let i = 0; i < 256; i++) {\n        buffer[i] = mapR[i] / 255;\n      }\n      const table = buffer.join(\",\");\n      return [table, table, table];\n    }\n    const [mapR, mapG, mapB] = maps;\n    const bufferR = new Array(256);\n    const bufferG = new Array(256);\n    const bufferB = new Array(256);\n    for (let i = 0; i < 256; i++) {\n      bufferR[i] = mapR[i] / 255;\n      bufferG[i] = mapG[i] / 255;\n      bufferB[i] = mapB[i] / 255;\n    }\n    return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n  }\n  #createUrl(id) {\n    if (this.#baseUrl === undefined) {\n      this.#baseUrl = \"\";\n      const url = this.#document.URL;\n      if (url !== this.#document.baseURI) {\n        if (isDataScheme(url)) {\n          warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n        } else {\n          this.#baseUrl = url.split(\"#\", 1)[0];\n        }\n      }\n    }\n    return `url(${this.#baseUrl}#${id})`;\n  }\n  addFilter(maps) {\n    if (!maps) {\n      return \"none\";\n    }\n    let value = this.#cache.get(maps);\n    if (value) {\n      return value;\n    }\n    const [tableR, tableG, tableB] = this.#createTables(maps);\n    const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(maps, value);\n      return value;\n    }\n    const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(maps, url);\n    this.#cache.set(key, url);\n    const filter = this.#createFilter(id);\n    this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n    return url;\n  }\n  addHCMFilter(fgColor, bgColor) {\n    const key = `${fgColor}-${bgColor}`;\n    const filterName = \"base\";\n    let info = this.#hcmCache.get(filterName);\n    if (info?.key === key) {\n      return info.url;\n    }\n    if (info) {\n      info.filter?.remove();\n      info.key = key;\n      info.url = \"none\";\n      info.filter = null;\n    } else {\n      info = {\n        key,\n        url: \"none\",\n        filter: null\n      };\n      this.#hcmCache.set(filterName, info);\n    }\n    if (!fgColor || !bgColor) {\n      return info.url;\n    }\n    const fgRGB = this.#getRGB(fgColor);\n    fgColor = Util.makeHexColor(...fgRGB);\n    const bgRGB = this.#getRGB(bgColor);\n    bgColor = Util.makeHexColor(...bgRGB);\n    this.#defs.style.color = \"\";\n    if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n      return info.url;\n    }\n    const map = new Array(256);\n    for (let i = 0; i <= 255; i++) {\n      const x = i / 255;\n      map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n    }\n    const table = map.join(\",\");\n    const id = `g_${this.#docId}_hcm_filter`;\n    const filter = info.filter = this.#createFilter(id);\n    this.#addTransferMapConversion(table, table, table, filter);\n    this.#addGrayConversion(filter);\n    const getSteps = (c, n) => {\n      const start = fgRGB[c] / 255;\n      const end = bgRGB[c] / 255;\n      const arr = new Array(n + 1);\n      for (let i = 0; i <= n; i++) {\n        arr[i] = start + i / n * (end - start);\n      }\n      return arr.join(\",\");\n    };\n    this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n    info.url = this.#createUrl(id);\n    return info.url;\n  }\n  addAlphaFilter(map) {\n    let value = this.#cache.get(map);\n    if (value) {\n      return value;\n    }\n    const [tableA] = this.#createTables([map]);\n    const key = `alpha_${tableA}`;\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(map, value);\n      return value;\n    }\n    const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(map, url);\n    this.#cache.set(key, url);\n    const filter = this.#createFilter(id);\n    this.#addTransferMapAlphaConversion(tableA, filter);\n    return url;\n  }\n  addLuminosityFilter(map) {\n    let value = this.#cache.get(map || \"luminosity\");\n    if (value) {\n      return value;\n    }\n    let tableA, key;\n    if (map) {\n      [tableA] = this.#createTables([map]);\n      key = `luminosity_${tableA}`;\n    } else {\n      key = \"luminosity\";\n    }\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(map, value);\n      return value;\n    }\n    const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(map, url);\n    this.#cache.set(key, url);\n    const filter = this.#createFilter(id);\n    this.#addLuminosityConversion(filter);\n    if (map) {\n      this.#addTransferMapAlphaConversion(tableA, filter);\n    }\n    return url;\n  }\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n    const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n    let info = this.#hcmCache.get(filterName);\n    if (info?.key === key) {\n      return info.url;\n    }\n    if (info) {\n      info.filter?.remove();\n      info.key = key;\n      info.url = \"none\";\n      info.filter = null;\n    } else {\n      info = {\n        key,\n        url: \"none\",\n        filter: null\n      };\n      this.#hcmCache.set(filterName, info);\n    }\n    if (!fgColor || !bgColor) {\n      return info.url;\n    }\n    const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n    let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n    let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n    let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n    if (bgGray < fgGray) {\n      [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n    }\n    this.#defs.style.color = \"\";\n    const getSteps = (fg, bg, n) => {\n      const arr = new Array(256);\n      const step = (bgGray - fgGray) / n;\n      const newStart = fg / 255;\n      const newStep = (bg - fg) / (255 * n);\n      let prev = 0;\n      for (let i = 0; i <= n; i++) {\n        const k = Math.round(fgGray + i * step);\n        const value = newStart + i * newStep;\n        for (let j = prev; j <= k; j++) {\n          arr[j] = value;\n        }\n        prev = k + 1;\n      }\n      for (let i = prev; i < 256; i++) {\n        arr[i] = arr[prev - 1];\n      }\n      return arr.join(\",\");\n    };\n    const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n    const filter = info.filter = this.#createFilter(id);\n    this.#addGrayConversion(filter);\n    this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n    info.url = this.#createUrl(id);\n    return info.url;\n  }\n  destroy(keepHCM = false) {\n    if (keepHCM && this.#hcmCache.size !== 0) {\n      return;\n    }\n    if (this.#_defs) {\n      this.#_defs.parentNode.parentNode.remove();\n      this.#_defs = null;\n    }\n    if (this.#_cache) {\n      this.#_cache.clear();\n      this.#_cache = null;\n    }\n    this.#id = 0;\n  }\n  #addLuminosityConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n    filter.append(feColorMatrix);\n  }\n  #addGrayConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n    filter.append(feColorMatrix);\n  }\n  #createFilter(id) {\n    const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n    filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n    filter.setAttribute(\"id\", id);\n    this.#defs.append(filter);\n    return filter;\n  }\n  #appendFeFunc(feComponentTransfer, func, table) {\n    const feFunc = this.#document.createElementNS(SVG_NS, func);\n    feFunc.setAttribute(\"type\", \"discrete\");\n    feFunc.setAttribute(\"tableValues\", table);\n    feComponentTransfer.append(feFunc);\n  }\n  #addTransferMapConversion(rTable, gTable, bTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n  }\n  #addTransferMapAlphaConversion(aTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n  }\n  #getRGB(color) {\n    this.#defs.style.color = color;\n    return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n  }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n  constructor({\n    ownerDocument = globalThis.document,\n    enableHWA = false\n  }) {\n    super({\n      enableHWA\n    });\n    this._document = ownerDocument;\n  }\n  _createCanvas(width, height) {\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n  }\n}\nasync function fetchData(url, type = \"text\") {\n  if (isValidFetchUrl(url, document.baseURI)) {\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error(response.statusText);\n    }\n    switch (type) {\n      case \"arraybuffer\":\n        return response.arrayBuffer();\n      case \"blob\":\n        return response.blob();\n      case \"json\":\n        return response.json();\n    }\n    return response.text();\n  }\n  return new Promise((resolve, reject) => {\n    const request = new XMLHttpRequest();\n    request.open(\"GET\", url, true);\n    request.responseType = type;\n    request.onreadystatechange = () => {\n      if (request.readyState !== XMLHttpRequest.DONE) {\n        return;\n      }\n      if (request.status === 200 || request.status === 0) {\n        switch (type) {\n          case \"arraybuffer\":\n          case \"blob\":\n          case \"json\":\n            resolve(request.response);\n            return;\n        }\n        resolve(request.responseText);\n        return;\n      }\n      reject(new Error(request.statusText));\n    };\n    request.send(null);\n  });\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n  _fetchData(url, compressionType) {\n    return fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\").then(data => ({\n      cMapData: data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data),\n      compressionType\n    }));\n  }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n  _fetchData(url) {\n    return fetchData(url, \"arraybuffer\").then(data => new Uint8Array(data));\n  }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n  _createSVG(type) {\n    return document.createElementNS(SVG_NS, type);\n  }\n}\nclass PageViewport {\n  constructor({\n    viewBox,\n    scale,\n    rotation,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false\n  }) {\n    this.viewBox = viewBox;\n    this.scale = scale;\n    this.rotation = rotation;\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n    const centerX = (viewBox[2] + viewBox[0]) / 2;\n    const centerY = (viewBox[3] + viewBox[1]) / 2;\n    let rotateA, rotateB, rotateC, rotateD;\n    rotation %= 360;\n    if (rotation < 0) {\n      rotation += 360;\n    }\n    switch (rotation) {\n      case 180:\n        rotateA = -1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = 1;\n        break;\n      case 90:\n        rotateA = 0;\n        rotateB = 1;\n        rotateC = 1;\n        rotateD = 0;\n        break;\n      case 270:\n        rotateA = 0;\n        rotateB = -1;\n        rotateC = -1;\n        rotateD = 0;\n        break;\n      case 0:\n        rotateA = 1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = -1;\n        break;\n      default:\n        throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n    }\n    if (dontFlip) {\n      rotateC = -rotateC;\n      rotateD = -rotateD;\n    }\n    let offsetCanvasX, offsetCanvasY;\n    let width, height;\n    if (rotateA === 0) {\n      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n      width = (viewBox[3] - viewBox[1]) * scale;\n      height = (viewBox[2] - viewBox[0]) * scale;\n    } else {\n      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n      width = (viewBox[2] - viewBox[0]) * scale;\n      height = (viewBox[3] - viewBox[1]) * scale;\n    }\n    this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n    this.width = width;\n    this.height = height;\n  }\n  get rawDims() {\n    const {\n      viewBox\n    } = this;\n    return shadow(this, \"rawDims\", {\n      pageWidth: viewBox[2] - viewBox[0],\n      pageHeight: viewBox[3] - viewBox[1],\n      pageX: viewBox[0],\n      pageY: viewBox[1]\n    });\n  }\n  clone({\n    scale = this.scale,\n    rotation = this.rotation,\n    offsetX = this.offsetX,\n    offsetY = this.offsetY,\n    dontFlip = false\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.viewBox.slice(),\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip\n    });\n  }\n  convertToViewportPoint(x, y) {\n    return Util.applyTransform([x, y], this.transform);\n  }\n  convertToViewportRectangle(rect) {\n    const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n    const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n  }\n  convertToPdfPoint(x, y) {\n    return Util.applyInverseTransform([x, y], this.transform);\n  }\n}\nclass RenderingCancelledException extends BaseException {\n  constructor(msg, extraDelay = 0) {\n    super(msg, \"RenderingCancelledException\");\n    this.extraDelay = extraDelay;\n  }\n}\nfunction isDataScheme(url) {\n  const ii = url.length;\n  let i = 0;\n  while (i < ii && url[i].trim() === \"\") {\n    i++;\n  }\n  return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n  return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n  [url] = url.split(/[#?]/, 1);\n  return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n  if (typeof url !== \"string\") {\n    return defaultFilename;\n  }\n  if (isDataScheme(url)) {\n    warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n    return defaultFilename;\n  }\n  const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n  const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n  const splitURI = reURI.exec(url);\n  let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n  if (suggestedFilename) {\n    suggestedFilename = suggestedFilename[0];\n    if (suggestedFilename.includes(\"%\")) {\n      try {\n        suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n      } catch {}\n    }\n  }\n  return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n  started = Object.create(null);\n  times = [];\n  time(name) {\n    if (name in this.started) {\n      warn(`Timer is already running for ${name}`);\n    }\n    this.started[name] = Date.now();\n  }\n  timeEnd(name) {\n    if (!(name in this.started)) {\n      warn(`Timer has not been started for ${name}`);\n    }\n    this.times.push({\n      name,\n      start: this.started[name],\n      end: Date.now()\n    });\n    delete this.started[name];\n  }\n  toString() {\n    const outBuf = [];\n    let longest = 0;\n    for (const {\n      name\n    } of this.times) {\n      longest = Math.max(name.length, longest);\n    }\n    for (const {\n      name,\n      start,\n      end\n    } of this.times) {\n      outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n    }\n    return outBuf.join(\"\");\n  }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n  try {\n    const {\n      protocol\n    } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    return protocol === \"http:\" || protocol === \"https:\";\n  } catch {\n    return false;\n  }\n}\nfunction noContextMenu(e) {\n  e.preventDefault();\n}\nfunction deprecated(details) {\n  console.log(\"Deprecated API usage: \" + details);\n}\nlet pdfDateStringRegex;\nclass PDFDateString {\n  static toDateObject(input) {\n    if (!input || typeof input !== \"string\") {\n      return null;\n    }\n    pdfDateStringRegex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n    const matches = pdfDateStringRegex.exec(input);\n    if (!matches) {\n      return null;\n    }\n    const year = parseInt(matches[1], 10);\n    let month = parseInt(matches[2], 10);\n    month = month >= 1 && month <= 12 ? month - 1 : 0;\n    let day = parseInt(matches[3], 10);\n    day = day >= 1 && day <= 31 ? day : 1;\n    let hour = parseInt(matches[4], 10);\n    hour = hour >= 0 && hour <= 23 ? hour : 0;\n    let minute = parseInt(matches[5], 10);\n    minute = minute >= 0 && minute <= 59 ? minute : 0;\n    let second = parseInt(matches[6], 10);\n    second = second >= 0 && second <= 59 ? second : 0;\n    const universalTimeRelation = matches[7] || \"Z\";\n    let offsetHour = parseInt(matches[8], 10);\n    offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n    let offsetMinute = parseInt(matches[9], 10) || 0;\n    offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n    if (universalTimeRelation === \"-\") {\n      hour += offsetHour;\n      minute += offsetMinute;\n    } else if (universalTimeRelation === \"+\") {\n      hour -= offsetHour;\n      minute -= offsetMinute;\n    }\n    return new Date(Date.UTC(year, month, day, hour, minute, second));\n  }\n}\nfunction getXfaPageViewport(xfaPage, {\n  scale = 1,\n  rotation = 0\n}) {\n  const {\n    width,\n    height\n  } = xfaPage.attributes.style;\n  const viewBox = [0, 0, parseInt(width), parseInt(height)];\n  return new PageViewport({\n    viewBox,\n    scale,\n    rotation\n  });\n}\nfunction getRGB(color) {\n  if (color.startsWith(\"#\")) {\n    const colorRGB = parseInt(color.slice(1), 16);\n    return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n  }\n  if (color.startsWith(\"rgb(\")) {\n    return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n  }\n  if (color.startsWith(\"rgba(\")) {\n    return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n  }\n  warn(`Not a valid color format: \"${color}\"`);\n  return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n  const span = document.createElement(\"span\");\n  span.style.visibility = \"hidden\";\n  document.body.append(span);\n  for (const name of colors.keys()) {\n    span.style.color = name;\n    const computedColor = window.getComputedStyle(span).color;\n    colors.set(name, getRGB(computedColor));\n  }\n  span.remove();\n}\nfunction getCurrentTransform(ctx) {\n  const {\n    a,\n    b,\n    c,\n    d,\n    e,\n    f\n  } = ctx.getTransform();\n  return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n  const {\n    a,\n    b,\n    c,\n    d,\n    e,\n    f\n  } = ctx.getTransform().invertSelf();\n  return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n  if (viewport instanceof PageViewport) {\n    const {\n      pageWidth,\n      pageHeight\n    } = viewport.rawDims;\n    const {\n      style\n    } = div;\n    const useRound = util_FeatureTest.isCSSRoundSupported;\n    const w = `var(--scale-factor) * ${pageWidth}px`,\n      h = `var(--scale-factor) * ${pageHeight}px`;\n    const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x, 1px))` : `calc(${w})`,\n      heightStr = useRound ? `round(down, ${h}, var(--scale-round-y, 1px))` : `calc(${h})`;\n    if (!mustFlip || viewport.rotation % 180 === 0) {\n      style.width = widthStr;\n      style.height = heightStr;\n    } else {\n      style.width = heightStr;\n      style.height = widthStr;\n    }\n  }\n  if (mustRotate) {\n    div.setAttribute(\"data-main-rotation\", viewport.rotation);\n  }\n}\nclass OutputScale {\n  constructor() {\n    const pixelRatio = window.devicePixelRatio || 1;\n    this.sx = pixelRatio;\n    this.sy = pixelRatio;\n  }\n  get scaled() {\n    return this.sx !== 1 || this.sy !== 1;\n  }\n  get symmetric() {\n    return this.sx === this.sy;\n  }\n}\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n  #toolbar = null;\n  #colorPicker = null;\n  #editor;\n  #buttons = null;\n  #altText = null;\n  static #l10nRemove = null;\n  constructor(editor) {\n    this.#editor = editor;\n    EditorToolbar.#l10nRemove ||= Object.freeze({\n      freetext: \"pdfjs-editor-remove-freetext-button\",\n      highlight: \"pdfjs-editor-remove-highlight-button\",\n      ink: \"pdfjs-editor-remove-ink-button\",\n      stamp: \"pdfjs-editor-remove-stamp-button\"\n    });\n  }\n  render() {\n    const editToolbar = this.#toolbar = document.createElement(\"div\");\n    editToolbar.classList.add(\"editToolbar\", \"hidden\");\n    editToolbar.setAttribute(\"role\", \"toolbar\");\n    const signal = this.#editor._uiManager._signal;\n    editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n      signal\n    });\n    const buttons = this.#buttons = document.createElement(\"div\");\n    buttons.className = \"buttons\";\n    editToolbar.append(buttons);\n    const position = this.#editor.toolbarPosition;\n    if (position) {\n      const {\n        style\n      } = editToolbar;\n      const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n      style.insetInlineEnd = `${100 * x}%`;\n      style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n    }\n    this.#addDeleteButton();\n    return editToolbar;\n  }\n  get div() {\n    return this.#toolbar;\n  }\n  static #pointerDown(e) {\n    e.stopPropagation();\n  }\n  #focusIn(e) {\n    this.#editor._focusEventsAllowed = false;\n    e.preventDefault();\n    e.stopPropagation();\n  }\n  #focusOut(e) {\n    this.#editor._focusEventsAllowed = true;\n    e.preventDefault();\n    e.stopPropagation();\n  }\n  #addListenersToElement(element) {\n    const signal = this.#editor._uiManager._signal;\n    element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n      capture: true,\n      signal\n    });\n    element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n      capture: true,\n      signal\n    });\n    element.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n  }\n  hide() {\n    this.#toolbar.classList.add(\"hidden\");\n    this.#colorPicker?.hideDropdown();\n  }\n  show() {\n    this.#toolbar.classList.remove(\"hidden\");\n    this.#altText?.shown();\n  }\n  #addDeleteButton() {\n    const {\n      editorType,\n      _uiManager\n    } = this.#editor;\n    const button = document.createElement(\"button\");\n    button.className = \"delete\";\n    button.tabIndex = 0;\n    button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n    this.#addListenersToElement(button);\n    button.addEventListener(\"click\", e => {\n      _uiManager.delete();\n    }, {\n      signal: _uiManager._signal\n    });\n    this.#buttons.append(button);\n  }\n  get #divider() {\n    const divider = document.createElement(\"div\");\n    divider.className = \"divider\";\n    return divider;\n  }\n  async addAltText(altText) {\n    const button = await altText.render();\n    this.#addListenersToElement(button);\n    this.#buttons.prepend(button, this.#divider);\n    this.#altText = altText;\n  }\n  addColorPicker(colorPicker) {\n    this.#colorPicker = colorPicker;\n    const button = colorPicker.renderButton();\n    this.#addListenersToElement(button);\n    this.#buttons.prepend(button, this.#divider);\n  }\n  remove() {\n    this.#toolbar.remove();\n    this.#colorPicker?.destroy();\n    this.#colorPicker = null;\n  }\n}\nclass HighlightToolbar {\n  #buttons = null;\n  #toolbar = null;\n  #uiManager;\n  constructor(uiManager) {\n    this.#uiManager = uiManager;\n  }\n  #render() {\n    const editToolbar = this.#toolbar = document.createElement(\"div\");\n    editToolbar.className = \"editToolbar\";\n    editToolbar.setAttribute(\"role\", \"toolbar\");\n    editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n      signal: this.#uiManager._signal\n    });\n    const buttons = this.#buttons = document.createElement(\"div\");\n    buttons.className = \"buttons\";\n    editToolbar.append(buttons);\n    this.#addHighlightButton();\n    return editToolbar;\n  }\n  #getLastPoint(boxes, isLTR) {\n    let lastY = 0;\n    let lastX = 0;\n    for (const box of boxes) {\n      const y = box.y + box.height;\n      if (y < lastY) {\n        continue;\n      }\n      const x = box.x + (isLTR ? box.width : 0);\n      if (y > lastY) {\n        lastX = x;\n        lastY = y;\n        continue;\n      }\n      if (isLTR) {\n        if (x > lastX) {\n          lastX = x;\n        }\n      } else if (x < lastX) {\n        lastX = x;\n      }\n    }\n    return [isLTR ? 1 - lastX : lastX, lastY];\n  }\n  show(parent, boxes, isLTR) {\n    const [x, y] = this.#getLastPoint(boxes, isLTR);\n    const {\n      style\n    } = this.#toolbar ||= this.#render();\n    parent.append(this.#toolbar);\n    style.insetInlineEnd = `${100 * x}%`;\n    style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n  }\n  hide() {\n    this.#toolbar.remove();\n  }\n  #addHighlightButton() {\n    const button = document.createElement(\"button\");\n    button.className = \"highlightButton\";\n    button.tabIndex = 0;\n    button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n    const span = document.createElement(\"span\");\n    button.append(span);\n    span.className = \"visuallyHidden\";\n    span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n    const signal = this.#uiManager._signal;\n    button.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    button.addEventListener(\"click\", () => {\n      this.#uiManager.highlightSelection(\"floating_button\");\n    }, {\n      signal\n    });\n    this.#buttons.append(button);\n  }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n  for (const name of names) {\n    element.addEventListener(name, obj[name].bind(obj));\n  }\n}\nfunction opacityToHex(opacity) {\n  return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\nclass IdManager {\n  #id = 0;\n  get id() {\n    return `${AnnotationEditorPrefix}${this.#id++}`;\n  }\n}\nclass ImageManager {\n  #baseId = getUuid();\n  #id = 0;\n  #cache = null;\n  static get _isSVGFittingCanvas() {\n    const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n    const canvas = new OffscreenCanvas(1, 3);\n    const ctx = canvas.getContext(\"2d\", {\n      willReadFrequently: true\n    });\n    const image = new Image();\n    image.src = svg;\n    const promise = image.decode().then(() => {\n      ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n      return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n    });\n    return shadow(this, \"_isSVGFittingCanvas\", promise);\n  }\n  async #get(key, rawData) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(key);\n    if (data === null) {\n      return null;\n    }\n    if (data?.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    try {\n      data ||= {\n        bitmap: null,\n        id: `image_${this.#baseId}_${this.#id++}`,\n        refCounter: 0,\n        isSvg: false\n      };\n      let image;\n      if (typeof rawData === \"string\") {\n        data.url = rawData;\n        image = await fetchData(rawData, \"blob\");\n      } else if (rawData instanceof File) {\n        image = data.file = rawData;\n      } else if (rawData instanceof Blob) {\n        image = rawData;\n      }\n      if (image.type === \"image/svg+xml\") {\n        const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n        const fileReader = new FileReader();\n        const imageElement = new Image();\n        const imagePromise = new Promise((resolve, reject) => {\n          imageElement.onload = () => {\n            data.bitmap = imageElement;\n            data.isSvg = true;\n            resolve();\n          };\n          fileReader.onload = async () => {\n            const url = data.svgUrl = fileReader.result;\n            imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n          };\n          imageElement.onerror = fileReader.onerror = reject;\n        });\n        fileReader.readAsDataURL(image);\n        await imagePromise;\n      } else {\n        data.bitmap = await createImageBitmap(image);\n      }\n      data.refCounter = 1;\n    } catch (e) {\n      console.error(e);\n      data = null;\n    }\n    this.#cache.set(key, data);\n    if (data) {\n      this.#cache.set(data.id, data);\n    }\n    return data;\n  }\n  async getFromFile(file) {\n    const {\n      lastModified,\n      name,\n      size,\n      type\n    } = file;\n    return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n  }\n  async getFromUrl(url) {\n    return this.#get(url, url);\n  }\n  async getFromBlob(id, blobPromise) {\n    const blob = await blobPromise;\n    return this.#get(id, blob);\n  }\n  async getFromId(id) {\n    this.#cache ||= new Map();\n    const data = this.#cache.get(id);\n    if (!data) {\n      return null;\n    }\n    if (data.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    if (data.file) {\n      return this.getFromFile(data.file);\n    }\n    if (data.blobPromise) {\n      const {\n        blobPromise\n      } = data;\n      delete data.blobPromise;\n      return this.getFromBlob(data.id, blobPromise);\n    }\n    return this.getFromUrl(data.url);\n  }\n  getFromCanvas(id, canvas) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(id);\n    if (data?.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n    const ctx = offscreen.getContext(\"2d\");\n    ctx.drawImage(canvas, 0, 0);\n    data = {\n      bitmap: offscreen.transferToImageBitmap(),\n      id: `image_${this.#baseId}_${this.#id++}`,\n      refCounter: 1,\n      isSvg: false\n    };\n    this.#cache.set(id, data);\n    this.#cache.set(data.id, data);\n    return data;\n  }\n  getSvgUrl(id) {\n    const data = this.#cache.get(id);\n    if (!data?.isSvg) {\n      return null;\n    }\n    return data.svgUrl;\n  }\n  deleteId(id) {\n    this.#cache ||= new Map();\n    const data = this.#cache.get(id);\n    if (!data) {\n      return;\n    }\n    data.refCounter -= 1;\n    if (data.refCounter !== 0) {\n      return;\n    }\n    const {\n      bitmap\n    } = data;\n    if (!data.url && !data.file) {\n      const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n      const ctx = canvas.getContext(\"bitmaprenderer\");\n      ctx.transferFromImageBitmap(bitmap);\n      data.blobPromise = canvas.convertToBlob();\n    }\n    bitmap.close?.();\n    data.bitmap = null;\n  }\n  isValidId(id) {\n    return id.startsWith(`image_${this.#baseId}_`);\n  }\n}\nclass CommandManager {\n  #commands = [];\n  #locked = false;\n  #maxSize;\n  #position = -1;\n  constructor(maxSize = 128) {\n    this.#maxSize = maxSize;\n  }\n  add({\n    cmd,\n    undo,\n    post,\n    mustExec,\n    type = NaN,\n    overwriteIfSameType = false,\n    keepUndo = false\n  }) {\n    if (mustExec) {\n      cmd();\n    }\n    if (this.#locked) {\n      return;\n    }\n    const save = {\n      cmd,\n      undo,\n      post,\n      type\n    };\n    if (this.#position === -1) {\n      if (this.#commands.length > 0) {\n        this.#commands.length = 0;\n      }\n      this.#position = 0;\n      this.#commands.push(save);\n      return;\n    }\n    if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n      if (keepUndo) {\n        save.undo = this.#commands[this.#position].undo;\n      }\n      this.#commands[this.#position] = save;\n      return;\n    }\n    const next = this.#position + 1;\n    if (next === this.#maxSize) {\n      this.#commands.splice(0, 1);\n    } else {\n      this.#position = next;\n      if (next < this.#commands.length) {\n        this.#commands.splice(next);\n      }\n    }\n    this.#commands.push(save);\n  }\n  undo() {\n    if (this.#position === -1) {\n      return;\n    }\n    this.#locked = true;\n    const {\n      undo,\n      post\n    } = this.#commands[this.#position];\n    undo();\n    post?.();\n    this.#locked = false;\n    this.#position -= 1;\n  }\n  redo() {\n    if (this.#position < this.#commands.length - 1) {\n      this.#position += 1;\n      this.#locked = true;\n      const {\n        cmd,\n        post\n      } = this.#commands[this.#position];\n      cmd();\n      post?.();\n      this.#locked = false;\n    }\n  }\n  hasSomethingToUndo() {\n    return this.#position !== -1;\n  }\n  hasSomethingToRedo() {\n    return this.#position < this.#commands.length - 1;\n  }\n  destroy() {\n    this.#commands = null;\n  }\n}\nclass KeyboardManager {\n  constructor(callbacks) {\n    this.buffer = [];\n    this.callbacks = new Map();\n    this.allKeys = new Set();\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    for (const [keys, callback, options = {}] of callbacks) {\n      for (const key of keys) {\n        const isMacKey = key.startsWith(\"mac+\");\n        if (isMac && isMacKey) {\n          this.callbacks.set(key.slice(4), {\n            callback,\n            options\n          });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        } else if (!isMac && !isMacKey) {\n          this.callbacks.set(key, {\n            callback,\n            options\n          });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        }\n      }\n    }\n  }\n  #serialize(event) {\n    if (event.altKey) {\n      this.buffer.push(\"alt\");\n    }\n    if (event.ctrlKey) {\n      this.buffer.push(\"ctrl\");\n    }\n    if (event.metaKey) {\n      this.buffer.push(\"meta\");\n    }\n    if (event.shiftKey) {\n      this.buffer.push(\"shift\");\n    }\n    this.buffer.push(event.key);\n    const str = this.buffer.join(\"+\");\n    this.buffer.length = 0;\n    return str;\n  }\n  exec(self, event) {\n    if (!this.allKeys.has(event.key)) {\n      return;\n    }\n    const info = this.callbacks.get(this.#serialize(event));\n    if (!info) {\n      return;\n    }\n    const {\n      callback,\n      options: {\n        bubbles = false,\n        args = [],\n        checker = null\n      }\n    } = info;\n    if (checker && !checker(self, event)) {\n      return;\n    }\n    callback.bind(self, ...args, event)();\n    if (!bubbles) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  }\n}\nclass ColorManager {\n  static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n  get _colors() {\n    const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n    getColorValues(colors);\n    return shadow(this, \"_colors\", colors);\n  }\n  convert(color) {\n    const rgb = getRGB(color);\n    if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n      return rgb;\n    }\n    for (const [name, RGB] of this._colors) {\n      if (RGB.every((x, i) => x === rgb[i])) {\n        return ColorManager._colorsMapping.get(name);\n      }\n    }\n    return rgb;\n  }\n  getHexCode(name) {\n    const rgb = this._colors.get(name);\n    if (!rgb) {\n      return name;\n    }\n    return Util.makeHexColor(...rgb);\n  }\n}\nclass AnnotationEditorUIManager {\n  #abortController = new AbortController();\n  #activeEditor = null;\n  #allEditors = new Map();\n  #allLayers = new Map();\n  #altTextManager = null;\n  #annotationStorage = null;\n  #changedExistingAnnotations = null;\n  #commandManager = new CommandManager();\n  #copyPasteAC = null;\n  #currentPageIndex = 0;\n  #deletedAnnotationsElementIds = new Set();\n  #draggingEditors = null;\n  #editorTypes = null;\n  #editorsToRescale = new Set();\n  #enableHighlightFloatingButton = false;\n  #enableUpdatedAddImage = false;\n  #enableNewAltTextWhenAddingImage = false;\n  #filterFactory = null;\n  #focusMainContainerTimeoutId = null;\n  #focusManagerAC = null;\n  #highlightColors = null;\n  #highlightWhenShiftUp = false;\n  #highlightToolbar = null;\n  #idManager = new IdManager();\n  #isEnabled = false;\n  #isWaiting = false;\n  #keyboardManagerAC = null;\n  #lastActiveElement = null;\n  #mainHighlightColorPicker = null;\n  #mlManager = null;\n  #mode = AnnotationEditorType.NONE;\n  #selectedEditors = new Set();\n  #selectedTextNode = null;\n  #pageColors = null;\n  #showAllStates = null;\n  #previousStates = {\n    isEditing: false,\n    isEmpty: true,\n    hasSomethingToUndo: false,\n    hasSomethingToRedo: false,\n    hasSelectedEditor: false,\n    hasSelectedText: false\n  };\n  #translation = [0, 0];\n  #translationTimeoutId = null;\n  #container = null;\n  #viewer = null;\n  #updateModeCapability = null;\n  static TRANSLATE_SMALL = 1;\n  static TRANSLATE_BIG = 10;\n  static get _keyboardManager() {\n    const proto = AnnotationEditorUIManager.prototype;\n    const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n    const textInputChecker = (_self, {\n      target: el\n    }) => {\n      if (el instanceof HTMLInputElement) {\n        const {\n          type\n        } = el;\n        return type !== \"text\" && type !== \"number\";\n      }\n      return true;\n    };\n    const small = this.TRANSLATE_SMALL;\n    const big = this.TRANSLATE_BIG;\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n      checker: textInputChecker\n    }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n      checker: textInputChecker\n    }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n      checker: textInputChecker\n    }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n      checker: textInputChecker\n    }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n      checker: (self, {\n        target: el\n      }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n    }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n      checker: (self, {\n        target: el\n      }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n    }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n      args: [-small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n      args: [-big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n      args: [small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n      args: [big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n      args: [0, -small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n      args: [0, -big],\n      checker: arrowChecker\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n      args: [0, small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n      args: [0, big],\n      checker: arrowChecker\n    }]]));\n  }\n  constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager) {\n    const signal = this._signal = this.#abortController.signal;\n    this.#container = container;\n    this.#viewer = viewer;\n    this.#altTextManager = altTextManager;\n    this._eventBus = eventBus;\n    eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n      signal\n    });\n    eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n      signal\n    });\n    eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n      signal\n    });\n    eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n      signal\n    });\n    eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n      signal\n    });\n    eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n      signal\n    });\n    this.#addSelectionListener();\n    this.#addDragAndDropListeners();\n    this.#addKeyboardManager();\n    this.#annotationStorage = pdfDocument.annotationStorage;\n    this.#filterFactory = pdfDocument.filterFactory;\n    this.#pageColors = pageColors;\n    this.#highlightColors = highlightColors || null;\n    this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n    this.#enableUpdatedAddImage = enableUpdatedAddImage;\n    this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n    this.#mlManager = mlManager || null;\n    this.viewParameters = {\n      realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n      rotation: 0\n    };\n    this.isShiftKeyDown = false;\n  }\n  destroy() {\n    this.#updateModeCapability?.resolve();\n    this.#updateModeCapability = null;\n    this.#abortController?.abort();\n    this.#abortController = null;\n    this._signal = null;\n    for (const layer of this.#allLayers.values()) {\n      layer.destroy();\n    }\n    this.#allLayers.clear();\n    this.#allEditors.clear();\n    this.#editorsToRescale.clear();\n    this.#activeEditor = null;\n    this.#selectedEditors.clear();\n    this.#commandManager.destroy();\n    this.#altTextManager?.destroy();\n    this.#highlightToolbar?.hide();\n    this.#highlightToolbar = null;\n    if (this.#focusMainContainerTimeoutId) {\n      clearTimeout(this.#focusMainContainerTimeoutId);\n      this.#focusMainContainerTimeoutId = null;\n    }\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n      this.#translationTimeoutId = null;\n    }\n  }\n  combinedSignal(ac) {\n    return AbortSignal.any([this._signal, ac.signal]);\n  }\n  get mlManager() {\n    return this.#mlManager;\n  }\n  get useNewAltTextFlow() {\n    return this.#enableUpdatedAddImage;\n  }\n  get useNewAltTextWhenAddingImage() {\n    return this.#enableNewAltTextWhenAddingImage;\n  }\n  get hcmFilter() {\n    return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n  }\n  get direction() {\n    return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n  }\n  get highlightColors() {\n    return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n  }\n  get highlightColorNames() {\n    return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n  }\n  setMainHighlightColorPicker(colorPicker) {\n    this.#mainHighlightColorPicker = colorPicker;\n  }\n  editAltText(editor, firstTime = false) {\n    this.#altTextManager?.editAltText(this, editor, firstTime);\n  }\n  switchToMode(mode, callback) {\n    this._eventBus.on(\"annotationeditormodechanged\", callback, {\n      once: true,\n      signal: this._signal\n    });\n    this._eventBus.dispatch(\"showannotationeditorui\", {\n      source: this,\n      mode\n    });\n  }\n  setPreference(name, value) {\n    this._eventBus.dispatch(\"setpreference\", {\n      source: this,\n      name,\n      value\n    });\n  }\n  onSetPreference({\n    name,\n    value\n  }) {\n    switch (name) {\n      case \"enableNewAltTextWhenAddingImage\":\n        this.#enableNewAltTextWhenAddingImage = value;\n        break;\n    }\n  }\n  onPageChanging({\n    pageNumber\n  }) {\n    this.#currentPageIndex = pageNumber - 1;\n  }\n  focusMainContainer() {\n    this.#container.focus();\n  }\n  findParent(x, y) {\n    for (const layer of this.#allLayers.values()) {\n      const {\n        x: layerX,\n        y: layerY,\n        width,\n        height\n      } = layer.div.getBoundingClientRect();\n      if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n        return layer;\n      }\n    }\n    return null;\n  }\n  disableUserSelect(value = false) {\n    this.#viewer.classList.toggle(\"noUserSelect\", value);\n  }\n  addShouldRescale(editor) {\n    this.#editorsToRescale.add(editor);\n  }\n  removeShouldRescale(editor) {\n    this.#editorsToRescale.delete(editor);\n  }\n  onScaleChanging({\n    scale\n  }) {\n    this.commitOrRemove();\n    this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n    for (const editor of this.#editorsToRescale) {\n      editor.onScaleChanging();\n    }\n  }\n  onRotationChanging({\n    pagesRotation\n  }) {\n    this.commitOrRemove();\n    this.viewParameters.rotation = pagesRotation;\n  }\n  #getAnchorElementForSelection({\n    anchorNode\n  }) {\n    return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n  }\n  #getLayerForTextLayer(textLayer) {\n    const {\n      currentLayer\n    } = this;\n    if (currentLayer.hasTextLayer(textLayer)) {\n      return currentLayer;\n    }\n    for (const layer of this.#allLayers.values()) {\n      if (layer.hasTextLayer(textLayer)) {\n        return layer;\n      }\n    }\n    return null;\n  }\n  highlightSelection(methodOfCreation = \"\") {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      return;\n    }\n    const {\n      anchorNode,\n      anchorOffset,\n      focusNode,\n      focusOffset\n    } = selection;\n    const text = selection.toString();\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    const boxes = this.getSelectionBoxes(textLayer);\n    if (!boxes) {\n      return;\n    }\n    selection.empty();\n    const layer = this.#getLayerForTextLayer(textLayer);\n    const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n    const callback = () => {\n      layer?.createAndAddNewEditor({\n        x: 0,\n        y: 0\n      }, false, {\n        methodOfCreation,\n        boxes,\n        anchorNode,\n        anchorOffset,\n        focusNode,\n        focusOffset,\n        text\n      });\n      if (isNoneMode) {\n        this.showAllEditors(\"highlight\", true, true);\n      }\n    };\n    if (isNoneMode) {\n      this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n      return;\n    }\n    callback();\n  }\n  #displayHighlightToolbar() {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      return;\n    }\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    const boxes = this.getSelectionBoxes(textLayer);\n    if (!boxes) {\n      return;\n    }\n    this.#highlightToolbar ||= new HighlightToolbar(this);\n    this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n  }\n  addToAnnotationStorage(editor) {\n    if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n      this.#annotationStorage.setValue(editor.id, editor);\n    }\n  }\n  #selectionChange() {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      if (this.#selectedTextNode) {\n        this.#highlightToolbar?.hide();\n        this.#selectedTextNode = null;\n        this.#dispatchUpdateStates({\n          hasSelectedText: false\n        });\n      }\n      return;\n    }\n    const {\n      anchorNode\n    } = selection;\n    if (anchorNode === this.#selectedTextNode) {\n      return;\n    }\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    if (!textLayer) {\n      if (this.#selectedTextNode) {\n        this.#highlightToolbar?.hide();\n        this.#selectedTextNode = null;\n        this.#dispatchUpdateStates({\n          hasSelectedText: false\n        });\n      }\n      return;\n    }\n    this.#highlightToolbar?.hide();\n    this.#selectedTextNode = anchorNode;\n    this.#dispatchUpdateStates({\n      hasSelectedText: true\n    });\n    if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n      return;\n    }\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n      this.showAllEditors(\"highlight\", true, true);\n    }\n    this.#highlightWhenShiftUp = this.isShiftKeyDown;\n    if (!this.isShiftKeyDown) {\n      const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n      activeLayer?.toggleDrawing();\n      const ac = new AbortController();\n      const signal = this.combinedSignal(ac);\n      const pointerup = e => {\n        if (e.type === \"pointerup\" && e.button !== 0) {\n          return;\n        }\n        ac.abort();\n        activeLayer?.toggleDrawing(true);\n        if (e.type === \"pointerup\") {\n          this.#onSelectEnd(\"main_toolbar\");\n        }\n      };\n      window.addEventListener(\"pointerup\", pointerup, {\n        signal\n      });\n      window.addEventListener(\"blur\", pointerup, {\n        signal\n      });\n    }\n  }\n  #onSelectEnd(methodOfCreation = \"\") {\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n      this.highlightSelection(methodOfCreation);\n    } else if (this.#enableHighlightFloatingButton) {\n      this.#displayHighlightToolbar();\n    }\n  }\n  #addSelectionListener() {\n    document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n      signal: this._signal\n    });\n  }\n  #addFocusManager() {\n    if (this.#focusManagerAC) {\n      return;\n    }\n    this.#focusManagerAC = new AbortController();\n    const signal = this.combinedSignal(this.#focusManagerAC);\n    window.addEventListener(\"focus\", this.focus.bind(this), {\n      signal\n    });\n    window.addEventListener(\"blur\", this.blur.bind(this), {\n      signal\n    });\n  }\n  #removeFocusManager() {\n    this.#focusManagerAC?.abort();\n    this.#focusManagerAC = null;\n  }\n  blur() {\n    this.isShiftKeyDown = false;\n    if (this.#highlightWhenShiftUp) {\n      this.#highlightWhenShiftUp = false;\n      this.#onSelectEnd(\"main_toolbar\");\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n    const {\n      activeElement\n    } = document;\n    for (const editor of this.#selectedEditors) {\n      if (editor.div.contains(activeElement)) {\n        this.#lastActiveElement = [editor, activeElement];\n        editor._focusEventsAllowed = false;\n        break;\n      }\n    }\n  }\n  focus() {\n    if (!this.#lastActiveElement) {\n      return;\n    }\n    const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n    this.#lastActiveElement = null;\n    lastActiveElement.addEventListener(\"focusin\", () => {\n      lastEditor._focusEventsAllowed = true;\n    }, {\n      once: true,\n      signal: this._signal\n    });\n    lastActiveElement.focus();\n  }\n  #addKeyboardManager() {\n    if (this.#keyboardManagerAC) {\n      return;\n    }\n    this.#keyboardManagerAC = new AbortController();\n    const signal = this.combinedSignal(this.#keyboardManagerAC);\n    window.addEventListener(\"keydown\", this.keydown.bind(this), {\n      signal\n    });\n    window.addEventListener(\"keyup\", this.keyup.bind(this), {\n      signal\n    });\n  }\n  #removeKeyboardManager() {\n    this.#keyboardManagerAC?.abort();\n    this.#keyboardManagerAC = null;\n  }\n  #addCopyPasteListeners() {\n    if (this.#copyPasteAC) {\n      return;\n    }\n    this.#copyPasteAC = new AbortController();\n    const signal = this.combinedSignal(this.#copyPasteAC);\n    document.addEventListener(\"copy\", this.copy.bind(this), {\n      signal\n    });\n    document.addEventListener(\"cut\", this.cut.bind(this), {\n      signal\n    });\n    document.addEventListener(\"paste\", this.paste.bind(this), {\n      signal\n    });\n  }\n  #removeCopyPasteListeners() {\n    this.#copyPasteAC?.abort();\n    this.#copyPasteAC = null;\n  }\n  #addDragAndDropListeners() {\n    const signal = this._signal;\n    document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n      signal\n    });\n    document.addEventListener(\"drop\", this.drop.bind(this), {\n      signal\n    });\n  }\n  addEditListeners() {\n    this.#addKeyboardManager();\n    this.#addCopyPasteListeners();\n  }\n  removeEditListeners() {\n    this.#removeKeyboardManager();\n    this.#removeCopyPasteListeners();\n  }\n  dragOver(event) {\n    for (const {\n      type\n    } of event.dataTransfer.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(type)) {\n          event.dataTransfer.dropEffect = \"copy\";\n          event.preventDefault();\n          return;\n        }\n      }\n    }\n  }\n  drop(event) {\n    for (const item of event.dataTransfer.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(item.type)) {\n          editorType.paste(item, this.currentLayer);\n          event.preventDefault();\n          return;\n        }\n      }\n    }\n  }\n  copy(event) {\n    event.preventDefault();\n    this.#activeEditor?.commitOrRemove();\n    if (!this.hasSelection) {\n      return;\n    }\n    const editors = [];\n    for (const editor of this.#selectedEditors) {\n      const serialized = editor.serialize(true);\n      if (serialized) {\n        editors.push(serialized);\n      }\n    }\n    if (editors.length === 0) {\n      return;\n    }\n    event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n  }\n  cut(event) {\n    this.copy(event);\n    this.delete();\n  }\n  async paste(event) {\n    event.preventDefault();\n    const {\n      clipboardData\n    } = event;\n    for (const item of clipboardData.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(item.type)) {\n          editorType.paste(item, this.currentLayer);\n          return;\n        }\n      }\n    }\n    let data = clipboardData.getData(\"application/pdfjs\");\n    if (!data) {\n      return;\n    }\n    try {\n      data = JSON.parse(data);\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n      return;\n    }\n    if (!Array.isArray(data)) {\n      return;\n    }\n    this.unselectAll();\n    const layer = this.currentLayer;\n    try {\n      const newEditors = [];\n      for (const editor of data) {\n        const deserializedEditor = await layer.deserialize(editor);\n        if (!deserializedEditor) {\n          return;\n        }\n        newEditors.push(deserializedEditor);\n      }\n      const cmd = () => {\n        for (const editor of newEditors) {\n          this.#addEditorToLayer(editor);\n        }\n        this.#selectEditors(newEditors);\n      };\n      const undo = () => {\n        for (const editor of newEditors) {\n          editor.remove();\n        }\n      };\n      this.addCommands({\n        cmd,\n        undo,\n        mustExec: true\n      });\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n    }\n  }\n  keydown(event) {\n    if (!this.isShiftKeyDown && event.key === \"Shift\") {\n      this.isShiftKeyDown = true;\n    }\n    if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n      AnnotationEditorUIManager._keyboardManager.exec(this, event);\n    }\n  }\n  keyup(event) {\n    if (this.isShiftKeyDown && event.key === \"Shift\") {\n      this.isShiftKeyDown = false;\n      if (this.#highlightWhenShiftUp) {\n        this.#highlightWhenShiftUp = false;\n        this.#onSelectEnd(\"main_toolbar\");\n      }\n    }\n  }\n  onEditingAction({\n    name\n  }) {\n    switch (name) {\n      case \"undo\":\n      case \"redo\":\n      case \"delete\":\n      case \"selectAll\":\n        this[name]();\n        break;\n      case \"highlightSelection\":\n        this.highlightSelection(\"context_menu\");\n        break;\n    }\n  }\n  #dispatchUpdateStates(details) {\n    const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n    if (hasChanged) {\n      this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n        source: this,\n        details: Object.assign(this.#previousStates, details)\n      });\n      if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n        this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n      }\n    }\n  }\n  #dispatchUpdateUI(details) {\n    this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n      source: this,\n      details\n    });\n  }\n  setEditingState(isEditing) {\n    if (isEditing) {\n      this.#addFocusManager();\n      this.#addCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: this.#mode !== AnnotationEditorType.NONE,\n        isEmpty: this.#isEmpty(),\n        hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n        hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n        hasSelectedEditor: false\n      });\n    } else {\n      this.#removeFocusManager();\n      this.#removeCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: false\n      });\n      this.disableUserSelect(false);\n    }\n  }\n  registerEditorTypes(types) {\n    if (this.#editorTypes) {\n      return;\n    }\n    this.#editorTypes = types;\n    for (const editorType of this.#editorTypes) {\n      this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n    }\n  }\n  getId() {\n    return this.#idManager.id;\n  }\n  get currentLayer() {\n    return this.#allLayers.get(this.#currentPageIndex);\n  }\n  getLayer(pageIndex) {\n    return this.#allLayers.get(pageIndex);\n  }\n  get currentPageIndex() {\n    return this.#currentPageIndex;\n  }\n  addLayer(layer) {\n    this.#allLayers.set(layer.pageIndex, layer);\n    if (this.#isEnabled) {\n      layer.enable();\n    } else {\n      layer.disable();\n    }\n  }\n  removeLayer(layer) {\n    this.#allLayers.delete(layer.pageIndex);\n  }\n  async updateMode(mode, editId = null, isFromKeyboard = false) {\n    if (this.#mode === mode) {\n      return;\n    }\n    if (this.#updateModeCapability) {\n      await this.#updateModeCapability.promise;\n      if (!this.#updateModeCapability) {\n        return;\n      }\n    }\n    this.#updateModeCapability = Promise.withResolvers();\n    this.#mode = mode;\n    if (mode === AnnotationEditorType.NONE) {\n      this.setEditingState(false);\n      this.#disableAll();\n      this.#updateModeCapability.resolve();\n      return;\n    }\n    this.setEditingState(true);\n    await this.#enableAll();\n    this.unselectAll();\n    for (const layer of this.#allLayers.values()) {\n      layer.updateMode(mode);\n    }\n    if (!editId) {\n      if (isFromKeyboard) {\n        this.addNewEditorFromKeyboard();\n      }\n      this.#updateModeCapability.resolve();\n      return;\n    }\n    for (const editor of this.#allEditors.values()) {\n      if (editor.annotationElementId === editId) {\n        this.setSelected(editor);\n        editor.enterInEditMode();\n      } else {\n        editor.unselect();\n      }\n    }\n    this.#updateModeCapability.resolve();\n  }\n  addNewEditorFromKeyboard() {\n    if (this.currentLayer.canCreateNewEmptyEditor()) {\n      this.currentLayer.addNewEditor();\n    }\n  }\n  updateToolbar(mode) {\n    if (mode === this.#mode) {\n      return;\n    }\n    this._eventBus.dispatch(\"switchannotationeditormode\", {\n      source: this,\n      mode\n    });\n  }\n  updateParams(type, value) {\n    if (!this.#editorTypes) {\n      return;\n    }\n    switch (type) {\n      case AnnotationEditorParamsType.CREATE:\n        this.currentLayer.addNewEditor();\n        return;\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n        this.#mainHighlightColorPicker?.updateColor(value);\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n        this._eventBus.dispatch(\"reporttelemetry\", {\n          source: this,\n          details: {\n            type: \"editing\",\n            data: {\n              type: \"highlight\",\n              action: \"toggle_visibility\"\n            }\n          }\n        });\n        (this.#showAllStates ||= new Map()).set(type, value);\n        this.showAllEditors(\"highlight\", value);\n        break;\n    }\n    for (const editor of this.#selectedEditors) {\n      editor.updateParams(type, value);\n    }\n    for (const editorType of this.#editorTypes) {\n      editorType.updateDefaultParams(type, value);\n    }\n  }\n  showAllEditors(type, visible, updateButton = false) {\n    for (const editor of this.#allEditors.values()) {\n      if (editor.editorType === type) {\n        editor.show(visible);\n      }\n    }\n    const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n    if (state !== visible) {\n      this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n    }\n  }\n  enableWaiting(mustWait = false) {\n    if (this.#isWaiting === mustWait) {\n      return;\n    }\n    this.#isWaiting = mustWait;\n    for (const layer of this.#allLayers.values()) {\n      if (mustWait) {\n        layer.disableClick();\n      } else {\n        layer.enableClick();\n      }\n      layer.div.classList.toggle(\"waiting\", mustWait);\n    }\n  }\n  async #enableAll() {\n    if (!this.#isEnabled) {\n      this.#isEnabled = true;\n      const promises = [];\n      for (const layer of this.#allLayers.values()) {\n        promises.push(layer.enable());\n      }\n      await Promise.all(promises);\n      for (const editor of this.#allEditors.values()) {\n        editor.enable();\n      }\n    }\n  }\n  #disableAll() {\n    this.unselectAll();\n    if (this.#isEnabled) {\n      this.#isEnabled = false;\n      for (const layer of this.#allLayers.values()) {\n        layer.disable();\n      }\n      for (const editor of this.#allEditors.values()) {\n        editor.disable();\n      }\n    }\n  }\n  getEditors(pageIndex) {\n    const editors = [];\n    for (const editor of this.#allEditors.values()) {\n      if (editor.pageIndex === pageIndex) {\n        editors.push(editor);\n      }\n    }\n    return editors;\n  }\n  getEditor(id) {\n    return this.#allEditors.get(id);\n  }\n  addEditor(editor) {\n    this.#allEditors.set(editor.id, editor);\n  }\n  removeEditor(editor) {\n    if (editor.div.contains(document.activeElement)) {\n      if (this.#focusMainContainerTimeoutId) {\n        clearTimeout(this.#focusMainContainerTimeoutId);\n      }\n      this.#focusMainContainerTimeoutId = setTimeout(() => {\n        this.focusMainContainer();\n        this.#focusMainContainerTimeoutId = null;\n      }, 0);\n    }\n    this.#allEditors.delete(editor.id);\n    this.unselect(editor);\n    if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n      this.#annotationStorage?.remove(editor.id);\n    }\n  }\n  addDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n    this.addChangedExistingAnnotation(editor);\n    editor.deleted = true;\n  }\n  isDeletedAnnotationElement(annotationElementId) {\n    return this.#deletedAnnotationsElementIds.has(annotationElementId);\n  }\n  removeDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n    this.removeChangedExistingAnnotation(editor);\n    editor.deleted = false;\n  }\n  #addEditorToLayer(editor) {\n    const layer = this.#allLayers.get(editor.pageIndex);\n    if (layer) {\n      layer.addOrRebuild(editor);\n    } else {\n      this.addEditor(editor);\n      this.addToAnnotationStorage(editor);\n    }\n  }\n  setActiveEditor(editor) {\n    if (this.#activeEditor === editor) {\n      return;\n    }\n    this.#activeEditor = editor;\n    if (editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n  get #lastSelectedEditor() {\n    let ed = null;\n    for (ed of this.#selectedEditors) {}\n    return ed;\n  }\n  updateUI(editor) {\n    if (this.#lastSelectedEditor === editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n  toggleSelected(editor) {\n    if (this.#selectedEditors.has(editor)) {\n      this.#selectedEditors.delete(editor);\n      editor.unselect();\n      this.#dispatchUpdateStates({\n        hasSelectedEditor: this.hasSelection\n      });\n      return;\n    }\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true\n    });\n  }\n  setSelected(editor) {\n    for (const ed of this.#selectedEditors) {\n      if (ed !== editor) {\n        ed.unselect();\n      }\n    }\n    this.#selectedEditors.clear();\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true\n    });\n  }\n  isSelected(editor) {\n    return this.#selectedEditors.has(editor);\n  }\n  get firstSelectedEditor() {\n    return this.#selectedEditors.values().next().value;\n  }\n  unselect(editor) {\n    editor.unselect();\n    this.#selectedEditors.delete(editor);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: this.hasSelection\n    });\n  }\n  get hasSelection() {\n    return this.#selectedEditors.size !== 0;\n  }\n  get isEnterHandled() {\n    return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n  }\n  undo() {\n    this.#commandManager.undo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n      hasSomethingToRedo: true,\n      isEmpty: this.#isEmpty()\n    });\n  }\n  redo() {\n    this.#commandManager.redo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: true,\n      hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n      isEmpty: this.#isEmpty()\n    });\n  }\n  addCommands(params) {\n    this.#commandManager.add(params);\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: true,\n      hasSomethingToRedo: false,\n      isEmpty: this.#isEmpty()\n    });\n  }\n  #isEmpty() {\n    if (this.#allEditors.size === 0) {\n      return true;\n    }\n    if (this.#allEditors.size === 1) {\n      for (const editor of this.#allEditors.values()) {\n        return editor.isEmpty();\n      }\n    }\n    return false;\n  }\n  delete() {\n    this.commitOrRemove();\n    if (!this.hasSelection) {\n      return;\n    }\n    const editors = [...this.#selectedEditors];\n    const cmd = () => {\n      for (const editor of editors) {\n        editor.remove();\n      }\n    };\n    const undo = () => {\n      for (const editor of editors) {\n        this.#addEditorToLayer(editor);\n      }\n    };\n    this.addCommands({\n      cmd,\n      undo,\n      mustExec: true\n    });\n  }\n  commitOrRemove() {\n    this.#activeEditor?.commitOrRemove();\n  }\n  hasSomethingToControl() {\n    return this.#activeEditor || this.hasSelection;\n  }\n  #selectEditors(editors) {\n    for (const editor of this.#selectedEditors) {\n      editor.unselect();\n    }\n    this.#selectedEditors.clear();\n    for (const editor of editors) {\n      if (editor.isEmpty()) {\n        continue;\n      }\n      this.#selectedEditors.add(editor);\n      editor.select();\n    }\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: this.hasSelection\n    });\n  }\n  selectAll() {\n    for (const editor of this.#selectedEditors) {\n      editor.commit();\n    }\n    this.#selectEditors(this.#allEditors.values());\n  }\n  unselectAll() {\n    if (this.#activeEditor) {\n      this.#activeEditor.commitOrRemove();\n      if (this.#mode !== AnnotationEditorType.NONE) {\n        return;\n      }\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n    for (const editor of this.#selectedEditors) {\n      editor.unselect();\n    }\n    this.#selectedEditors.clear();\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: false\n    });\n  }\n  translateSelectedEditors(x, y, noCommit = false) {\n    if (!noCommit) {\n      this.commitOrRemove();\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n    this.#translation[0] += x;\n    this.#translation[1] += y;\n    const [totalX, totalY] = this.#translation;\n    const editors = [...this.#selectedEditors];\n    const TIME_TO_WAIT = 1000;\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n    }\n    this.#translationTimeoutId = setTimeout(() => {\n      this.#translationTimeoutId = null;\n      this.#translation[0] = this.#translation[1] = 0;\n      this.addCommands({\n        cmd: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(totalX, totalY);\n            }\n          }\n        },\n        undo: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(-totalX, -totalY);\n            }\n          }\n        },\n        mustExec: false\n      });\n    }, TIME_TO_WAIT);\n    for (const editor of editors) {\n      editor.translateInPage(x, y);\n    }\n  }\n  setUpDragSession() {\n    if (!this.hasSelection) {\n      return;\n    }\n    this.disableUserSelect(true);\n    this.#draggingEditors = new Map();\n    for (const editor of this.#selectedEditors) {\n      this.#draggingEditors.set(editor, {\n        savedX: editor.x,\n        savedY: editor.y,\n        savedPageIndex: editor.pageIndex,\n        newX: 0,\n        newY: 0,\n        newPageIndex: -1\n      });\n    }\n  }\n  endDragSession() {\n    if (!this.#draggingEditors) {\n      return false;\n    }\n    this.disableUserSelect(false);\n    const map = this.#draggingEditors;\n    this.#draggingEditors = null;\n    let mustBeAddedInUndoStack = false;\n    for (const [{\n      x,\n      y,\n      pageIndex\n    }, value] of map) {\n      value.newX = x;\n      value.newY = y;\n      value.newPageIndex = pageIndex;\n      mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n    }\n    if (!mustBeAddedInUndoStack) {\n      return false;\n    }\n    const move = (editor, x, y, pageIndex) => {\n      if (this.#allEditors.has(editor.id)) {\n        const parent = this.#allLayers.get(pageIndex);\n        if (parent) {\n          editor._setParentAndPosition(parent, x, y);\n        } else {\n          editor.pageIndex = pageIndex;\n          editor.x = x;\n          editor.y = y;\n        }\n      }\n    };\n    this.addCommands({\n      cmd: () => {\n        for (const [editor, {\n          newX,\n          newY,\n          newPageIndex\n        }] of map) {\n          move(editor, newX, newY, newPageIndex);\n        }\n      },\n      undo: () => {\n        for (const [editor, {\n          savedX,\n          savedY,\n          savedPageIndex\n        }] of map) {\n          move(editor, savedX, savedY, savedPageIndex);\n        }\n      },\n      mustExec: true\n    });\n    return true;\n  }\n  dragSelectedEditors(tx, ty) {\n    if (!this.#draggingEditors) {\n      return;\n    }\n    for (const editor of this.#draggingEditors.keys()) {\n      editor.drag(tx, ty);\n    }\n  }\n  rebuild(editor) {\n    if (editor.parent === null) {\n      const parent = this.getLayer(editor.pageIndex);\n      if (parent) {\n        parent.changeParent(editor);\n        parent.addOrRebuild(editor);\n      } else {\n        this.addEditor(editor);\n        this.addToAnnotationStorage(editor);\n        editor.rebuild();\n      }\n    } else {\n      editor.parent.addOrRebuild(editor);\n    }\n  }\n  get isEditorHandlingKeyboard() {\n    return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n  }\n  isActive(editor) {\n    return this.#activeEditor === editor;\n  }\n  getActive() {\n    return this.#activeEditor;\n  }\n  getMode() {\n    return this.#mode;\n  }\n  get imageManager() {\n    return shadow(this, \"imageManager\", new ImageManager());\n  }\n  getSelectionBoxes(textLayer) {\n    if (!textLayer) {\n      return null;\n    }\n    const selection = document.getSelection();\n    for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n      if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n        return null;\n      }\n    }\n    const {\n      x: layerX,\n      y: layerY,\n      width: parentWidth,\n      height: parentHeight\n    } = textLayer.getBoundingClientRect();\n    let rotator;\n    switch (textLayer.getAttribute(\"data-main-rotation\")) {\n      case \"90\":\n        rotator = (x, y, w, h) => ({\n          x: (y - layerY) / parentHeight,\n          y: 1 - (x + w - layerX) / parentWidth,\n          width: h / parentHeight,\n          height: w / parentWidth\n        });\n        break;\n      case \"180\":\n        rotator = (x, y, w, h) => ({\n          x: 1 - (x + w - layerX) / parentWidth,\n          y: 1 - (y + h - layerY) / parentHeight,\n          width: w / parentWidth,\n          height: h / parentHeight\n        });\n        break;\n      case \"270\":\n        rotator = (x, y, w, h) => ({\n          x: 1 - (y + h - layerY) / parentHeight,\n          y: (x - layerX) / parentWidth,\n          width: h / parentHeight,\n          height: w / parentWidth\n        });\n        break;\n      default:\n        rotator = (x, y, w, h) => ({\n          x: (x - layerX) / parentWidth,\n          y: (y - layerY) / parentHeight,\n          width: w / parentWidth,\n          height: h / parentHeight\n        });\n        break;\n    }\n    const boxes = [];\n    for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n      const range = selection.getRangeAt(i);\n      if (range.collapsed) {\n        continue;\n      }\n      for (const {\n        x,\n        y,\n        width,\n        height\n      } of range.getClientRects()) {\n        if (width === 0 || height === 0) {\n          continue;\n        }\n        boxes.push(rotator(x, y, width, height));\n      }\n    }\n    return boxes.length === 0 ? null : boxes;\n  }\n  addChangedExistingAnnotation({\n    annotationElementId,\n    id\n  }) {\n    (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n  }\n  removeChangedExistingAnnotation({\n    annotationElementId\n  }) {\n    this.#changedExistingAnnotations?.delete(annotationElementId);\n  }\n  renderAnnotationElement(annotation) {\n    const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n    if (!editorId) {\n      return;\n    }\n    const editor = this.#annotationStorage.getRawValue(editorId);\n    if (!editor) {\n      return;\n    }\n    if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n      return;\n    }\n    editor.renderAnnotationElement(annotation);\n  }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n  #altText = null;\n  #altTextDecorative = false;\n  #altTextButton = null;\n  #altTextTooltip = null;\n  #altTextTooltipTimeout = null;\n  #altTextWasFromKeyBoard = false;\n  #badge = null;\n  #editor = null;\n  #guessedText = null;\n  #textWithDisclaimer = null;\n  #useNewAltTextFlow = false;\n  static #l10nNewButton = null;\n  static _l10nPromise = null;\n  constructor(editor) {\n    this.#editor = editor;\n    this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n    AltText.#l10nNewButton ||= Object.freeze({\n      added: \"pdfjs-editor-new-alt-text-added-button-label\",\n      missing: \"pdfjs-editor-new-alt-text-missing-button-label\",\n      review: \"pdfjs-editor-new-alt-text-to-review-button-label\"\n    });\n  }\n  static initialize(l10nPromise) {\n    AltText._l10nPromise ||= l10nPromise;\n  }\n  async render() {\n    const altText = this.#altTextButton = document.createElement(\"button\");\n    altText.className = \"altText\";\n    let msg;\n    if (this.#useNewAltTextFlow) {\n      altText.classList.add(\"new\");\n      msg = await AltText._l10nPromise.get(AltText.#l10nNewButton.missing);\n    } else {\n      msg = await AltText._l10nPromise.get(\"pdfjs-editor-alt-text-button-label\");\n    }\n    altText.textContent = msg;\n    altText.setAttribute(\"aria-label\", msg);\n    altText.tabIndex = \"0\";\n    const signal = this.#editor._uiManager._signal;\n    altText.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n      signal\n    });\n    const onClick = event => {\n      event.preventDefault();\n      this.#editor._uiManager.editAltText(this.#editor);\n      if (this.#useNewAltTextFlow) {\n        this.#editor._reportTelemetry({\n          action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n          data: {\n            label: this.#label\n          }\n        });\n      }\n    };\n    altText.addEventListener(\"click\", onClick, {\n      capture: true,\n      signal\n    });\n    altText.addEventListener(\"keydown\", event => {\n      if (event.target === altText && event.key === \"Enter\") {\n        this.#altTextWasFromKeyBoard = true;\n        onClick(event);\n      }\n    }, {\n      signal\n    });\n    await this.#setState();\n    return altText;\n  }\n  get #label() {\n    return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n  }\n  finish() {\n    if (!this.#altTextButton) {\n      return;\n    }\n    this.#altTextButton.focus({\n      focusVisible: this.#altTextWasFromKeyBoard\n    });\n    this.#altTextWasFromKeyBoard = false;\n  }\n  isEmpty() {\n    if (this.#useNewAltTextFlow) {\n      return this.#altText === null;\n    }\n    return !this.#altText && !this.#altTextDecorative;\n  }\n  hasData() {\n    if (this.#useNewAltTextFlow) {\n      return this.#altText !== null || !!this.#guessedText;\n    }\n    return this.isEmpty();\n  }\n  get guessedText() {\n    return this.#guessedText;\n  }\n  async setGuessedText(guessedText) {\n    if (this.#altText !== null) {\n      return;\n    }\n    this.#guessedText = guessedText;\n    this.#textWithDisclaimer = await AltText._l10nPromise.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\")({\n      generatedAltText: guessedText\n    });\n    this.#setState();\n  }\n  toggleAltTextBadge(visibility = false) {\n    if (!this.#useNewAltTextFlow || this.#altText) {\n      this.#badge?.remove();\n      this.#badge = null;\n      return;\n    }\n    if (!this.#badge) {\n      const badge = this.#badge = document.createElement(\"div\");\n      badge.className = \"noAltTextBadge\";\n      this.#editor.div.append(badge);\n    }\n    this.#badge.classList.toggle(\"hidden\", !visibility);\n  }\n  serialize(isForCopying) {\n    let altText = this.#altText;\n    if (!isForCopying && this.#guessedText === altText) {\n      altText = this.#textWithDisclaimer;\n    }\n    return {\n      altText,\n      decorative: this.#altTextDecorative,\n      guessedText: this.#guessedText,\n      textWithDisclaimer: this.#textWithDisclaimer\n    };\n  }\n  get data() {\n    return {\n      altText: this.#altText,\n      decorative: this.#altTextDecorative\n    };\n  }\n  set data({\n    altText,\n    decorative,\n    guessedText,\n    textWithDisclaimer,\n    cancel = false\n  }) {\n    if (guessedText) {\n      this.#guessedText = guessedText;\n      this.#textWithDisclaimer = textWithDisclaimer;\n    }\n    if (this.#altText === altText && this.#altTextDecorative === decorative) {\n      return;\n    }\n    if (!cancel) {\n      this.#altText = altText;\n      this.#altTextDecorative = decorative;\n    }\n    this.#setState();\n  }\n  toggle(enabled = false) {\n    if (!this.#altTextButton) {\n      return;\n    }\n    if (!enabled && this.#altTextTooltipTimeout) {\n      clearTimeout(this.#altTextTooltipTimeout);\n      this.#altTextTooltipTimeout = null;\n    }\n    this.#altTextButton.disabled = !enabled;\n  }\n  shown() {\n    this.#editor._reportTelemetry({\n      action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n      data: {\n        label: this.#label\n      }\n    });\n  }\n  destroy() {\n    this.#altTextButton?.remove();\n    this.#altTextButton = null;\n    this.#altTextTooltip = null;\n    this.#badge?.remove();\n    this.#badge = null;\n  }\n  async #setState() {\n    const button = this.#altTextButton;\n    if (!button) {\n      return;\n    }\n    if (this.#useNewAltTextFlow) {\n      button.classList.toggle(\"done\", !!this.#altText);\n      AltText._l10nPromise.get(AltText.#l10nNewButton[this.#label]).then(msg => {\n        button.setAttribute(\"aria-label\", msg);\n        for (const child of button.childNodes) {\n          if (child.nodeType === Node.TEXT_NODE) {\n            child.textContent = msg;\n            break;\n          }\n        }\n      });\n      if (!this.#altText) {\n        this.#altTextTooltip?.remove();\n        return;\n      }\n    } else {\n      if (!this.#altText && !this.#altTextDecorative) {\n        button.classList.remove(\"done\");\n        this.#altTextTooltip?.remove();\n        return;\n      }\n      button.classList.add(\"done\");\n      AltText._l10nPromise.get(\"pdfjs-editor-alt-text-edit-button-label\").then(msg => {\n        button.setAttribute(\"aria-label\", msg);\n      });\n    }\n    let tooltip = this.#altTextTooltip;\n    if (!tooltip) {\n      this.#altTextTooltip = tooltip = document.createElement(\"span\");\n      tooltip.className = \"tooltip\";\n      tooltip.setAttribute(\"role\", \"tooltip\");\n      tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n      const DELAY_TO_SHOW_TOOLTIP = 100;\n      const signal = this.#editor._uiManager._signal;\n      signal.addEventListener(\"abort\", () => {\n        clearTimeout(this.#altTextTooltipTimeout);\n        this.#altTextTooltipTimeout = null;\n      }, {\n        once: true\n      });\n      button.addEventListener(\"mouseenter\", () => {\n        this.#altTextTooltipTimeout = setTimeout(() => {\n          this.#altTextTooltipTimeout = null;\n          this.#altTextTooltip.classList.add(\"show\");\n          this.#editor._reportTelemetry({\n            action: \"alt_text_tooltip\"\n          });\n        }, DELAY_TO_SHOW_TOOLTIP);\n      }, {\n        signal\n      });\n      button.addEventListener(\"mouseleave\", () => {\n        if (this.#altTextTooltipTimeout) {\n          clearTimeout(this.#altTextTooltipTimeout);\n          this.#altTextTooltipTimeout = null;\n        }\n        this.#altTextTooltip?.classList.remove(\"show\");\n      }, {\n        signal\n      });\n    }\n    tooltip.innerText = this.#altTextDecorative ? await AltText._l10nPromise.get(\"pdfjs-editor-alt-text-decorative-tooltip\") : this.#altText;\n    if (!tooltip.parentNode) {\n      button.append(tooltip);\n    }\n    const element = this.#editor.getImageForAltText();\n    element?.setAttribute(\"aria-describedby\", tooltip.id);\n  }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\nclass AnnotationEditor {\n  #accessibilityData = null;\n  #allResizerDivs = null;\n  #altText = null;\n  #disabled = false;\n  #keepAspectRatio = false;\n  #resizersDiv = null;\n  #savedDimensions = null;\n  #focusAC = null;\n  #focusedResizerName = \"\";\n  #hasBeenClicked = false;\n  #initialPosition = null;\n  #isEditing = false;\n  #isInEditMode = false;\n  #isResizerEnabledForKeyboard = false;\n  #moveInDOMTimeout = null;\n  #prevDragX = 0;\n  #prevDragY = 0;\n  #telemetryTimeouts = null;\n  _editToolbar = null;\n  _initialOptions = Object.create(null);\n  _initialData = null;\n  _isVisible = true;\n  _uiManager = null;\n  _focusEventsAllowed = true;\n  static _l10nPromise = null;\n  static _l10nResizer = null;\n  #isDraggable = false;\n  #zIndex = AnnotationEditor._zIndex++;\n  static _borderLineWidth = -1;\n  static _colorManager = new ColorManager();\n  static _zIndex = 1;\n  static _telemetryTimeout = 1000;\n  static get _resizerKeyboardManager() {\n    const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n    return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n      args: [-small, 0]\n    }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n      args: [-big, 0]\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n      args: [small, 0]\n    }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n      args: [big, 0]\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n      args: [0, -small]\n    }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n      args: [0, -big]\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n      args: [0, small]\n    }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n      args: [0, big]\n    }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n  }\n  constructor(parameters) {\n    this.parent = parameters.parent;\n    this.id = parameters.id;\n    this.width = this.height = null;\n    this.pageIndex = parameters.parent.pageIndex;\n    this.name = parameters.name;\n    this.div = null;\n    this._uiManager = parameters.uiManager;\n    this.annotationElementId = null;\n    this._willKeepAspectRatio = false;\n    this._initialOptions.isCentered = parameters.isCentered;\n    this._structTreeParentId = null;\n    const {\n      rotation,\n      rawDims: {\n        pageWidth,\n        pageHeight,\n        pageX,\n        pageY\n      }\n    } = this.parent.viewport;\n    this.rotation = rotation;\n    this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n    this.pageDimensions = [pageWidth, pageHeight];\n    this.pageTranslation = [pageX, pageY];\n    const [width, height] = this.parentDimensions;\n    this.x = parameters.x / width;\n    this.y = parameters.y / height;\n    this.isAttachedToDOM = false;\n    this.deleted = false;\n  }\n  get editorType() {\n    return Object.getPrototypeOf(this).constructor._type;\n  }\n  static get _defaultLineColor() {\n    return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n  }\n  static deleteAnnotationElement(editor) {\n    const fakeEditor = new FakeEditor({\n      id: editor.parent.getNextId(),\n      parent: editor.parent,\n      uiManager: editor._uiManager\n    });\n    fakeEditor.annotationElementId = editor.annotationElementId;\n    fakeEditor.deleted = true;\n    fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n  }\n  static initialize(l10n, _uiManager, options) {\n    AnnotationEditor._l10nResizer ||= Object.freeze({\n      topLeft: \"pdfjs-editor-resizer-top-left\",\n      topMiddle: \"pdfjs-editor-resizer-top-middle\",\n      topRight: \"pdfjs-editor-resizer-top-right\",\n      middleRight: \"pdfjs-editor-resizer-middle-right\",\n      bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n      bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n      bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n      middleLeft: \"pdfjs-editor-resizer-middle-left\"\n    });\n    AnnotationEditor._l10nPromise ||= new Map([...[\"pdfjs-editor-alt-text-button-label\", \"pdfjs-editor-alt-text-edit-button-label\", \"pdfjs-editor-alt-text-decorative-tooltip\", \"pdfjs-editor-new-alt-text-added-button-label\", \"pdfjs-editor-new-alt-text-missing-button-label\", \"pdfjs-editor-new-alt-text-to-review-button-label\"].map(str => [str, l10n.get(str)]), ...[\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\"].map(str => [str, l10n.get.bind(l10n, str)])]);\n    if (options?.strings) {\n      for (const str of options.strings) {\n        AnnotationEditor._l10nPromise.set(str, l10n.get(str));\n      }\n    }\n    if (AnnotationEditor._borderLineWidth !== -1) {\n      return;\n    }\n    const style = getComputedStyle(document.documentElement);\n    AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n  }\n  static updateDefaultParams(_type, _value) {}\n  static get defaultPropertiesToUpdate() {\n    return [];\n  }\n  static isHandlingMimeForPasting(mime) {\n    return false;\n  }\n  static paste(item, parent) {\n    unreachable(\"Not implemented\");\n  }\n  get propertiesToUpdate() {\n    return [];\n  }\n  get _isDraggable() {\n    return this.#isDraggable;\n  }\n  set _isDraggable(value) {\n    this.#isDraggable = value;\n    this.div?.classList.toggle(\"draggable\", value);\n  }\n  get isEnterHandled() {\n    return true;\n  }\n  center() {\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    switch (this.parentRotation) {\n      case 90:\n        this.x -= this.height * pageHeight / (pageWidth * 2);\n        this.y += this.width * pageWidth / (pageHeight * 2);\n        break;\n      case 180:\n        this.x += this.width / 2;\n        this.y += this.height / 2;\n        break;\n      case 270:\n        this.x += this.height * pageHeight / (pageWidth * 2);\n        this.y -= this.width * pageWidth / (pageHeight * 2);\n        break;\n      default:\n        this.x -= this.width / 2;\n        this.y -= this.height / 2;\n        break;\n    }\n    this.fixAndSetPosition();\n  }\n  addCommands(params) {\n    this._uiManager.addCommands(params);\n  }\n  get currentLayer() {\n    return this._uiManager.currentLayer;\n  }\n  setInBackground() {\n    this.div.style.zIndex = 0;\n  }\n  setInForeground() {\n    this.div.style.zIndex = this.#zIndex;\n  }\n  setParent(parent) {\n    if (parent !== null) {\n      this.pageIndex = parent.pageIndex;\n      this.pageDimensions = parent.pageDimensions;\n    } else {\n      this.#stopResizing();\n    }\n    this.parent = parent;\n  }\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    if (!this.#hasBeenClicked) {\n      this.parent.setSelected(this);\n    } else {\n      this.#hasBeenClicked = false;\n    }\n  }\n  focusout(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    if (!this.isAttachedToDOM) {\n      return;\n    }\n    const target = event.relatedTarget;\n    if (target?.closest(`#${this.id}`)) {\n      return;\n    }\n    event.preventDefault();\n    if (!this.parent?.isMultipleSelection) {\n      this.commitOrRemove();\n    }\n  }\n  commitOrRemove() {\n    if (this.isEmpty()) {\n      this.remove();\n    } else {\n      this.commit();\n    }\n  }\n  commit() {\n    this.addToAnnotationStorage();\n  }\n  addToAnnotationStorage() {\n    this._uiManager.addToAnnotationStorage(this);\n  }\n  setAt(x, y, tx, ty) {\n    const [width, height] = this.parentDimensions;\n    [tx, ty] = this.screenToPageTranslation(tx, ty);\n    this.x = (x + tx) / width;\n    this.y = (y + ty) / height;\n    this.fixAndSetPosition();\n  }\n  #translate([width, height], x, y) {\n    [x, y] = this.screenToPageTranslation(x, y);\n    this.x += x / width;\n    this.y += y / height;\n    this.fixAndSetPosition();\n  }\n  translate(x, y) {\n    this.#translate(this.parentDimensions, x, y);\n  }\n  translateInPage(x, y) {\n    this.#initialPosition ||= [this.x, this.y];\n    this.#translate(this.pageDimensions, x, y);\n    this.div.scrollIntoView({\n      block: \"nearest\"\n    });\n  }\n  drag(tx, ty) {\n    this.#initialPosition ||= [this.x, this.y];\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.x += tx / parentWidth;\n    this.y += ty / parentHeight;\n    if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n      const {\n        x,\n        y\n      } = this.div.getBoundingClientRect();\n      if (this.parent.findNewParent(this, x, y)) {\n        this.x -= Math.floor(this.x);\n        this.y -= Math.floor(this.y);\n      }\n    }\n    let {\n      x,\n      y\n    } = this;\n    const [bx, by] = this.getBaseTranslation();\n    x += bx;\n    y += by;\n    this.div.style.left = `${(100 * x).toFixed(2)}%`;\n    this.div.style.top = `${(100 * y).toFixed(2)}%`;\n    this.div.scrollIntoView({\n      block: \"nearest\"\n    });\n  }\n  get _hasBeenMoved() {\n    return !!this.#initialPosition && (this.#initialPosition[0] !== this.x || this.#initialPosition[1] !== this.y);\n  }\n  getBaseTranslation() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const {\n      _borderLineWidth\n    } = AnnotationEditor;\n    const x = _borderLineWidth / parentWidth;\n    const y = _borderLineWidth / parentHeight;\n    switch (this.rotation) {\n      case 90:\n        return [-x, y];\n      case 180:\n        return [x, y];\n      case 270:\n        return [x, -y];\n      default:\n        return [-x, -y];\n    }\n  }\n  get _mustFixPosition() {\n    return true;\n  }\n  fixAndSetPosition(rotation = this.rotation) {\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    let {\n      x,\n      y,\n      width,\n      height\n    } = this;\n    width *= pageWidth;\n    height *= pageHeight;\n    x *= pageWidth;\n    y *= pageHeight;\n    if (this._mustFixPosition) {\n      switch (rotation) {\n        case 0:\n          x = Math.max(0, Math.min(pageWidth - width, x));\n          y = Math.max(0, Math.min(pageHeight - height, y));\n          break;\n        case 90:\n          x = Math.max(0, Math.min(pageWidth - height, x));\n          y = Math.min(pageHeight, Math.max(width, y));\n          break;\n        case 180:\n          x = Math.min(pageWidth, Math.max(width, x));\n          y = Math.min(pageHeight, Math.max(height, y));\n          break;\n        case 270:\n          x = Math.min(pageWidth, Math.max(height, x));\n          y = Math.max(0, Math.min(pageHeight - width, y));\n          break;\n      }\n    }\n    this.x = x /= pageWidth;\n    this.y = y /= pageHeight;\n    const [bx, by] = this.getBaseTranslation();\n    x += bx;\n    y += by;\n    const {\n      style\n    } = this.div;\n    style.left = `${(100 * x).toFixed(2)}%`;\n    style.top = `${(100 * y).toFixed(2)}%`;\n    this.moveInDOM();\n  }\n  static #rotatePoint(x, y, angle) {\n    switch (angle) {\n      case 90:\n        return [y, -x];\n      case 180:\n        return [-x, -y];\n      case 270:\n        return [-y, x];\n      default:\n        return [x, y];\n    }\n  }\n  screenToPageTranslation(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n  }\n  pageTranslationToScreen(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n  }\n  #getRotationMatrix(rotation) {\n    switch (rotation) {\n      case 90:\n        {\n          const [pageWidth, pageHeight] = this.pageDimensions;\n          return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n        }\n      case 180:\n        return [-1, 0, 0, -1];\n      case 270:\n        {\n          const [pageWidth, pageHeight] = this.pageDimensions;\n          return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n        }\n      default:\n        return [1, 0, 0, 1];\n    }\n  }\n  get parentScale() {\n    return this._uiManager.viewParameters.realScale;\n  }\n  get parentRotation() {\n    return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n  }\n  get parentDimensions() {\n    const {\n      parentScale,\n      pageDimensions: [pageWidth, pageHeight]\n    } = this;\n    return [pageWidth * parentScale, pageHeight * parentScale];\n  }\n  setDims(width, height) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.div.style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n    if (!this.#keepAspectRatio) {\n      this.div.style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n    }\n  }\n  fixDims() {\n    const {\n      style\n    } = this.div;\n    const {\n      height,\n      width\n    } = style;\n    const widthPercent = width.endsWith(\"%\");\n    const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n    if (widthPercent && heightPercent) {\n      return;\n    }\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    if (!widthPercent) {\n      style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n    }\n    if (!this.#keepAspectRatio && !heightPercent) {\n      style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n    }\n  }\n  getInitialTranslation() {\n    return [0, 0];\n  }\n  #createResizers() {\n    if (this.#resizersDiv) {\n      return;\n    }\n    this.#resizersDiv = document.createElement(\"div\");\n    this.#resizersDiv.classList.add(\"resizers\");\n    const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n    const signal = this._uiManager._signal;\n    for (const name of classes) {\n      const div = document.createElement(\"div\");\n      this.#resizersDiv.append(div);\n      div.classList.add(\"resizer\", name);\n      div.setAttribute(\"data-resizer-name\", name);\n      div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n        signal\n      });\n      div.addEventListener(\"contextmenu\", noContextMenu, {\n        signal\n      });\n      div.tabIndex = -1;\n    }\n    this.div.prepend(this.#resizersDiv);\n  }\n  #resizerPointerdown(name, event) {\n    event.preventDefault();\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      return;\n    }\n    this.#altText?.toggle(false);\n    const savedDraggable = this._isDraggable;\n    this._isDraggable = false;\n    const ac = new AbortController();\n    const signal = this._uiManager.combinedSignal(ac);\n    this.parent.togglePointerEvents(false);\n    window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n      passive: true,\n      capture: true,\n      signal\n    });\n    window.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    const savedX = this.x;\n    const savedY = this.y;\n    const savedWidth = this.width;\n    const savedHeight = this.height;\n    const savedParentCursor = this.parent.div.style.cursor;\n    const savedCursor = this.div.style.cursor;\n    this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n    const pointerUpCallback = () => {\n      ac.abort();\n      this.parent.togglePointerEvents(true);\n      this.#altText?.toggle(true);\n      this._isDraggable = savedDraggable;\n      this.parent.div.style.cursor = savedParentCursor;\n      this.div.style.cursor = savedCursor;\n      this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"blur\", pointerUpCallback, {\n      signal\n    });\n  }\n  #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n    const newX = this.x;\n    const newY = this.y;\n    const newWidth = this.width;\n    const newHeight = this.height;\n    if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n      return;\n    }\n    this.addCommands({\n      cmd: () => {\n        this.width = newWidth;\n        this.height = newHeight;\n        this.x = newX;\n        this.y = newY;\n        const [parentWidth, parentHeight] = this.parentDimensions;\n        this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n        this.fixAndSetPosition();\n      },\n      undo: () => {\n        this.width = savedWidth;\n        this.height = savedHeight;\n        this.x = savedX;\n        this.y = savedY;\n        const [parentWidth, parentHeight] = this.parentDimensions;\n        this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n        this.fixAndSetPosition();\n      },\n      mustExec: true\n    });\n  }\n  #resizerPointermove(name, event) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const savedX = this.x;\n    const savedY = this.y;\n    const savedWidth = this.width;\n    const savedHeight = this.height;\n    const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n    const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n    const round = x => Math.round(x * 10000) / 10000;\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n    const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n    const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n    const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n    let getPoint;\n    let getOpposite;\n    let isDiagonal = false;\n    let isHorizontal = false;\n    switch (name) {\n      case \"topLeft\":\n        isDiagonal = true;\n        getPoint = (w, h) => [0, 0];\n        getOpposite = (w, h) => [w, h];\n        break;\n      case \"topMiddle\":\n        getPoint = (w, h) => [w / 2, 0];\n        getOpposite = (w, h) => [w / 2, h];\n        break;\n      case \"topRight\":\n        isDiagonal = true;\n        getPoint = (w, h) => [w, 0];\n        getOpposite = (w, h) => [0, h];\n        break;\n      case \"middleRight\":\n        isHorizontal = true;\n        getPoint = (w, h) => [w, h / 2];\n        getOpposite = (w, h) => [0, h / 2];\n        break;\n      case \"bottomRight\":\n        isDiagonal = true;\n        getPoint = (w, h) => [w, h];\n        getOpposite = (w, h) => [0, 0];\n        break;\n      case \"bottomMiddle\":\n        getPoint = (w, h) => [w / 2, h];\n        getOpposite = (w, h) => [w / 2, 0];\n        break;\n      case \"bottomLeft\":\n        isDiagonal = true;\n        getPoint = (w, h) => [0, h];\n        getOpposite = (w, h) => [w, 0];\n        break;\n      case \"middleLeft\":\n        isHorizontal = true;\n        getPoint = (w, h) => [0, h / 2];\n        getOpposite = (w, h) => [w, h / 2];\n        break;\n    }\n    const point = getPoint(savedWidth, savedHeight);\n    const oppositePoint = getOpposite(savedWidth, savedHeight);\n    let transfOppositePoint = transf(...oppositePoint);\n    const oppositeX = round(savedX + transfOppositePoint[0]);\n    const oppositeY = round(savedY + transfOppositePoint[1]);\n    let ratioX = 1;\n    let ratioY = 1;\n    let [deltaX, deltaY] = this.screenToPageTranslation(event.movementX, event.movementY);\n    [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n    if (isDiagonal) {\n      const oldDiag = Math.hypot(savedWidth, savedHeight);\n      ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n    } else if (isHorizontal) {\n      ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n    } else {\n      ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n    }\n    const newWidth = round(savedWidth * ratioX);\n    const newHeight = round(savedHeight * ratioY);\n    transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n    const newX = oppositeX - transfOppositePoint[0];\n    const newY = oppositeY - transfOppositePoint[1];\n    this.width = newWidth;\n    this.height = newHeight;\n    this.x = newX;\n    this.y = newY;\n    this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n    this.fixAndSetPosition();\n  }\n  altTextFinish() {\n    this.#altText?.finish();\n  }\n  async addEditToolbar() {\n    if (this._editToolbar || this.#isInEditMode) {\n      return this._editToolbar;\n    }\n    this._editToolbar = new EditorToolbar(this);\n    this.div.append(this._editToolbar.render());\n    if (this.#altText) {\n      await this._editToolbar.addAltText(this.#altText);\n    }\n    return this._editToolbar;\n  }\n  removeEditToolbar() {\n    if (!this._editToolbar) {\n      return;\n    }\n    this._editToolbar.remove();\n    this._editToolbar = null;\n    this.#altText?.destroy();\n  }\n  addContainer(container) {\n    const editToolbarDiv = this._editToolbar?.div;\n    if (editToolbarDiv) {\n      editToolbarDiv.before(container);\n    } else {\n      this.div.append(container);\n    }\n  }\n  getClientDimensions() {\n    return this.div.getBoundingClientRect();\n  }\n  async addAltTextButton() {\n    if (this.#altText) {\n      return;\n    }\n    AltText.initialize(AnnotationEditor._l10nPromise);\n    this.#altText = new AltText(this);\n    if (this.#accessibilityData) {\n      this.#altText.data = this.#accessibilityData;\n      this.#accessibilityData = null;\n    }\n    await this.addEditToolbar();\n  }\n  get altTextData() {\n    return this.#altText?.data;\n  }\n  set altTextData(data) {\n    if (!this.#altText) {\n      return;\n    }\n    this.#altText.data = data;\n  }\n  get guessedAltText() {\n    return this.#altText?.guessedText;\n  }\n  async setGuessedAltText(text) {\n    await this.#altText?.setGuessedText(text);\n  }\n  serializeAltText(isForCopying) {\n    return this.#altText?.serialize(isForCopying);\n  }\n  hasAltText() {\n    return !!this.#altText && !this.#altText.isEmpty();\n  }\n  hasAltTextData() {\n    return this.#altText?.hasData() ?? false;\n  }\n  render() {\n    this.div = document.createElement(\"div\");\n    this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n    this.div.className = this.name;\n    this.div.setAttribute(\"id\", this.id);\n    this.div.tabIndex = this.#disabled ? -1 : 0;\n    if (!this._isVisible) {\n      this.div.classList.add(\"hidden\");\n    }\n    this.setInForeground();\n    this.#addFocusListeners();\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    if (this.parentRotation % 180 !== 0) {\n      this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n      this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n    }\n    const [tx, ty] = this.getInitialTranslation();\n    this.translate(tx, ty);\n    bindEvents(this, this.div, [\"pointerdown\"]);\n    return this.div;\n  }\n  pointerdown(event) {\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      event.preventDefault();\n      return;\n    }\n    this.#hasBeenClicked = true;\n    if (this._isDraggable) {\n      this.#setUpDragSession(event);\n      return;\n    }\n    this.#selectOnPointerEvent(event);\n  }\n  #selectOnPointerEvent(event) {\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n      this.parent.toggleSelected(this);\n    } else {\n      this.parent.setSelected(this);\n    }\n  }\n  #setUpDragSession(event) {\n    const isSelected = this._uiManager.isSelected(this);\n    this._uiManager.setUpDragSession();\n    const ac = new AbortController();\n    const signal = this._uiManager.combinedSignal(ac);\n    if (isSelected) {\n      this.div.classList.add(\"moving\");\n      this.#prevDragX = event.clientX;\n      this.#prevDragY = event.clientY;\n      const pointerMoveCallback = e => {\n        const {\n          clientX: x,\n          clientY: y\n        } = e;\n        const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n        this.#prevDragX = x;\n        this.#prevDragY = y;\n        this._uiManager.dragSelectedEditors(tx, ty);\n      };\n      window.addEventListener(\"pointermove\", pointerMoveCallback, {\n        passive: true,\n        capture: true,\n        signal\n      });\n    }\n    const pointerUpCallback = () => {\n      ac.abort();\n      if (isSelected) {\n        this.div.classList.remove(\"moving\");\n      }\n      this.#hasBeenClicked = false;\n      if (!this._uiManager.endDragSession()) {\n        this.#selectOnPointerEvent(event);\n      }\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"blur\", pointerUpCallback, {\n      signal\n    });\n  }\n  moveInDOM() {\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n    }\n    this.#moveInDOMTimeout = setTimeout(() => {\n      this.#moveInDOMTimeout = null;\n      this.parent?.moveEditorInDOM(this);\n    }, 0);\n  }\n  _setParentAndPosition(parent, x, y) {\n    parent.changeParent(this);\n    this.x = x;\n    this.y = y;\n    this.fixAndSetPosition();\n  }\n  getRect(tx, ty, rotation = this.rotation) {\n    const scale = this.parentScale;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const [pageX, pageY] = this.pageTranslation;\n    const shiftX = tx / scale;\n    const shiftY = ty / scale;\n    const x = this.x * pageWidth;\n    const y = this.y * pageHeight;\n    const width = this.width * pageWidth;\n    const height = this.height * pageHeight;\n    switch (rotation) {\n      case 0:\n        return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n      case 90:\n        return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n      case 180:\n        return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n      case 270:\n        return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n  getRectInCurrentCoords(rect, pageHeight) {\n    const [x1, y1, x2, y2] = rect;\n    const width = x2 - x1;\n    const height = y2 - y1;\n    switch (this.rotation) {\n      case 0:\n        return [x1, pageHeight - y2, width, height];\n      case 90:\n        return [x1, pageHeight - y1, height, width];\n      case 180:\n        return [x2, pageHeight - y1, width, height];\n      case 270:\n        return [x2, pageHeight - y2, height, width];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n  onceAdded() {}\n  isEmpty() {\n    return false;\n  }\n  enableEditMode() {\n    this.#isInEditMode = true;\n  }\n  disableEditMode() {\n    this.#isInEditMode = false;\n  }\n  isInEditMode() {\n    return this.#isInEditMode;\n  }\n  shouldGetKeyboardEvents() {\n    return this.#isResizerEnabledForKeyboard;\n  }\n  needsToBeRebuilt() {\n    return this.div && !this.isAttachedToDOM;\n  }\n  #addFocusListeners() {\n    if (this.#focusAC || !this.div) {\n      return;\n    }\n    this.#focusAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#focusAC);\n    this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n      signal\n    });\n    this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n      signal\n    });\n  }\n  rebuild() {\n    this.#addFocusListeners();\n  }\n  rotate(_angle) {}\n  serializeDeleted() {\n    return {\n      id: this.annotationElementId,\n      deleted: true,\n      pageIndex: this.pageIndex,\n      popupRef: this._initialData?.popupRef || \"\"\n    };\n  }\n  serialize(isForCopying = false, context = null) {\n    unreachable(\"An editor must be serializable\");\n  }\n  static async deserialize(data, parent, uiManager) {\n    const editor = new this.prototype.constructor({\n      parent,\n      id: parent.getNextId(),\n      uiManager\n    });\n    editor.rotation = data.rotation;\n    editor.#accessibilityData = data.accessibilityData;\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n    editor.x = x / pageWidth;\n    editor.y = y / pageHeight;\n    editor.width = width / pageWidth;\n    editor.height = height / pageHeight;\n    return editor;\n  }\n  get hasBeenModified() {\n    return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n  }\n  remove() {\n    this.#focusAC?.abort();\n    this.#focusAC = null;\n    if (!this.isEmpty()) {\n      this.commit();\n    }\n    if (this.parent) {\n      this.parent.remove(this);\n    } else {\n      this._uiManager.removeEditor(this);\n    }\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n      this.#moveInDOMTimeout = null;\n    }\n    this.#stopResizing();\n    this.removeEditToolbar();\n    if (this.#telemetryTimeouts) {\n      for (const timeout of this.#telemetryTimeouts.values()) {\n        clearTimeout(timeout);\n      }\n      this.#telemetryTimeouts = null;\n    }\n    this.parent = null;\n  }\n  get isResizable() {\n    return false;\n  }\n  makeResizable() {\n    if (this.isResizable) {\n      this.#createResizers();\n      this.#resizersDiv.classList.remove(\"hidden\");\n      bindEvents(this, this.div, [\"keydown\"]);\n    }\n  }\n  get toolbarPosition() {\n    return null;\n  }\n  keydown(event) {\n    if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n      return;\n    }\n    this._uiManager.setSelected(this);\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height\n    };\n    const children = this.#resizersDiv.children;\n    if (!this.#allResizerDivs) {\n      this.#allResizerDivs = Array.from(children);\n      const boundResizerKeydown = this.#resizerKeydown.bind(this);\n      const boundResizerBlur = this.#resizerBlur.bind(this);\n      const signal = this._uiManager._signal;\n      for (const div of this.#allResizerDivs) {\n        const name = div.getAttribute(\"data-resizer-name\");\n        div.setAttribute(\"role\", \"spinbutton\");\n        div.addEventListener(\"keydown\", boundResizerKeydown, {\n          signal\n        });\n        div.addEventListener(\"blur\", boundResizerBlur, {\n          signal\n        });\n        div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n          signal\n        });\n        div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n      }\n    }\n    const first = this.#allResizerDivs[0];\n    let firstPosition = 0;\n    for (const div of children) {\n      if (div === first) {\n        break;\n      }\n      firstPosition++;\n    }\n    const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n    if (nextFirstPosition !== firstPosition) {\n      if (nextFirstPosition < firstPosition) {\n        for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n          this.#resizersDiv.append(this.#resizersDiv.firstChild);\n        }\n      } else if (nextFirstPosition > firstPosition) {\n        for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n          this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n        }\n      }\n      let i = 0;\n      for (const child of children) {\n        const div = this.#allResizerDivs[i++];\n        const name = div.getAttribute(\"data-resizer-name\");\n        child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n      }\n    }\n    this.#setResizerTabIndex(0);\n    this.#isResizerEnabledForKeyboard = true;\n    this.#resizersDiv.firstChild.focus({\n      focusVisible: true\n    });\n    event.preventDefault();\n    event.stopImmediatePropagation();\n  }\n  #resizerKeydown(event) {\n    AnnotationEditor._resizerKeyboardManager.exec(this, event);\n  }\n  #resizerBlur(event) {\n    if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n      this.#stopResizing();\n    }\n  }\n  #resizerFocus(name) {\n    this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n  }\n  #setResizerTabIndex(value) {\n    if (!this.#allResizerDivs) {\n      return;\n    }\n    for (const div of this.#allResizerDivs) {\n      div.tabIndex = value;\n    }\n  }\n  _resizeWithKeyboard(x, y) {\n    if (!this.#isResizerEnabledForKeyboard) {\n      return;\n    }\n    this.#resizerPointermove(this.#focusedResizerName, {\n      movementX: x,\n      movementY: y\n    });\n  }\n  #stopResizing() {\n    this.#isResizerEnabledForKeyboard = false;\n    this.#setResizerTabIndex(-1);\n    if (this.#savedDimensions) {\n      const {\n        savedX,\n        savedY,\n        savedWidth,\n        savedHeight\n      } = this.#savedDimensions;\n      this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n      this.#savedDimensions = null;\n    }\n  }\n  _stopResizingWithKeyboard() {\n    this.#stopResizing();\n    this.div.focus();\n  }\n  select() {\n    this.makeResizable();\n    this.div?.classList.add(\"selectedEditor\");\n    if (!this._editToolbar) {\n      this.addEditToolbar().then(() => {\n        if (this.div?.classList.contains(\"selectedEditor\")) {\n          this._editToolbar?.show();\n        }\n      });\n      return;\n    }\n    this._editToolbar?.show();\n    this.#altText?.toggleAltTextBadge(false);\n  }\n  unselect() {\n    this.#resizersDiv?.classList.add(\"hidden\");\n    this.div?.classList.remove(\"selectedEditor\");\n    if (this.div?.contains(document.activeElement)) {\n      this._uiManager.currentLayer.div.focus({\n        preventScroll: true\n      });\n    }\n    this._editToolbar?.hide();\n    this.#altText?.toggleAltTextBadge(true);\n  }\n  updateParams(type, value) {}\n  disableEditing() {}\n  enableEditing() {}\n  enterInEditMode() {}\n  getImageForAltText() {\n    return null;\n  }\n  get contentDiv() {\n    return this.div;\n  }\n  get isEditing() {\n    return this.#isEditing;\n  }\n  set isEditing(value) {\n    this.#isEditing = value;\n    if (!this.parent) {\n      return;\n    }\n    if (value) {\n      this.parent.setSelected(this);\n      this.parent.setActiveEditor(this);\n    } else {\n      this.parent.setActiveEditor(null);\n    }\n  }\n  setAspectRatio(width, height) {\n    this.#keepAspectRatio = true;\n    const aspectRatio = width / height;\n    const {\n      style\n    } = this.div;\n    style.aspectRatio = aspectRatio;\n    style.height = \"auto\";\n  }\n  static get MIN_SIZE() {\n    return 16;\n  }\n  static canCreateNewEmptyEditor() {\n    return true;\n  }\n  get telemetryInitialData() {\n    return {\n      action: \"added\"\n    };\n  }\n  get telemetryFinalData() {\n    return null;\n  }\n  _reportTelemetry(data, mustWait = false) {\n    if (mustWait) {\n      this.#telemetryTimeouts ||= new Map();\n      const {\n        action\n      } = data;\n      let timeout = this.#telemetryTimeouts.get(action);\n      if (timeout) {\n        clearTimeout(timeout);\n      }\n      timeout = setTimeout(() => {\n        this._reportTelemetry(data);\n        this.#telemetryTimeouts.delete(action);\n        if (this.#telemetryTimeouts.size === 0) {\n          this.#telemetryTimeouts = null;\n        }\n      }, AnnotationEditor._telemetryTimeout);\n      this.#telemetryTimeouts.set(action, timeout);\n      return;\n    }\n    data.type ||= this.editorType;\n    this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n      source: this,\n      details: {\n        type: \"editing\",\n        data\n      }\n    });\n  }\n  show(visible = this._isVisible) {\n    this.div.classList.toggle(\"hidden\", !visible);\n    this._isVisible = visible;\n  }\n  enable() {\n    if (this.div) {\n      this.div.tabIndex = 0;\n    }\n    this.#disabled = false;\n  }\n  disable() {\n    if (this.div) {\n      this.div.tabIndex = -1;\n    }\n    this.#disabled = true;\n  }\n  renderAnnotationElement(annotation) {\n    let content = annotation.container.querySelector(\".annotationContent\");\n    if (!content) {\n      content = document.createElement(\"div\");\n      content.classList.add(\"annotationContent\", this.editorType);\n      annotation.container.prepend(content);\n    } else if (content.nodeName === \"CANVAS\") {\n      const canvas = content;\n      content = document.createElement(\"div\");\n      content.classList.add(\"annotationContent\", this.editorType);\n      canvas.before(content);\n    }\n    return content;\n  }\n  resetAnnotationElement(annotation) {\n    const {\n      firstChild\n    } = annotation.container;\n    if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n      firstChild.remove();\n    }\n  }\n}\nclass FakeEditor extends AnnotationEditor {\n  constructor(params) {\n    super(params);\n    this.annotationElementId = params.annotationElementId;\n    this.deleted = true;\n  }\n  serialize() {\n    return this.serializeDeleted();\n  }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n  update(input) {\n    let data, length;\n    if (typeof input === \"string\") {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (ArrayBuffer.isView(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n    }\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n      k2 = 0;\n    let h1 = this.h1,\n      h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n      C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n      C2_LOW = C2 & MASK_LOW;\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n        k1 = k1 << 15 | k1 >>> 17;\n        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n        h1 ^= k1;\n        h1 = h1 << 13 | h1 >>> 19;\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n        k2 = k2 << 15 | k2 >>> 17;\n        k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n        h2 ^= k2;\n        h2 = h2 << 13 | h2 >>> 19;\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n    k1 = 0;\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n        k1 = k1 << 15 | k1 >>> 17;\n        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n    h1 ^= h2 >>> 1;\n    h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n    h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n    h1 ^= h2 >>> 1;\n    h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n    h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n    h1 ^= h2 >>> 1;\n    return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n  }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n  map: null,\n  hash: \"\",\n  transfer: undefined\n});\nclass AnnotationStorage {\n  #modified = false;\n  #modifiedIds = null;\n  #storage = new Map();\n  constructor() {\n    this.onSetModified = null;\n    this.onResetModified = null;\n    this.onAnnotationEditor = null;\n  }\n  getValue(key, defaultValue) {\n    const value = this.#storage.get(key);\n    if (value === undefined) {\n      return defaultValue;\n    }\n    return Object.assign(defaultValue, value);\n  }\n  getRawValue(key) {\n    return this.#storage.get(key);\n  }\n  remove(key) {\n    this.#storage.delete(key);\n    if (this.#storage.size === 0) {\n      this.resetModified();\n    }\n    if (typeof this.onAnnotationEditor === \"function\") {\n      for (const value of this.#storage.values()) {\n        if (value instanceof AnnotationEditor) {\n          return;\n        }\n      }\n      this.onAnnotationEditor(null);\n    }\n  }\n  setValue(key, value) {\n    const obj = this.#storage.get(key);\n    let modified = false;\n    if (obj !== undefined) {\n      for (const [entry, val] of Object.entries(value)) {\n        if (obj[entry] !== val) {\n          modified = true;\n          obj[entry] = val;\n        }\n      }\n    } else {\n      modified = true;\n      this.#storage.set(key, value);\n    }\n    if (modified) {\n      this.#setModified();\n    }\n    if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n      this.onAnnotationEditor(value.constructor._type);\n    }\n  }\n  has(key) {\n    return this.#storage.has(key);\n  }\n  getAll() {\n    return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n  }\n  setAll(obj) {\n    for (const [key, val] of Object.entries(obj)) {\n      this.setValue(key, val);\n    }\n  }\n  get size() {\n    return this.#storage.size;\n  }\n  #setModified() {\n    if (!this.#modified) {\n      this.#modified = true;\n      if (typeof this.onSetModified === \"function\") {\n        this.onSetModified();\n      }\n    }\n  }\n  resetModified() {\n    if (this.#modified) {\n      this.#modified = false;\n      if (typeof this.onResetModified === \"function\") {\n        this.onResetModified();\n      }\n    }\n  }\n  get print() {\n    return new PrintAnnotationStorage(this);\n  }\n  get serializable() {\n    if (this.#storage.size === 0) {\n      return SerializableEmpty;\n    }\n    const map = new Map(),\n      hash = new MurmurHash3_64(),\n      transfer = [];\n    const context = Object.create(null);\n    let hasBitmap = false;\n    for (const [key, val] of this.#storage) {\n      const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n      if (serialized) {\n        map.set(key, serialized);\n        hash.update(`${key}:${JSON.stringify(serialized)}`);\n        hasBitmap ||= !!serialized.bitmap;\n      }\n    }\n    if (hasBitmap) {\n      for (const value of map.values()) {\n        if (value.bitmap) {\n          transfer.push(value.bitmap);\n        }\n      }\n    }\n    return map.size > 0 ? {\n      map,\n      hash: hash.hexdigest(),\n      transfer\n    } : SerializableEmpty;\n  }\n  get editorStats() {\n    let stats = null;\n    const typeToEditor = new Map();\n    for (const value of this.#storage.values()) {\n      if (!(value instanceof AnnotationEditor)) {\n        continue;\n      }\n      const editorStats = value.telemetryFinalData;\n      if (!editorStats) {\n        continue;\n      }\n      const {\n        type\n      } = editorStats;\n      if (!typeToEditor.has(type)) {\n        typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n      }\n      stats ||= Object.create(null);\n      const map = stats[type] ||= new Map();\n      for (const [key, val] of Object.entries(editorStats)) {\n        if (key === \"type\") {\n          continue;\n        }\n        let counters = map.get(key);\n        if (!counters) {\n          counters = new Map();\n          map.set(key, counters);\n        }\n        const count = counters.get(val) ?? 0;\n        counters.set(val, count + 1);\n      }\n    }\n    for (const [type, editor] of typeToEditor) {\n      stats[type] = editor.computeTelemetryFinalData(stats[type]);\n    }\n    return stats;\n  }\n  resetModifiedIds() {\n    this.#modifiedIds = null;\n  }\n  get modifiedIds() {\n    if (this.#modifiedIds) {\n      return this.#modifiedIds;\n    }\n    const ids = [];\n    for (const value of this.#storage.values()) {\n      if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n        continue;\n      }\n      ids.push(value.annotationElementId);\n    }\n    return this.#modifiedIds = {\n      ids: new Set(ids),\n      hash: ids.join(\",\")\n    };\n  }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n  #serializable;\n  constructor(parent) {\n    super();\n    const {\n      map,\n      hash,\n      transfer\n    } = parent.serializable;\n    const clone = structuredClone(map, transfer ? {\n      transfer\n    } : null);\n    this.#serializable = {\n      map: clone,\n      hash,\n      transfer\n    };\n  }\n  get print() {\n    unreachable(\"Should not call PrintAnnotationStorage.print\");\n  }\n  get serializable() {\n    return this.#serializable;\n  }\n  get modifiedIds() {\n    return shadow(this, \"modifiedIds\", {\n      ids: new Set(),\n      hash: \"\"\n    });\n  }\n}\n\n;// ./src/display/font_loader.js\n\nclass FontLoader {\n  #systemFonts = new Set();\n  constructor({\n    ownerDocument = globalThis.document,\n    styleElement = null\n  }) {\n    this._document = ownerDocument;\n    this.nativeFontFaces = new Set();\n    this.styleElement = null;\n    this.loadingRequests = [];\n    this.loadTestFontId = 0;\n  }\n  addNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.add(nativeFontFace);\n    this._document.fonts.add(nativeFontFace);\n  }\n  removeNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.delete(nativeFontFace);\n    this._document.fonts.delete(nativeFontFace);\n  }\n  insertRule(rule) {\n    if (!this.styleElement) {\n      this.styleElement = this._document.createElement(\"style\");\n      this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n    }\n    const styleSheet = this.styleElement.sheet;\n    styleSheet.insertRule(rule, styleSheet.cssRules.length);\n  }\n  clear() {\n    for (const nativeFontFace of this.nativeFontFaces) {\n      this._document.fonts.delete(nativeFontFace);\n    }\n    this.nativeFontFaces.clear();\n    this.#systemFonts.clear();\n    if (this.styleElement) {\n      this.styleElement.remove();\n      this.styleElement = null;\n    }\n  }\n  async loadSystemFont({\n    systemFontInfo: info,\n    _inspectFont\n  }) {\n    if (!info || this.#systemFonts.has(info.loadedName)) {\n      return;\n    }\n    assert(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n    if (this.isFontLoadingAPISupported) {\n      const {\n        loadedName,\n        src,\n        style\n      } = info;\n      const fontFace = new FontFace(loadedName, src, style);\n      this.addNativeFontFace(fontFace);\n      try {\n        await fontFace.load();\n        this.#systemFonts.add(loadedName);\n        _inspectFont?.(info);\n      } catch {\n        warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n        this.removeNativeFontFace(fontFace);\n      }\n      return;\n    }\n    unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n  }\n  async bind(font) {\n    if (font.attached || font.missingFile && !font.systemFontInfo) {\n      return;\n    }\n    font.attached = true;\n    if (font.systemFontInfo) {\n      await this.loadSystemFont(font);\n      return;\n    }\n    if (this.isFontLoadingAPISupported) {\n      const nativeFontFace = font.createNativeFontFace();\n      if (nativeFontFace) {\n        this.addNativeFontFace(nativeFontFace);\n        try {\n          await nativeFontFace.loaded;\n        } catch (ex) {\n          warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n          font.disableFontFace = true;\n          throw ex;\n        }\n      }\n      return;\n    }\n    const rule = font.createFontFaceRule();\n    if (rule) {\n      this.insertRule(rule);\n      if (this.isSyncFontLoadingSupported) {\n        return;\n      }\n      await new Promise(resolve => {\n        const request = this._queueLoadingCallback(resolve);\n        this._prepareFontLoadEvent(font, request);\n      });\n    }\n  }\n  get isFontLoadingAPISupported() {\n    const hasFonts = !!this._document?.fonts;\n    return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n  }\n  get isSyncFontLoadingSupported() {\n    let supported = false;\n    if (isNodeJS) {\n      supported = true;\n    } else if (typeof navigator !== \"undefined\" && typeof navigator?.userAgent === \"string\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n      supported = true;\n    }\n    return shadow(this, \"isSyncFontLoadingSupported\", supported);\n  }\n  _queueLoadingCallback(callback) {\n    function completeRequest() {\n      assert(!request.done, \"completeRequest() cannot be called twice.\");\n      request.done = true;\n      while (loadingRequests.length > 0 && loadingRequests[0].done) {\n        const otherRequest = loadingRequests.shift();\n        setTimeout(otherRequest.callback, 0);\n      }\n    }\n    const {\n      loadingRequests\n    } = this;\n    const request = {\n      done: false,\n      complete: completeRequest,\n      callback\n    };\n    loadingRequests.push(request);\n    return request;\n  }\n  get _loadTestFont() {\n    const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n    return shadow(this, \"_loadTestFont\", testFont);\n  }\n  _prepareFontLoadEvent(font, request) {\n    function int32(data, offset) {\n      return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n    }\n    function spliceString(s, offset, remove, insert) {\n      const chunk1 = s.substring(0, offset);\n      const chunk2 = s.substring(offset + remove);\n      return chunk1 + insert + chunk2;\n    }\n    let i, ii;\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = 1;\n    canvas.height = 1;\n    const ctx = canvas.getContext(\"2d\");\n    let called = 0;\n    function isFontReady(name, callback) {\n      if (++called > 30) {\n        warn(\"Load test font never loaded.\");\n        callback();\n        return;\n      }\n      ctx.font = \"30px \" + name;\n      ctx.fillText(\".\", 0, 20);\n      const imageData = ctx.getImageData(0, 0, 1, 1);\n      if (imageData.data[3] > 0) {\n        callback();\n        return;\n      }\n      setTimeout(isFontReady.bind(null, name, callback));\n    }\n    const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n    let data = this._loadTestFont;\n    const COMMENT_OFFSET = 976;\n    data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n    const CFF_CHECKSUM_OFFSET = 16;\n    const XXXX_VALUE = 0x58585858;\n    let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n    for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n      checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n    }\n    if (i < loadTestFontId.length) {\n      checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n    }\n    data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n    const url = `url(data:font/opentype;base64,${btoa(data)});`;\n    const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n    this.insertRule(rule);\n    const div = this._document.createElement(\"div\");\n    div.style.visibility = \"hidden\";\n    div.style.width = div.style.height = \"10px\";\n    div.style.position = \"absolute\";\n    div.style.top = div.style.left = \"0px\";\n    for (const name of [font.loadedName, loadTestFontId]) {\n      const span = this._document.createElement(\"span\");\n      span.textContent = \"Hi\";\n      span.style.fontFamily = name;\n      div.append(span);\n    }\n    this._document.body.append(div);\n    isFontReady(loadTestFontId, () => {\n      div.remove();\n      request.complete();\n    });\n  }\n}\nclass FontFaceObject {\n  constructor(translatedData, {\n    disableFontFace = false,\n    inspectFont = null\n  }) {\n    this.compiledGlyphs = Object.create(null);\n    for (const i in translatedData) {\n      this[i] = translatedData[i];\n    }\n    this.disableFontFace = disableFontFace === true;\n    this._inspectFont = inspectFont;\n  }\n  createNativeFontFace() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    let nativeFontFace;\n    if (!this.cssFontInfo) {\n      nativeFontFace = new FontFace(this.loadedName, this.data, {});\n    } else {\n      const css = {\n        weight: this.cssFontInfo.fontWeight\n      };\n      if (this.cssFontInfo.italicAngle) {\n        css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n      }\n      nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n    }\n    this._inspectFont?.(this);\n    return nativeFontFace;\n  }\n  createFontFaceRule() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    const data = bytesToString(this.data);\n    const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n    let rule;\n    if (!this.cssFontInfo) {\n      rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n    } else {\n      let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n      if (this.cssFontInfo.italicAngle) {\n        css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n      }\n      rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n    }\n    this._inspectFont?.(this, url);\n    return rule;\n  }\n  getPathGenerator(objs, character) {\n    if (this.compiledGlyphs[character] !== undefined) {\n      return this.compiledGlyphs[character];\n    }\n    let cmds;\n    try {\n      cmds = objs.get(this.loadedName + \"_path_\" + character);\n    } catch (ex) {\n      warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n    }\n    if (!Array.isArray(cmds) || cmds.length === 0) {\n      return this.compiledGlyphs[character] = function (c, size) {};\n    }\n    const commands = [];\n    for (let i = 0, ii = cmds.length; i < ii;) {\n      switch (cmds[i++]) {\n        case FontRenderOps.BEZIER_CURVE_TO:\n          {\n            const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n            commands.push(ctx => ctx.bezierCurveTo(a, b, c, d, e, f));\n            i += 6;\n          }\n          break;\n        case FontRenderOps.MOVE_TO:\n          {\n            const [a, b] = cmds.slice(i, i + 2);\n            commands.push(ctx => ctx.moveTo(a, b));\n            i += 2;\n          }\n          break;\n        case FontRenderOps.LINE_TO:\n          {\n            const [a, b] = cmds.slice(i, i + 2);\n            commands.push(ctx => ctx.lineTo(a, b));\n            i += 2;\n          }\n          break;\n        case FontRenderOps.QUADRATIC_CURVE_TO:\n          {\n            const [a, b, c, d] = cmds.slice(i, i + 4);\n            commands.push(ctx => ctx.quadraticCurveTo(a, b, c, d));\n            i += 4;\n          }\n          break;\n        case FontRenderOps.RESTORE:\n          commands.push(ctx => ctx.restore());\n          break;\n        case FontRenderOps.SAVE:\n          commands.push(ctx => ctx.save());\n          break;\n        case FontRenderOps.SCALE:\n          assert(commands.length === 2, \"Scale command is only valid at the third position.\");\n          break;\n        case FontRenderOps.TRANSFORM:\n          {\n            const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n            commands.push(ctx => ctx.transform(a, b, c, d, e, f));\n            i += 6;\n          }\n          break;\n        case FontRenderOps.TRANSLATE:\n          {\n            const [a, b] = cmds.slice(i, i + 2);\n            commands.push(ctx => ctx.translate(a, b));\n            i += 2;\n          }\n          break;\n      }\n    }\n    return this.compiledGlyphs[character] = function glyphDrawer(ctx, size) {\n      commands[0](ctx);\n      commands[1](ctx);\n      ctx.scale(size, -size);\n      for (let i = 2, ii = commands.length; i < ii; i++) {\n        commands[i](ctx);\n      }\n    };\n  }\n}\n\n;// ./src/display/node_utils.js\n\n\nif (isNodeJS) {\n  var packageCapability = Promise.withResolvers();\n  var packageMap = null;\n  const loadPackages = async () => {\n    const fs = await import(/*webpackIgnore: true*/\"fs\"),\n      http = await import(/*webpackIgnore: true*/\"http\"),\n      https = await import(/*webpackIgnore: true*/\"https\"),\n      url = await import(/*webpackIgnore: true*/\"url\");\n    let canvas, path2d;\n    return new Map(Object.entries({\n      fs,\n      http,\n      https,\n      url,\n      canvas,\n      path2d\n    }));\n  };\n  loadPackages().then(map => {\n    packageMap = map;\n    packageCapability.resolve();\n  }, reason => {\n    warn(`loadPackages: ${reason}`);\n    packageMap = new Map();\n    packageCapability.resolve();\n  });\n}\nclass NodePackages {\n  static get promise() {\n    return packageCapability.promise;\n  }\n  static get(name) {\n    return packageMap?.get(name);\n  }\n}\nconst node_utils_fetchData = function (url) {\n  const fs = NodePackages.get(\"fs\");\n  return fs.promises.readFile(url).then(data => new Uint8Array(data));\n};\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n  _createCanvas(width, height) {\n    const canvas = NodePackages.get(\"canvas\");\n    return canvas.createCanvas(width, height);\n  }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n  _fetchData(url, compressionType) {\n    return node_utils_fetchData(url).then(data => ({\n      cMapData: data,\n      compressionType\n    }));\n  }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n  _fetchData(url) {\n    return node_utils_fetchData(url);\n  }\n}\n\n;// ./src/display/pattern_helper.js\n\n\nconst PathType = {\n  FILL: \"Fill\",\n  STROKE: \"Stroke\",\n  SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n  if (!bbox) {\n    return;\n  }\n  const width = bbox[2] - bbox[0];\n  const height = bbox[3] - bbox[1];\n  const region = new Path2D();\n  region.rect(bbox[0], bbox[1], width, height);\n  ctx.clip(region);\n}\nclass BaseShadingPattern {\n  getPattern() {\n    unreachable(\"Abstract method `getPattern` called.\");\n  }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._type = IR[1];\n    this._bbox = IR[2];\n    this._colorStops = IR[3];\n    this._p0 = IR[4];\n    this._p1 = IR[5];\n    this._r0 = IR[6];\n    this._r1 = IR[7];\n    this.matrix = null;\n  }\n  _createGradient(ctx) {\n    let grad;\n    if (this._type === \"axial\") {\n      grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n    } else if (this._type === \"radial\") {\n      grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n    }\n    for (const colorStop of this._colorStops) {\n      grad.addColorStop(colorStop[0], colorStop[1]);\n    }\n    return grad;\n  }\n  getPattern(ctx, owner, inverse, pathType) {\n    let pattern;\n    if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n      const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n      const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n      const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n      const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n      const tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      tmpCtx.beginPath();\n      tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n      inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n      tmpCtx.transform(...owner.baseTransform);\n      if (this.matrix) {\n        tmpCtx.transform(...this.matrix);\n      }\n      applyBoundingBox(tmpCtx, this._bbox);\n      tmpCtx.fillStyle = this._createGradient(tmpCtx);\n      tmpCtx.fill();\n      pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n      const domMatrix = new DOMMatrix(inverse);\n      pattern.setTransform(domMatrix);\n    } else {\n      applyBoundingBox(ctx, this._bbox);\n      pattern = this._createGradient(ctx);\n    }\n    return pattern;\n  }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n  const coords = context.coords,\n    colors = context.colors;\n  const bytes = data.data,\n    rowSize = data.width * 4;\n  let tmp;\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  if (coords[p2 + 1] > coords[p3 + 1]) {\n    tmp = p2;\n    p2 = p3;\n    p3 = tmp;\n    tmp = c2;\n    c2 = c3;\n    c3 = tmp;\n  }\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n  const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n  const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n  const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n  const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n  const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n  if (y1 >= y3) {\n    return;\n  }\n  const c1r = colors[c1],\n    c1g = colors[c1 + 1],\n    c1b = colors[c1 + 2];\n  const c2r = colors[c2],\n    c2g = colors[c2 + 1],\n    c2b = colors[c2 + 2];\n  const c3r = colors[c3],\n    c3g = colors[c3 + 1],\n    c3b = colors[c3 + 2];\n  const minY = Math.round(y1),\n    maxY = Math.round(y3);\n  let xa, car, cag, cab;\n  let xb, cbr, cbg, cbb;\n  for (let y = minY; y <= maxY; y++) {\n    if (y < y2) {\n      const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n      xa = x1 - (x1 - x2) * k;\n      car = c1r - (c1r - c2r) * k;\n      cag = c1g - (c1g - c2g) * k;\n      cab = c1b - (c1b - c2b) * k;\n    } else {\n      let k;\n      if (y > y3) {\n        k = 1;\n      } else if (y2 === y3) {\n        k = 0;\n      } else {\n        k = (y2 - y) / (y2 - y3);\n      }\n      xa = x2 - (x2 - x3) * k;\n      car = c2r - (c2r - c3r) * k;\n      cag = c2g - (c2g - c3g) * k;\n      cab = c2b - (c2b - c3b) * k;\n    }\n    let k;\n    if (y < y1) {\n      k = 0;\n    } else if (y > y3) {\n      k = 1;\n    } else {\n      k = (y1 - y) / (y1 - y3);\n    }\n    xb = x1 - (x1 - x3) * k;\n    cbr = c1r - (c1r - c3r) * k;\n    cbg = c1g - (c1g - c3g) * k;\n    cbb = c1b - (c1b - c3b) * k;\n    const x1_ = Math.round(Math.min(xa, xb));\n    const x2_ = Math.round(Math.max(xa, xb));\n    let j = rowSize * y + x1_ * 4;\n    for (let x = x1_; x <= x2_; x++) {\n      k = (xa - x) / (xa - xb);\n      if (k < 0) {\n        k = 0;\n      } else if (k > 1) {\n        k = 1;\n      }\n      bytes[j++] = car - (car - cbr) * k | 0;\n      bytes[j++] = cag - (cag - cbg) * k | 0;\n      bytes[j++] = cab - (cab - cbb) * k | 0;\n      bytes[j++] = 255;\n    }\n  }\n}\nfunction drawFigure(data, figure, context) {\n  const ps = figure.coords;\n  const cs = figure.colors;\n  let i, ii;\n  switch (figure.type) {\n    case \"lattice\":\n      const verticesPerRow = figure.verticesPerRow;\n      const rows = Math.floor(ps.length / verticesPerRow) - 1;\n      const cols = verticesPerRow - 1;\n      for (i = 0; i < rows; i++) {\n        let q = i * verticesPerRow;\n        for (let j = 0; j < cols; j++, q++) {\n          drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n          drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n        }\n      }\n      break;\n    case \"triangles\":\n      for (i = 0, ii = ps.length; i < ii; i += 3) {\n        drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n      }\n      break;\n    default:\n      throw new Error(\"illegal figure\");\n  }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._coords = IR[2];\n    this._colors = IR[3];\n    this._figures = IR[4];\n    this._bounds = IR[5];\n    this._bbox = IR[7];\n    this._background = IR[8];\n    this.matrix = null;\n  }\n  _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n    const EXPECTED_SCALE = 1.1;\n    const MAX_PATTERN_SIZE = 3000;\n    const BORDER_SIZE = 2;\n    const offsetX = Math.floor(this._bounds[0]);\n    const offsetY = Math.floor(this._bounds[1]);\n    const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n    const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n    const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    const scaleX = boundsWidth / width;\n    const scaleY = boundsHeight / height;\n    const context = {\n      coords: this._coords,\n      colors: this._colors,\n      offsetX: -offsetX,\n      offsetY: -offsetY,\n      scaleX: 1 / scaleX,\n      scaleY: 1 / scaleY\n    };\n    const paddedWidth = width + BORDER_SIZE * 2;\n    const paddedHeight = height + BORDER_SIZE * 2;\n    const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n    const tmpCtx = tmpCanvas.context;\n    const data = tmpCtx.createImageData(width, height);\n    if (backgroundColor) {\n      const bytes = data.data;\n      for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n        bytes[i] = backgroundColor[0];\n        bytes[i + 1] = backgroundColor[1];\n        bytes[i + 2] = backgroundColor[2];\n        bytes[i + 3] = 255;\n      }\n    }\n    for (const figure of this._figures) {\n      drawFigure(data, figure, context);\n    }\n    tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n    const canvas = tmpCanvas.canvas;\n    return {\n      canvas,\n      offsetX: offsetX - BORDER_SIZE * scaleX,\n      offsetY: offsetY - BORDER_SIZE * scaleY,\n      scaleX,\n      scaleY\n    };\n  }\n  getPattern(ctx, owner, inverse, pathType) {\n    applyBoundingBox(ctx, this._bbox);\n    let scale;\n    if (pathType === PathType.SHADING) {\n      scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n    } else {\n      scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n      if (this.matrix) {\n        const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n        scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n      }\n    }\n    const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n    if (pathType !== PathType.SHADING) {\n      ctx.setTransform(...owner.baseTransform);\n      if (this.matrix) {\n        ctx.transform(...this.matrix);\n      }\n    }\n    ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n    ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n    return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n  }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n  getPattern() {\n    return \"hotpink\";\n  }\n}\nfunction getShadingPattern(IR) {\n  switch (IR[0]) {\n    case \"RadialAxial\":\n      return new RadialAxialShadingPattern(IR);\n    case \"Mesh\":\n      return new MeshShadingPattern(IR);\n    case \"Dummy\":\n      return new DummyShadingPattern();\n  }\n  throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n  COLORED: 1,\n  UNCOLORED: 2\n};\nclass TilingPattern {\n  static MAX_PATTERN_SIZE = 3000;\n  constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n    this.operatorList = IR[2];\n    this.matrix = IR[3];\n    this.bbox = IR[4];\n    this.xstep = IR[5];\n    this.ystep = IR[6];\n    this.paintType = IR[7];\n    this.tilingType = IR[8];\n    this.color = color;\n    this.ctx = ctx;\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\n    this.baseTransform = baseTransform;\n  }\n  createPatternCanvas(owner) {\n    const {\n      bbox,\n      operatorList,\n      paintType,\n      tilingType,\n      color,\n      canvasGraphicsFactory\n    } = this;\n    let {\n      xstep,\n      ystep\n    } = this;\n    xstep = Math.abs(xstep);\n    ystep = Math.abs(ystep);\n    info(\"TilingType: \" + tilingType);\n    const x0 = bbox[0],\n      y0 = bbox[1],\n      x1 = bbox[2],\n      y1 = bbox[3];\n    const width = x1 - x0;\n    const height = y1 - y0;\n    const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n    const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n    const combinedScaleX = matrixScale[0] * curMatrixScale[0];\n    const combinedScaleY = matrixScale[1] * curMatrixScale[1];\n    let canvasWidth = width,\n      canvasHeight = height,\n      redrawHorizontally = false,\n      redrawVertically = false;\n    const xScaledStep = Math.ceil(xstep * combinedScaleX);\n    const yScaledStep = Math.ceil(ystep * combinedScaleY);\n    const xScaledWidth = Math.ceil(width * combinedScaleX);\n    const yScaledHeight = Math.ceil(height * combinedScaleY);\n    if (xScaledStep >= xScaledWidth) {\n      canvasWidth = xstep;\n    } else {\n      redrawHorizontally = true;\n    }\n    if (yScaledStep >= yScaledHeight) {\n      canvasHeight = ystep;\n    } else {\n      redrawVertically = true;\n    }\n    const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n    const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n    const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n    const tmpCtx = tmpCanvas.context;\n    const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n    graphics.groupLevel = owner.groupLevel;\n    this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n    tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n    graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n    tmpCtx.save();\n    this.clipBbox(graphics, x0, y0, x1, y1);\n    graphics.baseTransform = getCurrentTransform(graphics.ctx);\n    graphics.executeOperatorList(operatorList);\n    graphics.endDrawing();\n    tmpCtx.restore();\n    if (redrawHorizontally || redrawVertically) {\n      const image = tmpCanvas.canvas;\n      if (redrawHorizontally) {\n        canvasWidth = xstep;\n      }\n      if (redrawVertically) {\n        canvasHeight = ystep;\n      }\n      const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n      const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n      const xSize = dimx2.size;\n      const ySize = dimy2.size;\n      const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n      const tmpCtx2 = tmpCanvas2.context;\n      const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n      const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n      for (let i = 0; i <= ii; i++) {\n        for (let j = 0; j <= jj; j++) {\n          tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n        }\n      }\n      return {\n        canvas: tmpCanvas2.canvas,\n        scaleX: dimx2.scale,\n        scaleY: dimy2.scale,\n        offsetX: x0,\n        offsetY: y0\n      };\n    }\n    return {\n      canvas: tmpCanvas.canvas,\n      scaleX: dimx.scale,\n      scaleY: dimy.scale,\n      offsetX: x0,\n      offsetY: y0\n    };\n  }\n  getSizeAndScale(step, realOutputSize, scale) {\n    const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n    let size = Math.ceil(step * scale);\n    if (size >= maxSize) {\n      size = maxSize;\n    } else {\n      scale = size / step;\n    }\n    return {\n      scale,\n      size\n    };\n  }\n  clipBbox(graphics, x0, y0, x1, y1) {\n    const bboxWidth = x1 - x0;\n    const bboxHeight = y1 - y0;\n    graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n    graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);\n    graphics.clip();\n    graphics.endPath();\n  }\n  setFillAndStrokeStyleToContext(graphics, paintType, color) {\n    const context = graphics.ctx,\n      current = graphics.current;\n    switch (paintType) {\n      case PaintType.COLORED:\n        const ctx = this.ctx;\n        context.fillStyle = ctx.fillStyle;\n        context.strokeStyle = ctx.strokeStyle;\n        current.fillColor = ctx.fillStyle;\n        current.strokeColor = ctx.strokeStyle;\n        break;\n      case PaintType.UNCOLORED:\n        const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n        context.fillStyle = cssColor;\n        context.strokeStyle = cssColor;\n        current.fillColor = cssColor;\n        current.strokeColor = cssColor;\n        break;\n      default:\n        throw new FormatError(`Unsupported paint type: ${paintType}`);\n    }\n  }\n  getPattern(ctx, owner, inverse, pathType) {\n    let matrix = inverse;\n    if (pathType !== PathType.SHADING) {\n      matrix = Util.transform(matrix, owner.baseTransform);\n      if (this.matrix) {\n        matrix = Util.transform(matrix, this.matrix);\n      }\n    }\n    const temporaryPatternCanvas = this.createPatternCanvas(owner);\n    let domMatrix = new DOMMatrix(matrix);\n    domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n    domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n    const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n    pattern.setTransform(domMatrix);\n    return pattern;\n  }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n  switch (params.kind) {\n    case ImageKind.GRAYSCALE_1BPP:\n      return convertBlackAndWhiteToRGBA(params);\n    case ImageKind.RGB_24BPP:\n      return convertRGBToRGBA(params);\n  }\n  return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  width,\n  height,\n  nonBlackColor = 0xffffffff,\n  inverseDecode = false\n}) {\n  const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n  const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n  const widthInSource = width >> 3;\n  const widthRemainder = width & 7;\n  const srcLength = src.length;\n  dest = new Uint32Array(dest.buffer);\n  let destPos = 0;\n  for (let i = 0; i < height; i++) {\n    for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n      const elem = srcPos < srcLength ? src[srcPos] : 255;\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n    }\n    if (widthRemainder === 0) {\n      continue;\n    }\n    const elem = srcPos < srcLength ? src[srcPos++] : 255;\n    for (let j = 0; j < widthRemainder; j++) {\n      dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n    }\n  }\n  return {\n    srcPos,\n    destPos\n  };\n}\nfunction convertRGBToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  destPos = 0,\n  width,\n  height\n}) {\n  let i = 0;\n  const len32 = src.length >> 2;\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n  if (FeatureTest.isLittleEndian) {\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i];\n      const s2 = src32[i + 1];\n      const s3 = src32[i + 2];\n      dest[destPos] = s1 | 0xff000000;\n      dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n      dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n      dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n    }\n    for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n      dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n    }\n  } else {\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i];\n      const s2 = src32[i + 1];\n      const s3 = src32[i + 2];\n      dest[destPos] = s1 | 0xff;\n      dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n      dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n      dest[destPos + 3] = s3 << 8 | 0xff;\n    }\n    for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n      dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n    }\n  }\n  return {\n    srcPos,\n    destPos\n  };\n}\nfunction grayToRGBA(src, dest) {\n  if (FeatureTest.isLittleEndian) {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = src[i] * 0x10101 | 0xff000000;\n    }\n  } else {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = src[i] * 0x1010100 | 0x000000ff;\n    }\n  }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n  if (ctx._removeMirroring) {\n    throw new Error(\"Context is already forwarding operations.\");\n  }\n  ctx.__originalSave = ctx.save;\n  ctx.__originalRestore = ctx.restore;\n  ctx.__originalRotate = ctx.rotate;\n  ctx.__originalScale = ctx.scale;\n  ctx.__originalTranslate = ctx.translate;\n  ctx.__originalTransform = ctx.transform;\n  ctx.__originalSetTransform = ctx.setTransform;\n  ctx.__originalResetTransform = ctx.resetTransform;\n  ctx.__originalClip = ctx.clip;\n  ctx.__originalMoveTo = ctx.moveTo;\n  ctx.__originalLineTo = ctx.lineTo;\n  ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n  ctx.__originalRect = ctx.rect;\n  ctx.__originalClosePath = ctx.closePath;\n  ctx.__originalBeginPath = ctx.beginPath;\n  ctx._removeMirroring = () => {\n    ctx.save = ctx.__originalSave;\n    ctx.restore = ctx.__originalRestore;\n    ctx.rotate = ctx.__originalRotate;\n    ctx.scale = ctx.__originalScale;\n    ctx.translate = ctx.__originalTranslate;\n    ctx.transform = ctx.__originalTransform;\n    ctx.setTransform = ctx.__originalSetTransform;\n    ctx.resetTransform = ctx.__originalResetTransform;\n    ctx.clip = ctx.__originalClip;\n    ctx.moveTo = ctx.__originalMoveTo;\n    ctx.lineTo = ctx.__originalLineTo;\n    ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n    ctx.rect = ctx.__originalRect;\n    ctx.closePath = ctx.__originalClosePath;\n    ctx.beginPath = ctx.__originalBeginPath;\n    delete ctx._removeMirroring;\n  };\n  ctx.save = function ctxSave() {\n    destCtx.save();\n    this.__originalSave();\n  };\n  ctx.restore = function ctxRestore() {\n    destCtx.restore();\n    this.__originalRestore();\n  };\n  ctx.translate = function ctxTranslate(x, y) {\n    destCtx.translate(x, y);\n    this.__originalTranslate(x, y);\n  };\n  ctx.scale = function ctxScale(x, y) {\n    destCtx.scale(x, y);\n    this.__originalScale(x, y);\n  };\n  ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n    destCtx.transform(a, b, c, d, e, f);\n    this.__originalTransform(a, b, c, d, e, f);\n  };\n  ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n    destCtx.setTransform(a, b, c, d, e, f);\n    this.__originalSetTransform(a, b, c, d, e, f);\n  };\n  ctx.resetTransform = function ctxResetTransform() {\n    destCtx.resetTransform();\n    this.__originalResetTransform();\n  };\n  ctx.rotate = function ctxRotate(angle) {\n    destCtx.rotate(angle);\n    this.__originalRotate(angle);\n  };\n  ctx.clip = function ctxRotate(rule) {\n    destCtx.clip(rule);\n    this.__originalClip(rule);\n  };\n  ctx.moveTo = function (x, y) {\n    destCtx.moveTo(x, y);\n    this.__originalMoveTo(x, y);\n  };\n  ctx.lineTo = function (x, y) {\n    destCtx.lineTo(x, y);\n    this.__originalLineTo(x, y);\n  };\n  ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n    destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n  };\n  ctx.rect = function (x, y, width, height) {\n    destCtx.rect(x, y, width, height);\n    this.__originalRect(x, y, width, height);\n  };\n  ctx.closePath = function () {\n    destCtx.closePath();\n    this.__originalClosePath();\n  };\n  ctx.beginPath = function () {\n    destCtx.beginPath();\n    this.__originalBeginPath();\n  };\n}\nclass CachedCanvases {\n  constructor(canvasFactory) {\n    this.canvasFactory = canvasFactory;\n    this.cache = Object.create(null);\n  }\n  getCanvas(id, width, height) {\n    let canvasEntry;\n    if (this.cache[id] !== undefined) {\n      canvasEntry = this.cache[id];\n      this.canvasFactory.reset(canvasEntry, width, height);\n    } else {\n      canvasEntry = this.canvasFactory.create(width, height);\n      this.cache[id] = canvasEntry;\n    }\n    return canvasEntry;\n  }\n  delete(id) {\n    delete this.cache[id];\n  }\n  clear() {\n    for (const id in this.cache) {\n      const canvasEntry = this.cache[id];\n      this.canvasFactory.destroy(canvasEntry);\n      delete this.cache[id];\n    }\n  }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n  const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n  if (b === 0 && c === 0) {\n    const tlX = destX * a + tx;\n    const rTlX = Math.round(tlX);\n    const tlY = destY * d + ty;\n    const rTlY = Math.round(tlY);\n    const brX = (destX + destW) * a + tx;\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n    const brY = (destY + destH) * d + ty;\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n    ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n    ctx.setTransform(a, b, c, d, tx, ty);\n    return [rWidth, rHeight];\n  }\n  if (a === 0 && d === 0) {\n    const tlX = destY * c + tx;\n    const rTlX = Math.round(tlX);\n    const tlY = destX * b + ty;\n    const rTlY = Math.round(tlY);\n    const brX = (destY + destH) * c + tx;\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n    const brY = (destX + destW) * b + ty;\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n    ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n    ctx.setTransform(a, b, c, d, tx, ty);\n    return [rHeight, rWidth];\n  }\n  ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n  const scaleX = Math.hypot(a, b);\n  const scaleY = Math.hypot(c, d);\n  return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n  const {\n    width,\n    height\n  } = imgData;\n  if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n    return null;\n  }\n  const POINT_TO_PROCESS_LIMIT = 1000;\n  const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n  const width1 = width + 1;\n  let points = new Uint8Array(width1 * (height + 1));\n  let i, j, j0;\n  const lineSize = width + 7 & ~7;\n  let data = new Uint8Array(lineSize * height),\n    pos = 0;\n  for (const elem of imgData.data) {\n    let mask = 128;\n    while (mask > 0) {\n      data[pos++] = elem & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n  let count = 0;\n  pos = 0;\n  if (data[pos] !== 0) {\n    points[0] = 1;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j] = data[pos] ? 2 : 1;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j] = 2;\n    ++count;\n  }\n  for (i = 1; i < height; i++) {\n    pos = i * lineSize;\n    j0 = i * width1;\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0] = data[pos] ? 1 : 8;\n      ++count;\n    }\n    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n    for (j = 1; j < width; j++) {\n      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n      if (POINT_TYPES[sum]) {\n        points[j0 + j] = POINT_TYPES[sum];\n        ++count;\n      }\n      pos++;\n    }\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0 + j] = data[pos] ? 2 : 4;\n      ++count;\n    }\n    if (count > POINT_TO_PROCESS_LIMIT) {\n      return null;\n    }\n  }\n  pos = lineSize * (height - 1);\n  j0 = i * width1;\n  if (data[pos] !== 0) {\n    points[j0] = 8;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j0 + j] = data[pos] ? 4 : 8;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j0 + j] = 4;\n    ++count;\n  }\n  if (count > POINT_TO_PROCESS_LIMIT) {\n    return null;\n  }\n  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n  const path = new Path2D();\n  for (i = 0; count && i <= height; i++) {\n    let p = i * width1;\n    const end = p + width;\n    while (p < end && !points[p]) {\n      p++;\n    }\n    if (p === end) {\n      continue;\n    }\n    path.moveTo(p % width1, i);\n    const p0 = p;\n    let type = points[p];\n    do {\n      const step = steps[type];\n      do {\n        p += step;\n      } while (!points[p]);\n      const pp = points[p];\n      if (pp !== 5 && pp !== 10) {\n        type = pp;\n        points[p] = 0;\n      } else {\n        type = pp & 0x33 * type >> 4;\n        points[p] &= type >> 2 | type << 2;\n      }\n      path.lineTo(p % width1, p / width1 | 0);\n      if (!points[p]) {\n        --count;\n      }\n    } while (p0 !== p);\n    --i;\n  }\n  data = null;\n  points = null;\n  const drawOutline = function (c) {\n    c.save();\n    c.scale(1 / width, -1 / height);\n    c.translate(0, -height);\n    c.fill(path);\n    c.beginPath();\n    c.restore();\n  };\n  return drawOutline;\n}\nclass CanvasExtraState {\n  constructor(width, height) {\n    this.alphaIsShape = false;\n    this.fontSize = 0;\n    this.fontSizeScale = 1;\n    this.textMatrix = IDENTITY_MATRIX;\n    this.textMatrixScale = 1;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.leading = 0;\n    this.x = 0;\n    this.y = 0;\n    this.lineX = 0;\n    this.lineY = 0;\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.textHScale = 1;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.textRise = 0;\n    this.fillColor = \"#000000\";\n    this.strokeColor = \"#000000\";\n    this.patternFill = false;\n    this.fillAlpha = 1;\n    this.strokeAlpha = 1;\n    this.lineWidth = 1;\n    this.activeSMask = null;\n    this.transferMaps = \"none\";\n    this.startNewPathAndClipBox([0, 0, width, height]);\n  }\n  clone() {\n    const clone = Object.create(this);\n    clone.clipBox = this.clipBox.slice();\n    return clone;\n  }\n  setCurrentPoint(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n  updatePathMinMax(transform, x, y) {\n    [x, y] = Util.applyTransform([x, y], transform);\n    this.minX = Math.min(this.minX, x);\n    this.minY = Math.min(this.minY, y);\n    this.maxX = Math.max(this.maxX, x);\n    this.maxY = Math.max(this.maxY, y);\n  }\n  updateRectMinMax(transform, rect) {\n    const p1 = Util.applyTransform(rect, transform);\n    const p2 = Util.applyTransform(rect.slice(2), transform);\n    const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n    const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n    this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n    this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n    this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n    this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n  }\n  updateScalingPathMinMax(transform, minMax) {\n    Util.scaleMinMax(transform, minMax);\n    this.minX = Math.min(this.minX, minMax[0]);\n    this.minY = Math.min(this.minY, minMax[1]);\n    this.maxX = Math.max(this.maxX, minMax[2]);\n    this.maxY = Math.max(this.maxY, minMax[3]);\n  }\n  updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n    const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n    if (minMax) {\n      return;\n    }\n    this.updateRectMinMax(transform, box);\n  }\n  getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    const box = [this.minX, this.minY, this.maxX, this.maxY];\n    if (pathType === PathType.STROKE) {\n      if (!transform) {\n        unreachable(\"Stroke bounding box must include transform.\");\n      }\n      const scale = Util.singularValueDecompose2dScale(transform);\n      const xStrokePad = scale[0] * this.lineWidth / 2;\n      const yStrokePad = scale[1] * this.lineWidth / 2;\n      box[0] -= xStrokePad;\n      box[1] -= yStrokePad;\n      box[2] += xStrokePad;\n      box[3] += yStrokePad;\n    }\n    return box;\n  }\n  updateClipFromPath() {\n    const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n  }\n  isEmptyClip() {\n    return this.minX === Infinity;\n  }\n  startNewPathAndClipBox(box) {\n    this.clipBox = box;\n    this.minX = Infinity;\n    this.minY = Infinity;\n    this.maxX = 0;\n    this.maxY = 0;\n  }\n  getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n  }\n}\nfunction putBinaryImageData(ctx, imgData) {\n  if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n    ctx.putImageData(imgData, 0, 0);\n    return;\n  }\n  const height = imgData.height,\n    width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0,\n    destPos;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n  let i, j, thisChunkHeight, elemsInThisChunk;\n  if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n    const srcLength = src.byteLength;\n    const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n    const dest32DataLength = dest32.length;\n    const fullSrcDiff = width + 7 >> 3;\n    const white = 0xffffffff;\n    const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n    for (i = 0; i < totalChunks; i++) {\n      thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n      destPos = 0;\n      for (j = 0; j < thisChunkHeight; j++) {\n        const srcDiff = srcLength - srcPos;\n        let k = 0;\n        const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n        const kEndUnrolled = kEnd & ~7;\n        let mask = 0;\n        let srcByte = 0;\n        for (; k < kEndUnrolled; k += 8) {\n          srcByte = src[srcPos++];\n          dest32[destPos++] = srcByte & 128 ? white : black;\n          dest32[destPos++] = srcByte & 64 ? white : black;\n          dest32[destPos++] = srcByte & 32 ? white : black;\n          dest32[destPos++] = srcByte & 16 ? white : black;\n          dest32[destPos++] = srcByte & 8 ? white : black;\n          dest32[destPos++] = srcByte & 4 ? white : black;\n          dest32[destPos++] = srcByte & 2 ? white : black;\n          dest32[destPos++] = srcByte & 1 ? white : black;\n        }\n        for (; k < kEnd; k++) {\n          if (mask === 0) {\n            srcByte = src[srcPos++];\n            mask = 128;\n          }\n          dest32[destPos++] = srcByte & mask ? white : black;\n          mask >>= 1;\n        }\n      }\n      while (destPos < dest32DataLength) {\n        dest32[destPos++] = 0;\n      }\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n    j = 0;\n    elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n    for (i = 0; i < fullChunks; i++) {\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n      srcPos += elemsInThisChunk;\n      ctx.putImageData(chunkImgData, 0, j);\n      j += FULL_CHUNK_HEIGHT;\n    }\n    if (i < totalChunks) {\n      elemsInThisChunk = width * partialChunkHeight * 4;\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n      ctx.putImageData(chunkImgData, 0, j);\n    }\n  } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n    thisChunkHeight = FULL_CHUNK_HEIGHT;\n    elemsInThisChunk = width * thisChunkHeight;\n    for (i = 0; i < totalChunks; i++) {\n      if (i >= fullChunks) {\n        thisChunkHeight = partialChunkHeight;\n        elemsInThisChunk = width * thisChunkHeight;\n      }\n      destPos = 0;\n      for (j = elemsInThisChunk; j--;) {\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = 255;\n      }\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else {\n    throw new Error(`bad image kind: ${imgData.kind}`);\n  }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n  if (imgData.bitmap) {\n    ctx.drawImage(imgData.bitmap, 0, 0);\n    return;\n  }\n  const height = imgData.height,\n    width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n  for (let i = 0; i < totalChunks; i++) {\n    const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n    ({\n      srcPos\n    } = convertBlackAndWhiteToRGBA({\n      src,\n      srcPos,\n      dest,\n      width,\n      height: thisChunkHeight,\n      nonBlackColor: 0\n    }));\n    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n  }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n  const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n  for (const property of properties) {\n    if (sourceCtx[property] !== undefined) {\n      destCtx[property] = sourceCtx[property];\n    }\n  }\n  if (sourceCtx.setLineDash !== undefined) {\n    destCtx.setLineDash(sourceCtx.getLineDash());\n    destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n  }\n}\nfunction resetCtxToDefault(ctx) {\n  ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n  ctx.fillRule = \"nonzero\";\n  ctx.globalAlpha = 1;\n  ctx.lineWidth = 1;\n  ctx.lineCap = \"butt\";\n  ctx.lineJoin = \"miter\";\n  ctx.miterLimit = 10;\n  ctx.globalCompositeOperation = \"source-over\";\n  ctx.font = \"10px sans-serif\";\n  if (ctx.setLineDash !== undefined) {\n    ctx.setLineDash([]);\n    ctx.lineDashOffset = 0;\n  }\n  if (!isNodeJS) {\n    const {\n      filter\n    } = ctx;\n    if (filter !== \"none\" && filter !== \"\") {\n      ctx.filter = \"none\";\n    }\n  }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n  if (interpolate) {\n    return true;\n  }\n  const scale = Util.singularValueDecompose2dScale(transform);\n  scale[0] = Math.fround(scale[0]);\n  scale[1] = Math.fround(scale[1]);\n  const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS);\n  return scale[0] <= actualScale && scale[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n  constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n    optionalContentConfig,\n    markedContentStack = null\n  }, annotationCanvasMap, pageColors) {\n    this.ctx = canvasCtx;\n    this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n    this.stateStack = [];\n    this.pendingClip = null;\n    this.pendingEOFill = false;\n    this.res = null;\n    this.xobjs = null;\n    this.commonObjs = commonObjs;\n    this.objs = objs;\n    this.canvasFactory = canvasFactory;\n    this.filterFactory = filterFactory;\n    this.groupStack = [];\n    this.processingType3 = null;\n    this.baseTransform = null;\n    this.baseTransformStack = [];\n    this.groupLevel = 0;\n    this.smaskStack = [];\n    this.smaskCounter = 0;\n    this.tempSMask = null;\n    this.suspendedCtx = null;\n    this.contentVisible = true;\n    this.markedContentStack = markedContentStack || [];\n    this.optionalContentConfig = optionalContentConfig;\n    this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n    this.cachedPatterns = new Map();\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.viewportScale = 1;\n    this.outputScaleX = 1;\n    this.outputScaleY = 1;\n    this.pageColors = pageColors;\n    this._cachedScaleForStroking = [-1, 0];\n    this._cachedGetSinglePixelWidth = null;\n    this._cachedBitmapsMap = new Map();\n  }\n  getObject(data, fallback = null) {\n    if (typeof data === \"string\") {\n      return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n    }\n    return fallback;\n  }\n  beginDrawing({\n    transform,\n    viewport,\n    transparency = false,\n    background = null\n  }) {\n    const width = this.ctx.canvas.width;\n    const height = this.ctx.canvas.height;\n    const savedFillStyle = this.ctx.fillStyle;\n    this.ctx.fillStyle = background || \"#ffffff\";\n    this.ctx.fillRect(0, 0, width, height);\n    this.ctx.fillStyle = savedFillStyle;\n    if (transparency) {\n      const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n      this.compositeCtx = this.ctx;\n      this.transparentCanvas = transparentCanvas.canvas;\n      this.ctx = transparentCanvas.context;\n      this.ctx.save();\n      this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n    }\n    this.ctx.save();\n    resetCtxToDefault(this.ctx);\n    if (transform) {\n      this.ctx.transform(...transform);\n      this.outputScaleX = transform[0];\n      this.outputScaleY = transform[0];\n    }\n    this.ctx.transform(...viewport.transform);\n    this.viewportScale = viewport.scale;\n    this.baseTransform = getCurrentTransform(this.ctx);\n  }\n  executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n    const argsArray = operatorList.argsArray;\n    const fnArray = operatorList.fnArray;\n    let i = executionStartIdx || 0;\n    const argsArrayLen = argsArray.length;\n    if (argsArrayLen === i) {\n      return i;\n    }\n    const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n    let steps = 0;\n    const commonObjs = this.commonObjs;\n    const objs = this.objs;\n    let fnId;\n    while (true) {\n      if (stepper !== undefined && i === stepper.nextBreakPoint) {\n        stepper.breakIt(i, continueCallback);\n        return i;\n      }\n      fnId = fnArray[i];\n      if (fnId !== OPS.dependency) {\n        this[fnId].apply(this, argsArray[i]);\n      } else {\n        for (const depObjId of argsArray[i]) {\n          const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n          if (!objsPool.has(depObjId)) {\n            objsPool.get(depObjId, continueCallback);\n            return i;\n          }\n        }\n      }\n      i++;\n      if (i === argsArrayLen) {\n        return i;\n      }\n      if (chunkOperations && ++steps > EXECUTION_STEPS) {\n        if (Date.now() > endTime) {\n          continueCallback();\n          return i;\n        }\n        steps = 0;\n      }\n    }\n  }\n  #restoreInitialState() {\n    while (this.stateStack.length || this.inSMaskMode) {\n      this.restore();\n    }\n    this.current.activeSMask = null;\n    this.ctx.restore();\n    if (this.transparentCanvas) {\n      this.ctx = this.compositeCtx;\n      this.ctx.save();\n      this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n      this.ctx.drawImage(this.transparentCanvas, 0, 0);\n      this.ctx.restore();\n      this.transparentCanvas = null;\n    }\n  }\n  endDrawing() {\n    this.#restoreInitialState();\n    this.cachedCanvases.clear();\n    this.cachedPatterns.clear();\n    for (const cache of this._cachedBitmapsMap.values()) {\n      for (const canvas of cache.values()) {\n        if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n          canvas.width = canvas.height = 0;\n        }\n      }\n      cache.clear();\n    }\n    this._cachedBitmapsMap.clear();\n    this.#drawFilter();\n  }\n  #drawFilter() {\n    if (this.pageColors) {\n      const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n      if (hcmFilterId !== \"none\") {\n        const savedFilter = this.ctx.filter;\n        this.ctx.filter = hcmFilterId;\n        this.ctx.drawImage(this.ctx.canvas, 0, 0);\n        this.ctx.filter = savedFilter;\n      }\n    }\n  }\n  _scaleImage(img, inverseTransform) {\n    const width = img.width;\n    const height = img.height;\n    let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n    let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n    let paintWidth = width,\n      paintHeight = height;\n    let tmpCanvasId = \"prescale1\";\n    let tmpCanvas, tmpCtx;\n    while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n      let newWidth = paintWidth,\n        newHeight = paintHeight;\n      if (widthScale > 2 && paintWidth > 1) {\n        newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n        widthScale /= paintWidth / newWidth;\n      }\n      if (heightScale > 2 && paintHeight > 1) {\n        newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n        heightScale /= paintHeight / newHeight;\n      }\n      tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n      tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, newWidth, newHeight);\n      tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n      img = tmpCanvas.canvas;\n      paintWidth = newWidth;\n      paintHeight = newHeight;\n      tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n    }\n    return {\n      img,\n      paintWidth,\n      paintHeight\n    };\n  }\n  _createMaskCanvas(img) {\n    const ctx = this.ctx;\n    const {\n      width,\n      height\n    } = img;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    const currentTransform = getCurrentTransform(ctx);\n    let cache, cacheKey, scaled, maskCanvas;\n    if ((img.bitmap || img.data) && img.count > 1) {\n      const mainKey = img.bitmap || img.data.buffer;\n      cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n      cache = this._cachedBitmapsMap.get(mainKey);\n      if (!cache) {\n        cache = new Map();\n        this._cachedBitmapsMap.set(mainKey, cache);\n      }\n      const cachedImage = cache.get(cacheKey);\n      if (cachedImage && !isPatternFill) {\n        const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n        const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n        return {\n          canvas: cachedImage,\n          offsetX,\n          offsetY\n        };\n      }\n      scaled = cachedImage;\n    }\n    if (!scaled) {\n      maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n      putBinaryImageMask(maskCanvas.context, img);\n    }\n    let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n    maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n    const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n    const drawnWidth = Math.round(maxX - minX) || 1;\n    const drawnHeight = Math.round(maxY - minY) || 1;\n    const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n    const fillCtx = fillCanvas.context;\n    const offsetX = minX;\n    const offsetY = minY;\n    fillCtx.translate(-offsetX, -offsetY);\n    fillCtx.transform(...maskToCanvas);\n    if (!scaled) {\n      scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n      scaled = scaled.img;\n      if (cache && isPatternFill) {\n        cache.set(cacheKey, scaled);\n      }\n    }\n    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n    drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n    fillCtx.globalCompositeOperation = \"source-in\";\n    const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n    fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n    fillCtx.fillRect(0, 0, width, height);\n    if (cache && !isPatternFill) {\n      this.cachedCanvases.delete(\"fillCanvas\");\n      cache.set(cacheKey, fillCanvas.canvas);\n    }\n    return {\n      canvas: fillCanvas.canvas,\n      offsetX: Math.round(offsetX),\n      offsetY: Math.round(offsetY)\n    };\n  }\n  setLineWidth(width) {\n    if (width !== this.current.lineWidth) {\n      this._cachedScaleForStroking[0] = -1;\n    }\n    this.current.lineWidth = width;\n    this.ctx.lineWidth = width;\n  }\n  setLineCap(style) {\n    this.ctx.lineCap = LINE_CAP_STYLES[style];\n  }\n  setLineJoin(style) {\n    this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n  }\n  setMiterLimit(limit) {\n    this.ctx.miterLimit = limit;\n  }\n  setDash(dashArray, dashPhase) {\n    const ctx = this.ctx;\n    if (ctx.setLineDash !== undefined) {\n      ctx.setLineDash(dashArray);\n      ctx.lineDashOffset = dashPhase;\n    }\n  }\n  setRenderingIntent(intent) {}\n  setFlatness(flatness) {}\n  setGState(states) {\n    for (const [key, value] of states) {\n      switch (key) {\n        case \"LW\":\n          this.setLineWidth(value);\n          break;\n        case \"LC\":\n          this.setLineCap(value);\n          break;\n        case \"LJ\":\n          this.setLineJoin(value);\n          break;\n        case \"ML\":\n          this.setMiterLimit(value);\n          break;\n        case \"D\":\n          this.setDash(value[0], value[1]);\n          break;\n        case \"RI\":\n          this.setRenderingIntent(value);\n          break;\n        case \"FL\":\n          this.setFlatness(value);\n          break;\n        case \"Font\":\n          this.setFont(value[0], value[1]);\n          break;\n        case \"CA\":\n          this.current.strokeAlpha = value;\n          break;\n        case \"ca\":\n          this.current.fillAlpha = value;\n          this.ctx.globalAlpha = value;\n          break;\n        case \"BM\":\n          this.ctx.globalCompositeOperation = value;\n          break;\n        case \"SMask\":\n          this.current.activeSMask = value ? this.tempSMask : null;\n          this.tempSMask = null;\n          this.checkSMaskState();\n          break;\n        case \"TR\":\n          this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n          break;\n      }\n    }\n  }\n  get inSMaskMode() {\n    return !!this.suspendedCtx;\n  }\n  checkSMaskState() {\n    const inSMaskMode = this.inSMaskMode;\n    if (this.current.activeSMask && !inSMaskMode) {\n      this.beginSMaskMode();\n    } else if (!this.current.activeSMask && inSMaskMode) {\n      this.endSMaskMode();\n    }\n  }\n  beginSMaskMode() {\n    if (this.inSMaskMode) {\n      throw new Error(\"beginSMaskMode called while already in smask mode\");\n    }\n    const drawnWidth = this.ctx.canvas.width;\n    const drawnHeight = this.ctx.canvas.height;\n    const cacheId = \"smaskGroupAt\" + this.groupLevel;\n    const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n    this.suspendedCtx = this.ctx;\n    this.ctx = scratchCanvas.context;\n    const ctx = this.ctx;\n    ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n    copyCtxState(this.suspendedCtx, ctx);\n    mirrorContextOperations(ctx, this.suspendedCtx);\n    this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n  }\n  endSMaskMode() {\n    if (!this.inSMaskMode) {\n      throw new Error(\"endSMaskMode called while not in smask mode\");\n    }\n    this.ctx._removeMirroring();\n    copyCtxState(this.ctx, this.suspendedCtx);\n    this.ctx = this.suspendedCtx;\n    this.suspendedCtx = null;\n  }\n  compose(dirtyBox) {\n    if (!this.current.activeSMask) {\n      return;\n    }\n    if (!dirtyBox) {\n      dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n    } else {\n      dirtyBox[0] = Math.floor(dirtyBox[0]);\n      dirtyBox[1] = Math.floor(dirtyBox[1]);\n      dirtyBox[2] = Math.ceil(dirtyBox[2]);\n      dirtyBox[3] = Math.ceil(dirtyBox[3]);\n    }\n    const smask = this.current.activeSMask;\n    const suspendedCtx = this.suspendedCtx;\n    this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n    this.ctx.save();\n    this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n    this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n    this.ctx.restore();\n  }\n  composeSMask(ctx, smask, layerCtx, layerBox) {\n    const layerOffsetX = layerBox[0];\n    const layerOffsetY = layerBox[1];\n    const layerWidth = layerBox[2] - layerOffsetX;\n    const layerHeight = layerBox[3] - layerOffsetY;\n    if (layerWidth === 0 || layerHeight === 0) {\n      return;\n    }\n    this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n    ctx.save();\n    ctx.globalAlpha = 1;\n    ctx.globalCompositeOperation = \"source-over\";\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.drawImage(layerCtx.canvas, 0, 0);\n    ctx.restore();\n  }\n  genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n    let maskCanvas = maskCtx.canvas;\n    let maskX = layerOffsetX - maskOffsetX;\n    let maskY = layerOffsetY - maskOffsetY;\n    if (backdrop) {\n      if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n        const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n        const ctx = canvas.context;\n        ctx.drawImage(maskCanvas, -maskX, -maskY);\n        if (backdrop.some(c => c !== 0)) {\n          ctx.globalCompositeOperation = \"destination-atop\";\n          ctx.fillStyle = Util.makeHexColor(...backdrop);\n          ctx.fillRect(0, 0, width, height);\n          ctx.globalCompositeOperation = \"source-over\";\n        }\n        maskCanvas = canvas.canvas;\n        maskX = maskY = 0;\n      } else if (backdrop.some(c => c !== 0)) {\n        maskCtx.save();\n        maskCtx.globalAlpha = 1;\n        maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n        const clip = new Path2D();\n        clip.rect(maskX, maskY, width, height);\n        maskCtx.clip(clip);\n        maskCtx.globalCompositeOperation = \"destination-atop\";\n        maskCtx.fillStyle = Util.makeHexColor(...backdrop);\n        maskCtx.fillRect(maskX, maskY, width, height);\n        maskCtx.restore();\n      }\n    }\n    layerCtx.save();\n    layerCtx.globalAlpha = 1;\n    layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n    if (subtype === \"Alpha\" && transferMap) {\n      layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n    } else if (subtype === \"Luminosity\") {\n      layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n    }\n    const clip = new Path2D();\n    clip.rect(layerOffsetX, layerOffsetY, width, height);\n    layerCtx.clip(clip);\n    layerCtx.globalCompositeOperation = \"destination-in\";\n    layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n    layerCtx.restore();\n  }\n  save() {\n    if (this.inSMaskMode) {\n      copyCtxState(this.ctx, this.suspendedCtx);\n      this.suspendedCtx.save();\n    } else {\n      this.ctx.save();\n    }\n    const old = this.current;\n    this.stateStack.push(old);\n    this.current = old.clone();\n  }\n  restore() {\n    if (this.stateStack.length === 0 && this.inSMaskMode) {\n      this.endSMaskMode();\n    }\n    if (this.stateStack.length !== 0) {\n      this.current = this.stateStack.pop();\n      if (this.inSMaskMode) {\n        this.suspendedCtx.restore();\n        copyCtxState(this.suspendedCtx, this.ctx);\n      } else {\n        this.ctx.restore();\n      }\n      this.checkSMaskState();\n      this.pendingClip = null;\n      this._cachedScaleForStroking[0] = -1;\n      this._cachedGetSinglePixelWidth = null;\n    }\n  }\n  transform(a, b, c, d, e, f) {\n    this.ctx.transform(a, b, c, d, e, f);\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n  }\n  constructPath(ops, args, minMax) {\n    const ctx = this.ctx;\n    const current = this.current;\n    let x = current.x,\n      y = current.y;\n    let startX, startY;\n    const currentTransform = getCurrentTransform(ctx);\n    const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n    const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n    for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n      switch (ops[i] | 0) {\n        case OPS.rectangle:\n          x = args[j++];\n          y = args[j++];\n          const width = args[j++];\n          const height = args[j++];\n          const xw = x + width;\n          const yh = y + height;\n          ctx.moveTo(x, y);\n          if (width === 0 || height === 0) {\n            ctx.lineTo(xw, yh);\n          } else {\n            ctx.lineTo(xw, y);\n            ctx.lineTo(xw, yh);\n            ctx.lineTo(x, yh);\n          }\n          if (!isScalingMatrix) {\n            current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n          }\n          ctx.closePath();\n          break;\n        case OPS.moveTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.moveTo(x, y);\n          if (!isScalingMatrix) {\n            current.updatePathMinMax(currentTransform, x, y);\n          }\n          break;\n        case OPS.lineTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.lineTo(x, y);\n          if (!isScalingMatrix) {\n            current.updatePathMinMax(currentTransform, x, y);\n          }\n          break;\n        case OPS.curveTo:\n          startX = x;\n          startY = y;\n          x = args[j + 4];\n          y = args[j + 5];\n          ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n          current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n          j += 6;\n          break;\n        case OPS.curveTo2:\n          startX = x;\n          startY = y;\n          ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n          current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n          x = args[j + 2];\n          y = args[j + 3];\n          j += 4;\n          break;\n        case OPS.curveTo3:\n          startX = x;\n          startY = y;\n          x = args[j + 2];\n          y = args[j + 3];\n          ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n          current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n          j += 4;\n          break;\n        case OPS.closePath:\n          ctx.closePath();\n          break;\n      }\n    }\n    if (isScalingMatrix) {\n      current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n    }\n    current.setCurrentPoint(x, y);\n  }\n  closePath() {\n    this.ctx.closePath();\n  }\n  stroke(consumePath = true) {\n    const ctx = this.ctx;\n    const strokeColor = this.current.strokeColor;\n    ctx.globalAlpha = this.current.strokeAlpha;\n    if (this.contentVisible) {\n      if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n        ctx.save();\n        ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n        this.rescaleAndStroke(false);\n        ctx.restore();\n      } else {\n        this.rescaleAndStroke(true);\n      }\n    }\n    if (consumePath) {\n      this.consumePath(this.current.getClippedPathBoundingBox());\n    }\n    ctx.globalAlpha = this.current.fillAlpha;\n  }\n  closeStroke() {\n    this.closePath();\n    this.stroke();\n  }\n  fill(consumePath = true) {\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    let needRestore = false;\n    if (isPatternFill) {\n      ctx.save();\n      ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n      needRestore = true;\n    }\n    const intersect = this.current.getClippedPathBoundingBox();\n    if (this.contentVisible && intersect !== null) {\n      if (this.pendingEOFill) {\n        ctx.fill(\"evenodd\");\n        this.pendingEOFill = false;\n      } else {\n        ctx.fill();\n      }\n    }\n    if (needRestore) {\n      ctx.restore();\n    }\n    if (consumePath) {\n      this.consumePath(intersect);\n    }\n  }\n  eoFill() {\n    this.pendingEOFill = true;\n    this.fill();\n  }\n  fillStroke() {\n    this.fill(false);\n    this.stroke(false);\n    this.consumePath();\n  }\n  eoFillStroke() {\n    this.pendingEOFill = true;\n    this.fillStroke();\n  }\n  closeFillStroke() {\n    this.closePath();\n    this.fillStroke();\n  }\n  closeEOFillStroke() {\n    this.pendingEOFill = true;\n    this.closePath();\n    this.fillStroke();\n  }\n  endPath() {\n    this.consumePath();\n  }\n  clip() {\n    this.pendingClip = NORMAL_CLIP;\n  }\n  eoClip() {\n    this.pendingClip = EO_CLIP;\n  }\n  beginText() {\n    this.current.textMatrix = IDENTITY_MATRIX;\n    this.current.textMatrixScale = 1;\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n  endText() {\n    const paths = this.pendingTextPaths;\n    const ctx = this.ctx;\n    if (paths === undefined) {\n      ctx.beginPath();\n      return;\n    }\n    ctx.save();\n    ctx.beginPath();\n    for (const path of paths) {\n      ctx.setTransform(...path.transform);\n      ctx.translate(path.x, path.y);\n      path.addToPath(ctx, path.fontSize);\n    }\n    ctx.restore();\n    ctx.clip();\n    ctx.beginPath();\n    delete this.pendingTextPaths;\n  }\n  setCharSpacing(spacing) {\n    this.current.charSpacing = spacing;\n  }\n  setWordSpacing(spacing) {\n    this.current.wordSpacing = spacing;\n  }\n  setHScale(scale) {\n    this.current.textHScale = scale / 100;\n  }\n  setLeading(leading) {\n    this.current.leading = -leading;\n  }\n  setFont(fontRefName, size) {\n    const fontObj = this.commonObjs.get(fontRefName);\n    const current = this.current;\n    if (!fontObj) {\n      throw new Error(`Can't find font for ${fontRefName}`);\n    }\n    current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n      warn(\"Invalid font matrix for font \" + fontRefName);\n    }\n    if (size < 0) {\n      size = -size;\n      current.fontDirection = -1;\n    } else {\n      current.fontDirection = 1;\n    }\n    this.current.font = fontObj;\n    this.current.fontSize = size;\n    if (fontObj.isType3Font) {\n      return;\n    }\n    const name = fontObj.loadedName || \"sans-serif\";\n    const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n    let bold = \"normal\";\n    if (fontObj.black) {\n      bold = \"900\";\n    } else if (fontObj.bold) {\n      bold = \"bold\";\n    }\n    const italic = fontObj.italic ? \"italic\" : \"normal\";\n    let browserFontSize = size;\n    if (size < MIN_FONT_SIZE) {\n      browserFontSize = MIN_FONT_SIZE;\n    } else if (size > MAX_FONT_SIZE) {\n      browserFontSize = MAX_FONT_SIZE;\n    }\n    this.current.fontSizeScale = size / browserFontSize;\n    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n  }\n  setTextRenderingMode(mode) {\n    this.current.textRenderingMode = mode;\n  }\n  setTextRise(rise) {\n    this.current.textRise = rise;\n  }\n  moveText(x, y) {\n    this.current.x = this.current.lineX += x;\n    this.current.y = this.current.lineY += y;\n  }\n  setLeadingMoveText(x, y) {\n    this.setLeading(-y);\n    this.moveText(x, y);\n  }\n  setTextMatrix(a, b, c, d, e, f) {\n    this.current.textMatrix = [a, b, c, d, e, f];\n    this.current.textMatrixScale = Math.hypot(a, b);\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n  nextLine() {\n    this.moveText(0, this.current.leading);\n  }\n  paintChar(character, x, y, patternTransform) {\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const textRenderingMode = current.textRenderingMode;\n    const fontSize = current.fontSize / current.fontSizeScale;\n    const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n    const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n    const patternFill = current.patternFill && !font.missingFile;\n    let addToPath;\n    if (font.disableFontFace || isAddToPathSet || patternFill) {\n      addToPath = font.getPathGenerator(this.commonObjs, character);\n    }\n    if (font.disableFontFace || patternFill) {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.beginPath();\n      addToPath(ctx, fontSize);\n      if (patternTransform) {\n        ctx.setTransform(...patternTransform);\n      }\n      if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        ctx.fill();\n      }\n      if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        ctx.stroke();\n      }\n      ctx.restore();\n    } else {\n      if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        ctx.fillText(character, x, y);\n      }\n      if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        ctx.strokeText(character, x, y);\n      }\n    }\n    if (isAddToPathSet) {\n      const paths = this.pendingTextPaths ||= [];\n      paths.push({\n        transform: getCurrentTransform(ctx),\n        x,\n        y,\n        fontSize,\n        addToPath\n      });\n    }\n  }\n  get isFontSubpixelAAEnabled() {\n    const {\n      context: ctx\n    } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n    ctx.scale(1.5, 1);\n    ctx.fillText(\"I\", 0, 10);\n    const data = ctx.getImageData(0, 0, 10, 10).data;\n    let enabled = false;\n    for (let i = 3; i < data.length; i += 4) {\n      if (data[i] > 0 && data[i] < 255) {\n        enabled = true;\n        break;\n      }\n    }\n    return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n  }\n  showText(glyphs) {\n    const current = this.current;\n    const font = current.font;\n    if (font.isType3Font) {\n      return this.showType3Text(glyphs);\n    }\n    const fontSize = current.fontSize;\n    if (fontSize === 0) {\n      return undefined;\n    }\n    const ctx = this.ctx;\n    const fontSizeScale = current.fontSizeScale;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const fontDirection = current.fontDirection;\n    const textHScale = current.textHScale * fontDirection;\n    const glyphsLength = glyphs.length;\n    const vertical = font.vertical;\n    const spacingDir = vertical ? 1 : -1;\n    const defaultVMetrics = font.defaultVMetrics;\n    const widthAdvanceScale = fontSize * current.fontMatrix[0];\n    const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y + current.textRise);\n    if (fontDirection > 0) {\n      ctx.scale(textHScale, -1);\n    } else {\n      ctx.scale(textHScale, 1);\n    }\n    let patternTransform;\n    if (current.patternFill) {\n      ctx.save();\n      const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n      patternTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.fillStyle = pattern;\n    }\n    let lineWidth = current.lineWidth;\n    const scale = current.textMatrixScale;\n    if (scale === 0 || lineWidth === 0) {\n      const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n      if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        lineWidth = this.getSinglePixelWidth();\n      }\n    } else {\n      lineWidth /= scale;\n    }\n    if (fontSizeScale !== 1.0) {\n      ctx.scale(fontSizeScale, fontSizeScale);\n      lineWidth /= fontSizeScale;\n    }\n    ctx.lineWidth = lineWidth;\n    if (font.isInvalidPDFjsFont) {\n      const chars = [];\n      let width = 0;\n      for (const glyph of glyphs) {\n        chars.push(glyph.unicode);\n        width += glyph.width;\n      }\n      ctx.fillText(chars.join(\"\"), 0, 0);\n      current.x += width * widthAdvanceScale * textHScale;\n      ctx.restore();\n      this.compose();\n      return undefined;\n    }\n    let x = 0,\n      i;\n    for (i = 0; i < glyphsLength; ++i) {\n      const glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        x += spacingDir * glyph * fontSize / 1000;\n        continue;\n      }\n      let restoreNeeded = false;\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const character = glyph.fontChar;\n      const accent = glyph.accent;\n      let scaledX, scaledY;\n      let width = glyph.width;\n      if (vertical) {\n        const vmetric = glyph.vmetric || defaultVMetrics;\n        const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n        const vy = vmetric[2] * widthAdvanceScale;\n        width = vmetric ? -vmetric[0] : width;\n        scaledX = vx / fontSizeScale;\n        scaledY = (x + vy) / fontSizeScale;\n      } else {\n        scaledX = x / fontSizeScale;\n        scaledY = 0;\n      }\n      if (font.remeasure && width > 0) {\n        const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n        if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n          const characterScaleX = width / measuredWidth;\n          restoreNeeded = true;\n          ctx.save();\n          ctx.scale(characterScaleX, 1);\n          scaledX /= characterScaleX;\n        } else if (width !== measuredWidth) {\n          scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n        }\n      }\n      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n        if (simpleFillText && !accent) {\n          ctx.fillText(character, scaledX, scaledY);\n        } else {\n          this.paintChar(character, scaledX, scaledY, patternTransform);\n          if (accent) {\n            const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n            const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n            this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n          }\n        }\n      }\n      const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n      x += charWidth;\n      if (restoreNeeded) {\n        ctx.restore();\n      }\n    }\n    if (vertical) {\n      current.y -= x;\n    } else {\n      current.x += x * textHScale;\n    }\n    ctx.restore();\n    this.compose();\n    return undefined;\n  }\n  showType3Text(glyphs) {\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const fontSize = current.fontSize;\n    const fontDirection = current.fontDirection;\n    const spacingDir = font.vertical ? 1 : -1;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const textHScale = current.textHScale * fontDirection;\n    const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n    const glyphsLength = glyphs.length;\n    const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n    let i, glyph, width, spacingLength;\n    if (isTextInvisible || fontSize === 0) {\n      return;\n    }\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n    ctx.save();\n    ctx.transform(...current.textMatrix);\n    ctx.translate(current.x, current.y);\n    ctx.scale(textHScale, fontDirection);\n    for (i = 0; i < glyphsLength; ++i) {\n      glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        spacingLength = spacingDir * glyph * fontSize / 1000;\n        this.ctx.translate(spacingLength, 0);\n        current.x += spacingLength * textHScale;\n        continue;\n      }\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const operatorList = font.charProcOperatorList[glyph.operatorListId];\n      if (!operatorList) {\n        warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n        continue;\n      }\n      if (this.contentVisible) {\n        this.processingType3 = glyph;\n        this.save();\n        ctx.scale(fontSize, fontSize);\n        ctx.transform(...fontMatrix);\n        this.executeOperatorList(operatorList);\n        this.restore();\n      }\n      const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n      width = transformed[0] * fontSize + spacing;\n      ctx.translate(width, 0);\n      current.x += width * textHScale;\n    }\n    ctx.restore();\n    this.processingType3 = null;\n  }\n  setCharWidth(xWidth, yWidth) {}\n  setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n    this.ctx.rect(llx, lly, urx - llx, ury - lly);\n    this.ctx.clip();\n    this.endPath();\n  }\n  getColorN_Pattern(IR) {\n    let pattern;\n    if (IR[0] === \"TilingPattern\") {\n      const color = IR[1];\n      const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n      const canvasGraphicsFactory = {\n        createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n          optionalContentConfig: this.optionalContentConfig,\n          markedContentStack: this.markedContentStack\n        })\n      };\n      pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n    } else {\n      pattern = this._getPattern(IR[1], IR[2]);\n    }\n    return pattern;\n  }\n  setStrokeColorN() {\n    this.current.strokeColor = this.getColorN_Pattern(arguments);\n  }\n  setFillColorN() {\n    this.current.fillColor = this.getColorN_Pattern(arguments);\n    this.current.patternFill = true;\n  }\n  setStrokeRGBColor(r, g, b) {\n    this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(r, g, b);\n  }\n  setStrokeTransparent() {\n    this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n  }\n  setFillRGBColor(r, g, b) {\n    this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);\n    this.current.patternFill = false;\n  }\n  setFillTransparent() {\n    this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n    this.current.patternFill = false;\n  }\n  _getPattern(objId, matrix = null) {\n    let pattern;\n    if (this.cachedPatterns.has(objId)) {\n      pattern = this.cachedPatterns.get(objId);\n    } else {\n      pattern = getShadingPattern(this.getObject(objId));\n      this.cachedPatterns.set(objId, pattern);\n    }\n    if (matrix) {\n      pattern.matrix = matrix;\n    }\n    return pattern;\n  }\n  shadingFill(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    this.save();\n    const pattern = this._getPattern(objId);\n    ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n    const inv = getCurrentTransformInverse(ctx);\n    if (inv) {\n      const {\n        width,\n        height\n      } = ctx.canvas;\n      const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n    } else {\n      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n    }\n    this.compose(this.current.getClippedPathBoundingBox());\n    this.restore();\n  }\n  beginInlineImage() {\n    unreachable(\"Should not call beginInlineImage\");\n  }\n  beginImageData() {\n    unreachable(\"Should not call beginImageData\");\n  }\n  paintFormXObjectBegin(matrix, bbox) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.save();\n    this.baseTransformStack.push(this.baseTransform);\n    if (matrix) {\n      this.transform(...matrix);\n    }\n    this.baseTransform = getCurrentTransform(this.ctx);\n    if (bbox) {\n      const width = bbox[2] - bbox[0];\n      const height = bbox[3] - bbox[1];\n      this.ctx.rect(bbox[0], bbox[1], width, height);\n      this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n      this.clip();\n      this.endPath();\n    }\n  }\n  paintFormXObjectEnd() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.restore();\n    this.baseTransform = this.baseTransformStack.pop();\n  }\n  beginGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.save();\n    if (this.inSMaskMode) {\n      this.endSMaskMode();\n      this.current.activeSMask = null;\n    }\n    const currentCtx = this.ctx;\n    if (!group.isolated) {\n      info(\"TODO: Support non-isolated groups.\");\n    }\n    if (group.knockout) {\n      warn(\"Knockout groups not supported.\");\n    }\n    const currentTransform = getCurrentTransform(currentCtx);\n    if (group.matrix) {\n      currentCtx.transform(...group.matrix);\n    }\n    if (!group.bbox) {\n      throw new Error(\"Bounding box is required.\");\n    }\n    let bounds = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\n    const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n    bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n    const offsetX = Math.floor(bounds[0]);\n    const offsetY = Math.floor(bounds[1]);\n    const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n    const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n    let cacheId = \"groupAt\" + this.groupLevel;\n    if (group.smask) {\n      cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n    }\n    const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n    const groupCtx = scratchCanvas.context;\n    groupCtx.translate(-offsetX, -offsetY);\n    groupCtx.transform(...currentTransform);\n    if (group.smask) {\n      this.smaskStack.push({\n        canvas: scratchCanvas.canvas,\n        context: groupCtx,\n        offsetX,\n        offsetY,\n        subtype: group.smask.subtype,\n        backdrop: group.smask.backdrop,\n        transferMap: group.smask.transferMap || null,\n        startTransformInverse: null\n      });\n    } else {\n      currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n      currentCtx.translate(offsetX, offsetY);\n      currentCtx.save();\n    }\n    copyCtxState(currentCtx, groupCtx);\n    this.ctx = groupCtx;\n    this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n    this.groupStack.push(currentCtx);\n    this.groupLevel++;\n  }\n  endGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.groupLevel--;\n    const groupCtx = this.ctx;\n    const ctx = this.groupStack.pop();\n    this.ctx = ctx;\n    this.ctx.imageSmoothingEnabled = false;\n    if (group.smask) {\n      this.tempSMask = this.smaskStack.pop();\n      this.restore();\n    } else {\n      this.ctx.restore();\n      const currentMtx = getCurrentTransform(this.ctx);\n      this.restore();\n      this.ctx.save();\n      this.ctx.setTransform(...currentMtx);\n      const dirtyBox = Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n      this.ctx.drawImage(groupCtx.canvas, 0, 0);\n      this.ctx.restore();\n      this.compose(dirtyBox);\n    }\n  }\n  beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n    this.#restoreInitialState();\n    resetCtxToDefault(this.ctx);\n    this.ctx.save();\n    this.save();\n    if (this.baseTransform) {\n      this.ctx.setTransform(...this.baseTransform);\n    }\n    if (rect) {\n      const width = rect[2] - rect[0];\n      const height = rect[3] - rect[1];\n      if (hasOwnCanvas && this.annotationCanvasMap) {\n        transform = transform.slice();\n        transform[4] -= rect[0];\n        transform[5] -= rect[1];\n        rect = rect.slice();\n        rect[0] = rect[1] = 0;\n        rect[2] = width;\n        rect[3] = height;\n        const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\n        const {\n          viewportScale\n        } = this;\n        const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n        const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n        this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n        const {\n          canvas,\n          context\n        } = this.annotationCanvas;\n        this.annotationCanvasMap.set(id, canvas);\n        this.annotationCanvas.savedCtx = this.ctx;\n        this.ctx = context;\n        this.ctx.save();\n        this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n        resetCtxToDefault(this.ctx);\n      } else {\n        resetCtxToDefault(this.ctx);\n        this.endPath();\n        this.ctx.rect(rect[0], rect[1], width, height);\n        this.ctx.clip();\n        this.ctx.beginPath();\n      }\n    }\n    this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n    this.transform(...transform);\n    this.transform(...matrix);\n  }\n  endAnnotation() {\n    if (this.annotationCanvas) {\n      this.ctx.restore();\n      this.#drawFilter();\n      this.ctx = this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas;\n    }\n  }\n  paintImageMaskXObject(img) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const count = img.count;\n    img = this.getObject(img.data, img);\n    img.count = count;\n    const ctx = this.ctx;\n    const glyph = this.processingType3;\n    if (glyph) {\n      if (glyph.compiled === undefined) {\n        glyph.compiled = compileType3Glyph(img);\n      }\n      if (glyph.compiled) {\n        glyph.compiled(ctx);\n        return;\n      }\n    }\n    const mask = this._createMaskCanvas(img);\n    const maskCanvas = mask.canvas;\n    ctx.save();\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n    ctx.restore();\n    this.compose();\n  }\n  paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n    img = this.getObject(img.data, img);\n    const ctx = this.ctx;\n    ctx.save();\n    const currentTransform = getCurrentTransform(ctx);\n    ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n    const mask = this._createMaskCanvas(img);\n    ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n      const [x, y] = Util.applyTransform([0, 0], trans);\n      ctx.drawImage(mask.canvas, x, y);\n    }\n    ctx.restore();\n    this.compose();\n  }\n  paintImageMaskXObjectGroup(images) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    for (const image of images) {\n      const {\n        data,\n        width,\n        height,\n        transform\n      } = image;\n      const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n      const maskCtx = maskCanvas.context;\n      maskCtx.save();\n      const img = this.getObject(data, image);\n      putBinaryImageMask(maskCtx, img);\n      maskCtx.globalCompositeOperation = \"source-in\";\n      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n      maskCtx.restore();\n      ctx.save();\n      ctx.transform(...transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n      ctx.restore();\n    }\n    this.compose();\n  }\n  paintImageXObject(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n    this.paintInlineImageXObject(imgData);\n  }\n  paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n    const width = imgData.width;\n    const height = imgData.height;\n    const map = [];\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      map.push({\n        transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n        x: 0,\n        y: 0,\n        w: width,\n        h: height\n      });\n    }\n    this.paintInlineImageXObjectGroup(imgData, map);\n  }\n  applyTransferMapsToCanvas(ctx) {\n    if (this.current.transferMaps !== \"none\") {\n      ctx.filter = this.current.transferMaps;\n      ctx.drawImage(ctx.canvas, 0, 0);\n      ctx.filter = \"none\";\n    }\n    return ctx.canvas;\n  }\n  applyTransferMapsToBitmap(imgData) {\n    if (this.current.transferMaps === \"none\") {\n      return imgData.bitmap;\n    }\n    const {\n      bitmap,\n      width,\n      height\n    } = imgData;\n    const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n    const tmpCtx = tmpCanvas.context;\n    tmpCtx.filter = this.current.transferMaps;\n    tmpCtx.drawImage(bitmap, 0, 0);\n    tmpCtx.filter = \"none\";\n    return tmpCanvas.canvas;\n  }\n  paintInlineImageXObject(imgData) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const width = imgData.width;\n    const height = imgData.height;\n    const ctx = this.ctx;\n    this.save();\n    if (!isNodeJS) {\n      const {\n        filter\n      } = ctx;\n      if (filter !== \"none\" && filter !== \"\") {\n        ctx.filter = \"none\";\n      }\n    }\n    ctx.scale(1 / width, -1 / height);\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = this.applyTransferMapsToBitmap(imgData);\n    } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n      imgToPaint = imgData;\n    } else {\n      const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n    const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n    drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n    this.compose();\n    this.restore();\n  }\n  paintInlineImageXObjectGroup(imgData, map) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = imgData.bitmap;\n    } else {\n      const w = imgData.width;\n      const h = imgData.height;\n      const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n    for (const entry of map) {\n      ctx.save();\n      ctx.transform(...entry.transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n      ctx.restore();\n    }\n    this.compose();\n  }\n  paintSolidColorImageMask() {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.ctx.fillRect(0, 0, 1, 1);\n    this.compose();\n  }\n  markPoint(tag) {}\n  markPointProps(tag, properties) {}\n  beginMarkedContent(tag) {\n    this.markedContentStack.push({\n      visible: true\n    });\n  }\n  beginMarkedContentProps(tag, properties) {\n    if (tag === \"OC\") {\n      this.markedContentStack.push({\n        visible: this.optionalContentConfig.isVisible(properties)\n      });\n    } else {\n      this.markedContentStack.push({\n        visible: true\n      });\n    }\n    this.contentVisible = this.isContentVisible();\n  }\n  endMarkedContent() {\n    this.markedContentStack.pop();\n    this.contentVisible = this.isContentVisible();\n  }\n  beginCompat() {}\n  endCompat() {}\n  consumePath(clipBox) {\n    const isEmpty = this.current.isEmptyClip();\n    if (this.pendingClip) {\n      this.current.updateClipFromPath();\n    }\n    if (!this.pendingClip) {\n      this.compose(clipBox);\n    }\n    const ctx = this.ctx;\n    if (this.pendingClip) {\n      if (!isEmpty) {\n        if (this.pendingClip === EO_CLIP) {\n          ctx.clip(\"evenodd\");\n        } else {\n          ctx.clip();\n        }\n      }\n      this.pendingClip = null;\n    }\n    this.current.startNewPathAndClipBox(this.current.clipBox);\n    ctx.beginPath();\n  }\n  getSinglePixelWidth() {\n    if (!this._cachedGetSinglePixelWidth) {\n      const m = getCurrentTransform(this.ctx);\n      if (m[1] === 0 && m[2] === 0) {\n        this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n      } else {\n        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n        const normX = Math.hypot(m[0], m[2]);\n        const normY = Math.hypot(m[1], m[3]);\n        this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n      }\n    }\n    return this._cachedGetSinglePixelWidth;\n  }\n  getScaleForStroking() {\n    if (this._cachedScaleForStroking[0] === -1) {\n      const {\n        lineWidth\n      } = this.current;\n      const {\n        a,\n        b,\n        c,\n        d\n      } = this.ctx.getTransform();\n      let scaleX, scaleY;\n      if (b === 0 && c === 0) {\n        const normX = Math.abs(a);\n        const normY = Math.abs(d);\n        if (normX === normY) {\n          if (lineWidth === 0) {\n            scaleX = scaleY = 1 / normX;\n          } else {\n            const scaledLineWidth = normX * lineWidth;\n            scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n          }\n        } else if (lineWidth === 0) {\n          scaleX = 1 / normX;\n          scaleY = 1 / normY;\n        } else {\n          const scaledXLineWidth = normX * lineWidth;\n          const scaledYLineWidth = normY * lineWidth;\n          scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n          scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n        }\n      } else {\n        const absDet = Math.abs(a * d - b * c);\n        const normX = Math.hypot(a, b);\n        const normY = Math.hypot(c, d);\n        if (lineWidth === 0) {\n          scaleX = normY / absDet;\n          scaleY = normX / absDet;\n        } else {\n          const baseArea = lineWidth * absDet;\n          scaleX = normY > baseArea ? normY / baseArea : 1;\n          scaleY = normX > baseArea ? normX / baseArea : 1;\n        }\n      }\n      this._cachedScaleForStroking[0] = scaleX;\n      this._cachedScaleForStroking[1] = scaleY;\n    }\n    return this._cachedScaleForStroking;\n  }\n  rescaleAndStroke(saveRestore) {\n    const {\n      ctx\n    } = this;\n    const {\n      lineWidth\n    } = this.current;\n    const [scaleX, scaleY] = this.getScaleForStroking();\n    ctx.lineWidth = lineWidth || 1;\n    if (scaleX === 1 && scaleY === 1) {\n      ctx.stroke();\n      return;\n    }\n    const dashes = ctx.getLineDash();\n    if (saveRestore) {\n      ctx.save();\n    }\n    ctx.scale(scaleX, scaleY);\n    if (dashes.length > 0) {\n      const scale = Math.max(scaleX, scaleY);\n      ctx.setLineDash(dashes.map(x => x / scale));\n      ctx.lineDashOffset /= scale;\n    }\n    ctx.stroke();\n    if (saveRestore) {\n      ctx.restore();\n    }\n  }\n  isContentVisible() {\n    for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n      if (!this.markedContentStack[i].visible) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\nfor (const op in OPS) {\n  if (CanvasGraphics.prototype[op] !== undefined) {\n    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n  }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n  static #port = null;\n  static #src = \"\";\n  static get workerPort() {\n    return this.#port;\n  }\n  static set workerPort(val) {\n    if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n      throw new Error(\"Invalid `workerPort` type.\");\n    }\n    this.#port = val;\n  }\n  static get workerSrc() {\n    return this.#src;\n  }\n  static set workerSrc(val) {\n    if (typeof val !== \"string\") {\n      throw new Error(\"Invalid `workerSrc` type.\");\n    }\n    this.#src = val;\n  }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2\n};\nconst StreamKind = {\n  UNKNOWN: 0,\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8\n};\nfunction wrapReason(reason) {\n  if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n    unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n  }\n  switch (reason.name) {\n    case \"AbortException\":\n      return new AbortException(reason.message);\n    case \"MissingPDFException\":\n      return new MissingPDFException(reason.message);\n    case \"PasswordException\":\n      return new PasswordException(reason.message, reason.code);\n    case \"UnexpectedResponseException\":\n      return new UnexpectedResponseException(reason.message, reason.status);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(reason.message, reason.details);\n    default:\n      return new UnknownErrorException(reason.message, reason.toString());\n  }\n}\nclass MessageHandler {\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n    this._onComObjOnMessage = event => {\n      const data = event.data;\n      if (data.targetName !== this.sourceName) {\n        return;\n      }\n      if (data.stream) {\n        this.#processStreamMessage(data);\n        return;\n      }\n      if (data.callback) {\n        const callbackId = data.callbackId;\n        const capability = this.callbackCapabilities[callbackId];\n        if (!capability) {\n          throw new Error(`Cannot resolve callback ${callbackId}`);\n        }\n        delete this.callbackCapabilities[callbackId];\n        if (data.callback === CallbackKind.DATA) {\n          capability.resolve(data.data);\n        } else if (data.callback === CallbackKind.ERROR) {\n          capability.reject(wrapReason(data.reason));\n        } else {\n          throw new Error(\"Unexpected callback case\");\n        }\n        return;\n      }\n      const action = this.actionHandler[data.action];\n      if (!action) {\n        throw new Error(`Unknown action from worker: ${data.action}`);\n      }\n      if (data.callbackId) {\n        const cbSourceName = this.sourceName;\n        const cbTargetName = data.sourceName;\n        new Promise(function (resolve) {\n          resolve(action(data.data));\n        }).then(function (result) {\n          comObj.postMessage({\n            sourceName: cbSourceName,\n            targetName: cbTargetName,\n            callback: CallbackKind.DATA,\n            callbackId: data.callbackId,\n            data: result\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName: cbSourceName,\n            targetName: cbTargetName,\n            callback: CallbackKind.ERROR,\n            callbackId: data.callbackId,\n            reason: wrapReason(reason)\n          });\n        });\n        return;\n      }\n      if (data.streamId) {\n        this.#createStreamSink(data);\n        return;\n      }\n      action(data.data);\n    };\n    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n  }\n  on(actionName, handler) {\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n  send(actionName, data, transfers) {\n    this.comObj.postMessage({\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data\n    }, transfers);\n  }\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = Promise.withResolvers();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this.comObj.postMessage({\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        callbackId,\n        data\n      }, transfers);\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++,\n      sourceName = this.sourceName,\n      targetName = this.targetName,\n      comObj = this.comObj;\n    return new ReadableStream({\n      start: controller => {\n        const startCapability = Promise.withResolvers();\n        this.streamControllers[streamId] = {\n          controller,\n          startCall: startCapability,\n          pullCall: null,\n          cancelCall: null,\n          isClosed: false\n        };\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          action: actionName,\n          streamId,\n          data,\n          desiredSize: controller.desiredSize\n        }, transfers);\n        return startCapability.promise;\n      },\n      pull: controller => {\n        const pullCapability = Promise.withResolvers();\n        this.streamControllers[streamId].pullCall = pullCapability;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.PULL,\n          streamId,\n          desiredSize: controller.desiredSize\n        });\n        return pullCapability.promise;\n      },\n      cancel: reason => {\n        assert(reason instanceof Error, \"cancel must have a valid reason\");\n        const cancelCapability = Promise.withResolvers();\n        this.streamControllers[streamId].cancelCall = cancelCapability;\n        this.streamControllers[streamId].isClosed = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CANCEL,\n          streamId,\n          reason: wrapReason(reason)\n        });\n        return cancelCapability.promise;\n      }\n    }, queueingStrategy);\n  }\n  #createStreamSink(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const self = this,\n      action = this.actionHandler[data.action];\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = Promise.withResolvers();\n          this.ready = this.sinkCapability.promise;\n        }\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ENQUEUE,\n          streamId,\n          chunk\n        }, transfers);\n      },\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId\n        });\n        delete self.streamSinks[streamId];\n      },\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason)\n        });\n      },\n      sinkCapability: Promise.withResolvers(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null\n    };\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    new Promise(function (resolve) {\n      resolve(action(data.data, streamSink));\n    }).then(function () {\n      comObj.postMessage({\n        sourceName,\n        targetName,\n        stream: StreamKind.START_COMPLETE,\n        streamId,\n        success: true\n      });\n    }, function (reason) {\n      comObj.postMessage({\n        sourceName,\n        targetName,\n        stream: StreamKind.START_COMPLETE,\n        streamId,\n        reason: wrapReason(reason)\n      });\n    });\n  }\n  #processStreamMessage(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const streamController = this.streamControllers[streamId],\n      streamSink = this.streamSinks[streamId];\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          streamController.startCall.resolve();\n        } else {\n          streamController.startCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          streamController.pullCall.resolve();\n        } else {\n          streamController.pullCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL:\n        if (!streamSink) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\n          });\n          break;\n        }\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n        streamSink.desiredSize = data.desiredSize;\n        new Promise(function (resolve) {\n          resolve(streamSink.onPull?.());\n        }).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            reason: wrapReason(reason)\n          });\n        });\n        break;\n      case StreamKind.ENQUEUE:\n        assert(streamController, \"enqueue should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(streamController, \"close should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.isClosed = true;\n        streamController.controller.close();\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(streamController, \"error should have stream controller\");\n        streamController.controller.error(wrapReason(data.reason));\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          streamController.cancelCall.resolve();\n        } else {\n          streamController.cancelCall.reject(wrapReason(data.reason));\n        }\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!streamSink) {\n          break;\n        }\n        new Promise(function (resolve) {\n          resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n        }).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL_COMPLETE,\n            streamId,\n            success: true\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL_COMPLETE,\n            streamId,\n            reason: wrapReason(reason)\n          });\n        });\n        streamSink.sinkCapability.reject(wrapReason(data.reason));\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n  async #deleteStreamController(streamController, streamId) {\n    await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n    delete this.streamControllers[streamId];\n  }\n  destroy() {\n    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n  }\n}\n\n;// ./src/display/metadata.js\n\nclass Metadata {\n  #metadataMap;\n  #data;\n  constructor({\n    parsedData,\n    rawData\n  }) {\n    this.#metadataMap = parsedData;\n    this.#data = rawData;\n  }\n  getRaw() {\n    return this.#data;\n  }\n  get(name) {\n    return this.#metadataMap.get(name) ?? null;\n  }\n  getAll() {\n    return objectFromMap(this.#metadataMap);\n  }\n  has(name) {\n    return this.#metadataMap.has(name);\n  }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n  #isDisplay = false;\n  #isPrint = false;\n  #userSet = false;\n  #visible = true;\n  constructor(renderingIntent, {\n    name,\n    intent,\n    usage\n  }) {\n    this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n    this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n    this.name = name;\n    this.intent = intent;\n    this.usage = usage;\n  }\n  get visible() {\n    if (this.#userSet) {\n      return this.#visible;\n    }\n    if (!this.#visible) {\n      return false;\n    }\n    const {\n      print,\n      view\n    } = this.usage;\n    if (this.#isDisplay) {\n      return view?.viewState !== \"OFF\";\n    } else if (this.#isPrint) {\n      return print?.printState !== \"OFF\";\n    }\n    return true;\n  }\n  _setVisible(internal, visible, userSet = false) {\n    if (internal !== INTERNAL) {\n      unreachable(\"Internal method `_setVisible` called.\");\n    }\n    this.#userSet = userSet;\n    this.#visible = visible;\n  }\n}\nclass OptionalContentConfig {\n  #cachedGetHash = null;\n  #groups = new Map();\n  #initialHash = null;\n  #order = null;\n  constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n    this.renderingIntent = renderingIntent;\n    this.name = null;\n    this.creator = null;\n    if (data === null) {\n      return;\n    }\n    this.name = data.name;\n    this.creator = data.creator;\n    this.#order = data.order;\n    for (const group of data.groups) {\n      this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n    }\n    if (data.baseState === \"OFF\") {\n      for (const group of this.#groups.values()) {\n        group._setVisible(INTERNAL, false);\n      }\n    }\n    for (const on of data.on) {\n      this.#groups.get(on)._setVisible(INTERNAL, true);\n    }\n    for (const off of data.off) {\n      this.#groups.get(off)._setVisible(INTERNAL, false);\n    }\n    this.#initialHash = this.getHash();\n  }\n  #evaluateVisibilityExpression(array) {\n    const length = array.length;\n    if (length < 2) {\n      return true;\n    }\n    const operator = array[0];\n    for (let i = 1; i < length; i++) {\n      const element = array[i];\n      let state;\n      if (Array.isArray(element)) {\n        state = this.#evaluateVisibilityExpression(element);\n      } else if (this.#groups.has(element)) {\n        state = this.#groups.get(element).visible;\n      } else {\n        warn(`Optional content group not found: ${element}`);\n        return true;\n      }\n      switch (operator) {\n        case \"And\":\n          if (!state) {\n            return false;\n          }\n          break;\n        case \"Or\":\n          if (state) {\n            return true;\n          }\n          break;\n        case \"Not\":\n          return !state;\n        default:\n          return true;\n      }\n    }\n    return operator === \"And\";\n  }\n  isVisible(group) {\n    if (this.#groups.size === 0) {\n      return true;\n    }\n    if (!group) {\n      info(\"Optional content group not defined.\");\n      return true;\n    }\n    if (group.type === \"OCG\") {\n      if (!this.#groups.has(group.id)) {\n        warn(`Optional content group not found: ${group.id}`);\n        return true;\n      }\n      return this.#groups.get(group.id).visible;\n    } else if (group.type === \"OCMD\") {\n      if (group.expression) {\n        return this.#evaluateVisibilityExpression(group.expression);\n      }\n      if (!group.policy || group.policy === \"AnyOn\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOn\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      } else if (group.policy === \"AnyOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      }\n      warn(`Unknown optional content policy ${group.policy}.`);\n      return true;\n    }\n    warn(`Unknown group type ${group.type}.`);\n    return true;\n  }\n  setVisibility(id, visible = true) {\n    const group = this.#groups.get(id);\n    if (!group) {\n      warn(`Optional content group not found: ${id}`);\n      return;\n    }\n    group._setVisible(INTERNAL, !!visible, true);\n    this.#cachedGetHash = null;\n  }\n  setOCGState({\n    state,\n    preserveRB\n  }) {\n    let operator;\n    for (const elem of state) {\n      switch (elem) {\n        case \"ON\":\n        case \"OFF\":\n        case \"Toggle\":\n          operator = elem;\n          continue;\n      }\n      const group = this.#groups.get(elem);\n      if (!group) {\n        continue;\n      }\n      switch (operator) {\n        case \"ON\":\n          group._setVisible(INTERNAL, true);\n          break;\n        case \"OFF\":\n          group._setVisible(INTERNAL, false);\n          break;\n        case \"Toggle\":\n          group._setVisible(INTERNAL, !group.visible);\n          break;\n      }\n    }\n    this.#cachedGetHash = null;\n  }\n  get hasInitialVisibility() {\n    return this.#initialHash === null || this.getHash() === this.#initialHash;\n  }\n  getOrder() {\n    if (!this.#groups.size) {\n      return null;\n    }\n    if (this.#order) {\n      return this.#order.slice();\n    }\n    return [...this.#groups.keys()];\n  }\n  getGroups() {\n    return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n  }\n  getGroup(id) {\n    return this.#groups.get(id) || null;\n  }\n  getHash() {\n    if (this.#cachedGetHash !== null) {\n      return this.#cachedGetHash;\n    }\n    const hash = new MurmurHash3_64();\n    for (const [id, group] of this.#groups) {\n      hash.update(`${id}:${group.visible}`);\n    }\n    return this.#cachedGetHash = hash.hexdigest();\n  }\n}\n\n;// ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n  constructor(pdfDataRangeTransport, {\n    disableRange = false,\n    disableStream = false\n  }) {\n    assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n    const {\n      length,\n      initialData,\n      progressiveDone,\n      contentDispositionFilename\n    } = pdfDataRangeTransport;\n    this._queuedChunks = [];\n    this._progressiveDone = progressiveDone;\n    this._contentDispositionFilename = contentDispositionFilename;\n    if (initialData?.length > 0) {\n      const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n      this._queuedChunks.push(buffer);\n    }\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\n    this._isStreamingSupported = !disableStream;\n    this._isRangeSupported = !disableRange;\n    this._contentLength = length;\n    this._fullRequestReader = null;\n    this._rangeReaders = [];\n    pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n      this._onReceiveData({\n        begin,\n        chunk\n      });\n    });\n    pdfDataRangeTransport.addProgressListener((loaded, total) => {\n      this._onProgress({\n        loaded,\n        total\n      });\n    });\n    pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n      this._onReceiveData({\n        chunk\n      });\n    });\n    pdfDataRangeTransport.addProgressiveDoneListener(() => {\n      this._onProgressiveDone();\n    });\n    pdfDataRangeTransport.transportReady();\n  }\n  _onReceiveData({\n    begin,\n    chunk\n  }) {\n    const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n    if (begin === undefined) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader._enqueue(buffer);\n      } else {\n        this._queuedChunks.push(buffer);\n      }\n    } else {\n      const found = this._rangeReaders.some(function (rangeReader) {\n        if (rangeReader._begin !== begin) {\n          return false;\n        }\n        rangeReader._enqueue(buffer);\n        return true;\n      });\n      assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n    }\n  }\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n  _onProgress(evt) {\n    if (evt.total === undefined) {\n      this._rangeReaders[0]?.onProgress?.({\n        loaded: evt.loaded\n      });\n    } else {\n      this._fullRequestReader?.onProgress?.({\n        loaded: evt.loaded,\n        total: evt.total\n      });\n    }\n  }\n  _onProgressiveDone() {\n    this._fullRequestReader?.progressiveDone();\n    this._progressiveDone = true;\n  }\n  _removeRangeReader(reader) {\n    const i = this._rangeReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeReaders.splice(i, 1);\n    }\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n    const queuedChunks = this._queuedChunks;\n    this._queuedChunks = null;\n    return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n  }\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n    this._pdfDataRangeTransport.requestDataRange(begin, end);\n    this._rangeReaders.push(reader);\n    return reader;\n  }\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n    this._pdfDataRangeTransport.abort();\n  }\n}\nclass PDFDataTransportStreamReader {\n  constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n    this._stream = stream;\n    this._done = progressiveDone || false;\n    this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n    this._queuedChunks = queuedChunks || [];\n    this._loaded = 0;\n    for (const chunk of this._queuedChunks) {\n      this._loaded += chunk.byteLength;\n    }\n    this._requests = [];\n    this._headersReady = Promise.resolve();\n    stream._fullRequestReader = this;\n    this.onProgress = null;\n  }\n  _enqueue(chunk) {\n    if (this._done) {\n      return;\n    }\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({\n        value: chunk,\n        done: false\n      });\n    } else {\n      this._queuedChunks.push(chunk);\n    }\n    this._loaded += chunk.byteLength;\n  }\n  get headersReady() {\n    return this._headersReady;\n  }\n  get filename() {\n    return this._filename;\n  }\n  get isRangeSupported() {\n    return this._stream._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._stream._isStreamingSupported;\n  }\n  get contentLength() {\n    return this._stream._contentLength;\n  }\n  async read() {\n    if (this._queuedChunks.length > 0) {\n      const chunk = this._queuedChunks.shift();\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n  }\n  progressiveDone() {\n    if (this._done) {\n      return;\n    }\n    this._done = true;\n  }\n}\nclass PDFDataTransportStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._begin = begin;\n    this._end = end;\n    this._queuedChunk = null;\n    this._requests = [];\n    this._done = false;\n    this.onProgress = null;\n  }\n  _enqueue(chunk) {\n    if (this._done) {\n      return;\n    }\n    if (this._requests.length === 0) {\n      this._queuedChunk = chunk;\n    } else {\n      const requestsCapability = this._requests.shift();\n      requestsCapability.resolve({\n        value: chunk,\n        done: false\n      });\n      for (const requestCapability of this._requests) {\n        requestCapability.resolve({\n          value: undefined,\n          done: true\n        });\n      }\n      this._requests.length = 0;\n    }\n    this._done = true;\n    this._stream._removeRangeReader(this);\n  }\n  get isStreamingSupported() {\n    return false;\n  }\n  async read() {\n    if (this._queuedChunk) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n    this._stream._removeRangeReader(this);\n  }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n  let needsEncodingFixup = true;\n  let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = unescape(filename);\n    filename = rfc5987decode(filename);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n  tmp = rfc2231getparam(contentDisposition);\n  if (tmp) {\n    const filename = rfc2047decode(tmp);\n    return fixupEncoding(filename);\n  }\n  tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n  function toParamRegExp(attributePattern, flags) {\n    return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n  }\n  function textdecode(encoding, value) {\n    if (encoding) {\n      if (!/^[\\x00-\\xFF]+$/.test(value)) {\n        return value;\n      }\n      try {\n        const decoder = new TextDecoder(encoding, {\n          fatal: true\n        });\n        const buffer = stringToBytes(value);\n        value = decoder.decode(buffer);\n        needsEncodingFixup = false;\n      } catch {}\n    }\n    return value;\n  }\n  function fixupEncoding(value) {\n    if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n      value = textdecode(\"utf-8\", value);\n      if (needsEncodingFixup) {\n        value = textdecode(\"iso-8859-1\", value);\n      }\n    }\n    return value;\n  }\n  function rfc2231getparam(contentDispositionStr) {\n    const matches = [];\n    let match;\n    const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n    while ((match = iter.exec(contentDispositionStr)) !== null) {\n      let [, n, quot, part] = match;\n      n = parseInt(n, 10);\n      if (n in matches) {\n        if (n === 0) {\n          break;\n        }\n        continue;\n      }\n      matches[n] = [quot, part];\n    }\n    const parts = [];\n    for (let n = 0; n < matches.length; ++n) {\n      if (!(n in matches)) {\n        break;\n      }\n      let [quot, part] = matches[n];\n      part = rfc2616unquote(part);\n      if (quot) {\n        part = unescape(part);\n        if (n === 0) {\n          part = rfc5987decode(part);\n        }\n      }\n      parts.push(part);\n    }\n    return parts.join(\"\");\n  }\n  function rfc2616unquote(value) {\n    if (value.startsWith('\"')) {\n      const parts = value.slice(1).split('\\\\\"');\n      for (let i = 0; i < parts.length; ++i) {\n        const quotindex = parts[i].indexOf('\"');\n        if (quotindex !== -1) {\n          parts[i] = parts[i].slice(0, quotindex);\n          parts.length = i + 1;\n        }\n        parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n      }\n      value = parts.join('\"');\n    }\n    return value;\n  }\n  function rfc5987decode(extvalue) {\n    const encodingend = extvalue.indexOf(\"'\");\n    if (encodingend === -1) {\n      return extvalue;\n    }\n    const encoding = extvalue.slice(0, encodingend);\n    const langvalue = extvalue.slice(encodingend + 1);\n    const value = langvalue.replace(/^[^']*'/, \"\");\n    return textdecode(encoding, value);\n  }\n  function rfc2047decode(value) {\n    if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n      return value;\n    }\n    return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n      if (encoding === \"q\" || encoding === \"Q\") {\n        text = text.replaceAll(\"_\", \" \");\n        text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n          return String.fromCharCode(parseInt(hex, 16));\n        });\n        return textdecode(charset, text);\n      }\n      try {\n        text = atob(text);\n      } catch {}\n      return textdecode(charset, text);\n    });\n  }\n  return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n  const headers = new Headers();\n  if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n    return headers;\n  }\n  for (const key in httpHeaders) {\n    const val = httpHeaders[key];\n    if (val !== undefined) {\n      headers.append(key, val);\n    }\n  }\n  return headers;\n}\nfunction validateRangeRequestCapabilities({\n  responseHeaders,\n  isHttp,\n  rangeChunkSize,\n  disableRange\n}) {\n  const returnValues = {\n    allowRangeRequests: false,\n    suggestedLength: undefined\n  };\n  const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n  if (!Number.isInteger(length)) {\n    return returnValues;\n  }\n  returnValues.suggestedLength = length;\n  if (length <= 2 * rangeChunkSize) {\n    return returnValues;\n  }\n  if (disableRange || !isHttp) {\n    return returnValues;\n  }\n  if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n    return returnValues;\n  }\n  const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n  if (contentEncoding !== \"identity\") {\n    return returnValues;\n  }\n  returnValues.allowRangeRequests = true;\n  return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n  const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n  if (contentDisposition) {\n    let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n    if (filename.includes(\"%\")) {\n      try {\n        filename = decodeURIComponent(filename);\n      } catch {}\n    }\n    if (isPdfFile(filename)) {\n      return filename;\n    }\n  }\n  return null;\n}\nfunction createResponseStatusError(status, url) {\n  if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n    return new MissingPDFException('Missing PDF \"' + url + '\".');\n  }\n  return new UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\nfunction validateResponseStatus(status) {\n  return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n  return {\n    method: \"GET\",\n    headers,\n    signal: abortController.signal,\n    mode: \"cors\",\n    credentials: withCredentials ? \"include\" : \"same-origin\",\n    redirect: \"follow\"\n  };\n}\nfunction getArrayBuffer(val) {\n  if (val instanceof Uint8Array) {\n    return val.buffer;\n  }\n  if (val instanceof ArrayBuffer) {\n    return val;\n  }\n  warn(`getArrayBuffer - unexpected data format: ${val}`);\n  return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n  constructor(source) {\n    this.source = source;\n    this.isHttp = /^https?:/i.test(source.url);\n    this.headers = createHeaders(this.isHttp, source.httpHeaders);\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFFetchStreamReader(this);\n    return this._fullRequestReader;\n  }\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFFetchStreamRangeReader(this, begin, end);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\nclass PDFFetchStreamReader {\n  constructor(stream) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    this._filename = null;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._contentLength = source.length;\n    this._headersCapability = Promise.withResolvers();\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n    this._abortController = new AbortController();\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    const headers = new Headers(stream.headers);\n    const url = source.url;\n    fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n      if (!validateResponseStatus(response.status)) {\n        throw createResponseStatusError(response.status, url);\n      }\n      this._reader = response.body.getReader();\n      this._headersCapability.resolve();\n      const responseHeaders = response.headers;\n      const {\n        allowRangeRequests,\n        suggestedLength\n      } = validateRangeRequestCapabilities({\n        responseHeaders,\n        isHttp: stream.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange\n      });\n      this._isRangeSupported = allowRangeRequests;\n      this._contentLength = suggestedLength || this._contentLength;\n      this._filename = extractFilenameFromHeader(responseHeaders);\n      if (!this._isStreamingSupported && this._isRangeSupported) {\n        this.cancel(new AbortException(\"Streaming is disabled.\"));\n      }\n    }).catch(this._headersCapability.reject);\n    this.onProgress = null;\n  }\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n  get filename() {\n    return this._filename;\n  }\n  get contentLength() {\n    return this._contentLength;\n  }\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._headersCapability.promise;\n    const {\n      value,\n      done\n    } = await this._reader.read();\n    if (done) {\n      return {\n        value,\n        done\n      };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength\n    });\n    return {\n      value: getArrayBuffer(value),\n      done: false\n    };\n  }\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\nclass PDFFetchStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._readCapability = Promise.withResolvers();\n    this._isStreamingSupported = !source.disableStream;\n    this._abortController = new AbortController();\n    const headers = new Headers(stream.headers);\n    headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n    const url = source.url;\n    fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n      if (!validateResponseStatus(response.status)) {\n        throw createResponseStatusError(response.status, url);\n      }\n      this._readCapability.resolve();\n      this._reader = response.body.getReader();\n    }).catch(this._readCapability.reject);\n    this.onProgress = null;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._readCapability.promise;\n    const {\n      value,\n      done\n    } = await this._reader.read();\n    if (done) {\n      return {\n        value,\n        done\n      };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({\n      loaded: this._loaded\n    });\n    return {\n      value: getArrayBuffer(value),\n      done: false\n    };\n  }\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\n\n;// ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n  const data = xhr.response;\n  if (typeof data !== \"string\") {\n    return data;\n  }\n  return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n  constructor({\n    url,\n    httpHeaders,\n    withCredentials\n  }) {\n    this.url = url;\n    this.isHttp = /^https?:/i.test(url);\n    this.headers = createHeaders(this.isHttp, httpHeaders);\n    this.withCredentials = withCredentials || false;\n    this.currXhrId = 0;\n    this.pendingRequests = Object.create(null);\n  }\n  requestRange(begin, end, listeners) {\n    const args = {\n      begin,\n      end\n    };\n    for (const prop in listeners) {\n      args[prop] = listeners[prop];\n    }\n    return this.request(args);\n  }\n  requestFull(listeners) {\n    return this.request(listeners);\n  }\n  request(args) {\n    const xhr = new XMLHttpRequest();\n    const xhrId = this.currXhrId++;\n    const pendingRequest = this.pendingRequests[xhrId] = {\n      xhr\n    };\n    xhr.open(\"GET\", this.url);\n    xhr.withCredentials = this.withCredentials;\n    for (const [key, val] of this.headers) {\n      xhr.setRequestHeader(key, val);\n    }\n    if (this.isHttp && \"begin\" in args && \"end\" in args) {\n      xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n      pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n    } else {\n      pendingRequest.expectedStatus = OK_RESPONSE;\n    }\n    xhr.responseType = \"arraybuffer\";\n    if (args.onError) {\n      xhr.onerror = function (evt) {\n        args.onError(xhr.status);\n      };\n    }\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\n    pendingRequest.onDone = args.onDone;\n    pendingRequest.onError = args.onError;\n    pendingRequest.onProgress = args.onProgress;\n    xhr.send(null);\n    return xhrId;\n  }\n  onProgress(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return;\n    }\n    pendingRequest.onProgress?.(evt);\n  }\n  onStateChange(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return;\n    }\n    const xhr = pendingRequest.xhr;\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n      pendingRequest.onHeadersReceived();\n      delete pendingRequest.onHeadersReceived;\n    }\n    if (xhr.readyState !== 4) {\n      return;\n    }\n    if (!(xhrId in this.pendingRequests)) {\n      return;\n    }\n    delete this.pendingRequests[xhrId];\n    if (xhr.status === 0 && this.isHttp) {\n      pendingRequest.onError?.(xhr.status);\n      return;\n    }\n    const xhrStatus = xhr.status || OK_RESPONSE;\n    const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n    if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n      pendingRequest.onError?.(xhr.status);\n      return;\n    }\n    const chunk = network_getArrayBuffer(xhr);\n    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n      const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n      const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n      pendingRequest.onDone({\n        begin: parseInt(matches[1], 10),\n        chunk\n      });\n    } else if (chunk) {\n      pendingRequest.onDone({\n        begin: 0,\n        chunk\n      });\n    } else {\n      pendingRequest.onError?.(xhr.status);\n    }\n  }\n  getRequestXhr(xhrId) {\n    return this.pendingRequests[xhrId].xhr;\n  }\n  isPendingRequest(xhrId) {\n    return xhrId in this.pendingRequests;\n  }\n  abortRequest(xhrId) {\n    const xhr = this.pendingRequests[xhrId].xhr;\n    delete this.pendingRequests[xhrId];\n    xhr.abort();\n  }\n}\nclass PDFNetworkStream {\n  constructor(source) {\n    this._source = source;\n    this._manager = new NetworkManager(source);\n    this._rangeChunkSize = source.rangeChunkSize;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  _onRangeRequestReaderClosed(reader) {\n    const i = this._rangeRequestReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeRequestReaders.splice(i, 1);\n    }\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n    return this._fullRequestReader;\n  }\n  getRangeReader(begin, end) {\n    const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\nclass PDFNetworkStreamFullRequestReader {\n  constructor(manager, source) {\n    this._manager = manager;\n    const args = {\n      onHeadersReceived: this._onHeadersReceived.bind(this),\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this)\n    };\n    this._url = source.url;\n    this._fullRequestId = manager.requestFull(args);\n    this._headersCapability = Promise.withResolvers();\n    this._disableRange = source.disableRange || false;\n    this._contentLength = source.length;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n    this._isStreamingSupported = false;\n    this._isRangeSupported = false;\n    this._cachedChunks = [];\n    this._requests = [];\n    this._done = false;\n    this._storedError = undefined;\n    this._filename = null;\n    this.onProgress = null;\n  }\n  _onHeadersReceived() {\n    const fullRequestXhrId = this._fullRequestId;\n    const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n    const responseHeaders = new Headers(fullRequestXhr.getAllResponseHeaders().trim().split(/[\\r\\n]+/).map(x => {\n      const [key, ...val] = x.split(\": \");\n      return [key, val.join(\": \")];\n    }));\n    const {\n      allowRangeRequests,\n      suggestedLength\n    } = validateRangeRequestCapabilities({\n      responseHeaders,\n      isHttp: this._manager.isHttp,\n      rangeChunkSize: this._rangeChunkSize,\n      disableRange: this._disableRange\n    });\n    if (allowRangeRequests) {\n      this._isRangeSupported = true;\n    }\n    this._contentLength = suggestedLength || this._contentLength;\n    this._filename = extractFilenameFromHeader(responseHeaders);\n    if (this._isRangeSupported) {\n      this._manager.abortRequest(fullRequestXhrId);\n    }\n    this._headersCapability.resolve();\n  }\n  _onDone(data) {\n    if (data) {\n      if (this._requests.length > 0) {\n        const requestCapability = this._requests.shift();\n        requestCapability.resolve({\n          value: data.chunk,\n          done: false\n        });\n      } else {\n        this._cachedChunks.push(data.chunk);\n      }\n    }\n    this._done = true;\n    if (this._cachedChunks.length > 0) {\n      return;\n    }\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n  }\n  _onError(status) {\n    this._storedError = createResponseStatusError(status, this._url);\n    this._headersCapability.reject(this._storedError);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._cachedChunks.length = 0;\n  }\n  _onProgress(evt) {\n    this.onProgress?.({\n      loaded: evt.loaded,\n      total: evt.lengthComputable ? evt.total : this._contentLength\n    });\n  }\n  get filename() {\n    return this._filename;\n  }\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  get contentLength() {\n    return this._contentLength;\n  }\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._cachedChunks.length > 0) {\n      const chunk = this._cachedChunks.shift();\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    this._headersCapability.reject(reason);\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._fullRequestId)) {\n      this._manager.abortRequest(this._fullRequestId);\n    }\n    this._fullRequestReader = null;\n  }\n}\nclass PDFNetworkStreamRangeRequestReader {\n  constructor(manager, begin, end) {\n    this._manager = manager;\n    const args = {\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this)\n    };\n    this._url = manager.url;\n    this._requestId = manager.requestRange(begin, end, args);\n    this._requests = [];\n    this._queuedChunk = null;\n    this._done = false;\n    this._storedError = undefined;\n    this.onProgress = null;\n    this.onClosed = null;\n  }\n  _close() {\n    this.onClosed?.(this);\n  }\n  _onDone(data) {\n    const chunk = data.chunk;\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({\n        value: chunk,\n        done: false\n      });\n    } else {\n      this._queuedChunk = chunk;\n    }\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n    this._close();\n  }\n  _onError(status) {\n    this._storedError = createResponseStatusError(status, this._url);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._queuedChunk = null;\n  }\n  _onProgress(evt) {\n    if (!this.isStreamingSupported) {\n      this.onProgress?.({\n        loaded: evt.loaded\n      });\n    }\n  }\n  get isStreamingSupported() {\n    return false;\n  }\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._queuedChunk !== null) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._requestId)) {\n      this._manager.abortRequest(this._requestId);\n    }\n    this._close();\n  }\n}\n\n;// ./src/display/node_stream.js\n\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n  if (urlRegex.test(sourceUrl)) {\n    return new URL(sourceUrl);\n  }\n  const url = NodePackages.get(\"url\");\n  return new URL(url.pathToFileURL(sourceUrl));\n}\nfunction createRequest(url, headers, callback) {\n  if (url.protocol === \"http:\") {\n    const http = NodePackages.get(\"http\");\n    return http.request(url, {\n      headers\n    }, callback);\n  }\n  const https = NodePackages.get(\"https\");\n  return https.request(url, {\n    headers\n  }, callback);\n}\nclass PDFNodeStream {\n  constructor(source) {\n    this.source = source;\n    this.url = parseUrlOrPath(source.url);\n    this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n    this.isFsUrl = this.url.protocol === \"file:\";\n    this.headers = createHeaders(this.isHttp, source.httpHeaders);\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n    this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n    return this._fullRequestReader;\n  }\n  getRangeReader(start, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n    this._rangeRequestReaders.push(rangeReader);\n    return rangeReader;\n  }\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\nclass BaseFullReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    const source = stream.source;\n    this._contentLength = source.length;\n    this._loaded = 0;\n    this._filename = null;\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    this._readableStream = null;\n    this._readCapability = Promise.withResolvers();\n    this._headersCapability = Promise.withResolvers();\n  }\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n  get filename() {\n    return this._filename;\n  }\n  get contentLength() {\n    return this._contentLength;\n  }\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = Promise.withResolvers();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength\n    });\n    const buffer = new Uint8Array(chunk).buffer;\n    return {\n      value: buffer,\n      done: false\n    };\n  }\n  cancel(reason) {\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"end\", () => {\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n    if (!this._isStreamingSupported && this._isRangeSupported) {\n      this._error(new AbortException(\"streaming is disabled\"));\n    }\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\nclass BaseRangeReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    this._loaded = 0;\n    this._readableStream = null;\n    this._readCapability = Promise.withResolvers();\n    const source = stream.source;\n    this._isStreamingSupported = !source.disableStream;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = Promise.withResolvers();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({\n      loaded: this._loaded\n    });\n    const buffer = new Uint8Array(chunk).buffer;\n    return {\n      value: buffer,\n      done: false\n    };\n  }\n  cancel(reason) {\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"end\", () => {\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\nclass PDFNodeStreamFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n    const headers = Object.fromEntries(stream.headers);\n    const handleResponse = response => {\n      if (response.statusCode === 404) {\n        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n        this._headersCapability.reject(error);\n        return;\n      }\n      this._headersCapability.resolve();\n      this._setReadableStream(response);\n      const responseHeaders = new Headers(this._readableStream.headers);\n      const {\n        allowRangeRequests,\n        suggestedLength\n      } = validateRangeRequestCapabilities({\n        responseHeaders,\n        isHttp: stream.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange\n      });\n      this._isRangeSupported = allowRangeRequests;\n      this._contentLength = suggestedLength || this._contentLength;\n      this._filename = extractFilenameFromHeader(responseHeaders);\n    };\n    this._request = createRequest(this._url, headers, handleResponse);\n    this._request.on(\"error\", reason => {\n      this._storedError = reason;\n      this._headersCapability.reject(reason);\n    });\n    this._request.end();\n  }\n}\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n    const headers = Object.fromEntries(stream.headers);\n    headers.Range = `bytes=${start}-${end - 1}`;\n    const handleResponse = response => {\n      if (response.statusCode === 404) {\n        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n        return;\n      }\n      this._setReadableStream(response);\n    };\n    this._request = createRequest(this._url, headers, handleResponse);\n    this._request.on(\"error\", reason => {\n      this._storedError = reason;\n    });\n    this._request.end();\n  }\n}\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n    const fs = NodePackages.get(\"fs\");\n    fs.promises.lstat(this._url).then(stat => {\n      this._contentLength = stat.size;\n      this._setReadableStream(fs.createReadStream(this._url));\n      this._headersCapability.resolve();\n    }, error => {\n      if (error.code === \"ENOENT\") {\n        error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n      }\n      this._storedError = error;\n      this._headersCapability.reject(error);\n    });\n  }\n}\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n    const fs = NodePackages.get(\"fs\");\n    this._setReadableStream(fs.createReadStream(this._url, {\n      start,\n      end: end - 1\n    }));\n  }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nclass TextLayer {\n  #capability = Promise.withResolvers();\n  #container = null;\n  #disableProcessItems = false;\n  #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n  #lang = null;\n  #layoutTextParams = null;\n  #pageHeight = 0;\n  #pageWidth = 0;\n  #reader = null;\n  #rootContainer = null;\n  #rotation = 0;\n  #scale = 0;\n  #styleCache = Object.create(null);\n  #textContentItemsStr = [];\n  #textContentSource = null;\n  #textDivs = [];\n  #textDivProperties = new WeakMap();\n  #transform = null;\n  static #ascentCache = new Map();\n  static #canvasContexts = new Map();\n  static #canvasCtxFonts = new WeakMap();\n  static #minFontSize = null;\n  static #pendingTextLayers = new Set();\n  constructor({\n    textContentSource,\n    container,\n    viewport\n  }) {\n    if (textContentSource instanceof ReadableStream) {\n      this.#textContentSource = textContentSource;\n    } else if (typeof textContentSource === \"object\") {\n      this.#textContentSource = new ReadableStream({\n        start(controller) {\n          controller.enqueue(textContentSource);\n          controller.close();\n        }\n      });\n    } else {\n      throw new Error('No \"textContentSource\" parameter specified.');\n    }\n    this.#container = this.#rootContainer = container;\n    this.#scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n    this.#rotation = viewport.rotation;\n    this.#layoutTextParams = {\n      div: null,\n      properties: null,\n      ctx: null\n    };\n    const {\n      pageWidth,\n      pageHeight,\n      pageX,\n      pageY\n    } = viewport.rawDims;\n    this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n    this.#pageWidth = pageWidth;\n    this.#pageHeight = pageHeight;\n    TextLayer.#ensureMinFontSizeComputed();\n    setLayerDimensions(container, viewport);\n    this.#capability.promise.finally(() => {\n      TextLayer.#pendingTextLayers.delete(this);\n      this.#layoutTextParams = null;\n      this.#styleCache = null;\n    }).catch(() => {});\n  }\n  static get fontFamilyMap() {\n    const {\n      isWindows,\n      isFirefox\n    } = util_FeatureTest.platform;\n    return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n  }\n  render() {\n    const pump = () => {\n      this.#reader.read().then(({\n        value,\n        done\n      }) => {\n        if (done) {\n          this.#capability.resolve();\n          return;\n        }\n        this.#lang ??= value.lang;\n        Object.assign(this.#styleCache, value.styles);\n        this.#processItems(value.items);\n        pump();\n      }, this.#capability.reject);\n    };\n    this.#reader = this.#textContentSource.getReader();\n    TextLayer.#pendingTextLayers.add(this);\n    pump();\n    return this.#capability.promise;\n  }\n  update({\n    viewport,\n    onBefore = null\n  }) {\n    const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n    const rotation = viewport.rotation;\n    if (rotation !== this.#rotation) {\n      onBefore?.();\n      this.#rotation = rotation;\n      setLayerDimensions(this.#rootContainer, {\n        rotation\n      });\n    }\n    if (scale !== this.#scale) {\n      onBefore?.();\n      this.#scale = scale;\n      const params = {\n        div: null,\n        properties: null,\n        ctx: TextLayer.#getCtx(this.#lang)\n      };\n      for (const div of this.#textDivs) {\n        params.properties = this.#textDivProperties.get(div);\n        params.div = div;\n        this.#layout(params);\n      }\n    }\n  }\n  cancel() {\n    const abortEx = new AbortException(\"TextLayer task cancelled.\");\n    this.#reader?.cancel(abortEx).catch(() => {});\n    this.#reader = null;\n    this.#capability.reject(abortEx);\n  }\n  get textDivs() {\n    return this.#textDivs;\n  }\n  get textContentItemsStr() {\n    return this.#textContentItemsStr;\n  }\n  #processItems(items) {\n    if (this.#disableProcessItems) {\n      return;\n    }\n    this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n    const textDivs = this.#textDivs,\n      textContentItemsStr = this.#textContentItemsStr;\n    for (const item of items) {\n      if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n        warn(\"Ignoring additional textDivs for performance reasons.\");\n        this.#disableProcessItems = true;\n        return;\n      }\n      if (item.str === undefined) {\n        if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n          const parent = this.#container;\n          this.#container = document.createElement(\"span\");\n          this.#container.classList.add(\"markedContent\");\n          if (item.id !== null) {\n            this.#container.setAttribute(\"id\", `${item.id}`);\n          }\n          parent.append(this.#container);\n        } else if (item.type === \"endMarkedContent\") {\n          this.#container = this.#container.parentNode;\n        }\n        continue;\n      }\n      textContentItemsStr.push(item.str);\n      this.#appendText(item);\n    }\n  }\n  #appendText(geom) {\n    const textDiv = document.createElement(\"span\");\n    const textDivProperties = {\n      angle: 0,\n      canvasWidth: 0,\n      hasText: geom.str !== \"\",\n      hasEOL: geom.hasEOL,\n      fontSize: 0\n    };\n    this.#textDivs.push(textDiv);\n    const tx = Util.transform(this.#transform, geom.transform);\n    let angle = Math.atan2(tx[1], tx[0]);\n    const style = this.#styleCache[geom.fontName];\n    if (style.vertical) {\n      angle += Math.PI / 2;\n    }\n    let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n    fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n    const fontHeight = Math.hypot(tx[2], tx[3]);\n    const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, this.#lang);\n    let left, top;\n    if (angle === 0) {\n      left = tx[4];\n      top = tx[5] - fontAscent;\n    } else {\n      left = tx[4] + fontAscent * Math.sin(angle);\n      top = tx[5] - fontAscent * Math.cos(angle);\n    }\n    const scaleFactorStr = \"calc(var(--scale-factor)*\";\n    const divStyle = textDiv.style;\n    if (this.#container === this.#rootContainer) {\n      divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n      divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n    } else {\n      divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n      divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n    }\n    divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n    divStyle.fontFamily = fontFamily;\n    textDivProperties.fontSize = fontHeight;\n    textDiv.setAttribute(\"role\", \"presentation\");\n    textDiv.textContent = geom.str;\n    textDiv.dir = geom.dir;\n    if (this.#fontInspectorEnabled) {\n      textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n    }\n    if (angle !== 0) {\n      textDivProperties.angle = angle * (180 / Math.PI);\n    }\n    let shouldScaleText = false;\n    if (geom.str.length > 1) {\n      shouldScaleText = true;\n    } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n      const absScaleX = Math.abs(geom.transform[0]),\n        absScaleY = Math.abs(geom.transform[3]);\n      if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n        shouldScaleText = true;\n      }\n    }\n    if (shouldScaleText) {\n      textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n    }\n    this.#textDivProperties.set(textDiv, textDivProperties);\n    this.#layoutTextParams.div = textDiv;\n    this.#layoutTextParams.properties = textDivProperties;\n    this.#layout(this.#layoutTextParams);\n    if (textDivProperties.hasText) {\n      this.#container.append(textDiv);\n    }\n    if (textDivProperties.hasEOL) {\n      const br = document.createElement(\"br\");\n      br.setAttribute(\"role\", \"presentation\");\n      this.#container.append(br);\n    }\n  }\n  #layout(params) {\n    const {\n      div,\n      properties,\n      ctx\n    } = params;\n    const {\n      style\n    } = div;\n    let transform = \"\";\n    if (TextLayer.#minFontSize > 1) {\n      transform = `scale(${1 / TextLayer.#minFontSize})`;\n    }\n    if (properties.canvasWidth !== 0 && properties.hasText) {\n      const {\n        fontFamily\n      } = style;\n      const {\n        canvasWidth,\n        fontSize\n      } = properties;\n      TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n      const {\n        width\n      } = ctx.measureText(div.textContent);\n      if (width > 0) {\n        transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n      }\n    }\n    if (properties.angle !== 0) {\n      transform = `rotate(${properties.angle}deg) ${transform}`;\n    }\n    if (transform.length > 0) {\n      style.transform = transform;\n    }\n  }\n  static cleanup() {\n    if (this.#pendingTextLayers.size > 0) {\n      return;\n    }\n    this.#ascentCache.clear();\n    for (const {\n      canvas\n    } of this.#canvasContexts.values()) {\n      canvas.remove();\n    }\n    this.#canvasContexts.clear();\n  }\n  static #getCtx(lang = null) {\n    let ctx = this.#canvasContexts.get(lang ||= \"\");\n    if (!ctx) {\n      const canvas = document.createElement(\"canvas\");\n      canvas.className = \"hiddenCanvasElement\";\n      canvas.lang = lang;\n      document.body.append(canvas);\n      ctx = canvas.getContext(\"2d\", {\n        alpha: false,\n        willReadFrequently: true\n      });\n      this.#canvasContexts.set(lang, ctx);\n      this.#canvasCtxFonts.set(ctx, {\n        size: 0,\n        family: \"\"\n      });\n    }\n    return ctx;\n  }\n  static #ensureCtxFont(ctx, size, family) {\n    const cached = this.#canvasCtxFonts.get(ctx);\n    if (size === cached.size && family === cached.family) {\n      return;\n    }\n    ctx.font = `${size}px ${family}`;\n    cached.size = size;\n    cached.family = family;\n  }\n  static #ensureMinFontSizeComputed() {\n    if (this.#minFontSize !== null) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    div.style.opacity = 0;\n    div.style.lineHeight = 1;\n    div.style.fontSize = \"1px\";\n    div.style.position = \"absolute\";\n    div.textContent = \"X\";\n    document.body.append(div);\n    this.#minFontSize = div.getBoundingClientRect().height;\n    div.remove();\n  }\n  static #getAscent(fontFamily, lang) {\n    const cachedAscent = this.#ascentCache.get(fontFamily);\n    if (cachedAscent) {\n      return cachedAscent;\n    }\n    const ctx = this.#getCtx(lang);\n    ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n    this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n    const metrics = ctx.measureText(\"\");\n    let ascent = metrics.fontBoundingBoxAscent;\n    let descent = Math.abs(metrics.fontBoundingBoxDescent);\n    if (ascent) {\n      const ratio = ascent / (ascent + descent);\n      this.#ascentCache.set(fontFamily, ratio);\n      ctx.canvas.width = ctx.canvas.height = 0;\n      return ratio;\n    }\n    ctx.strokeStyle = \"red\";\n    ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n    ctx.strokeText(\"g\", 0, 0);\n    let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n    descent = 0;\n    for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n      if (pixels[i] > 0) {\n        descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n        break;\n      }\n    }\n    ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n    ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n    pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n    ascent = 0;\n    for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n      if (pixels[i] > 0) {\n        ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n        break;\n      }\n    }\n    ctx.canvas.width = ctx.canvas.height = 0;\n    const ratio = ascent ? ascent / (ascent + descent) : DEFAULT_FONT_ASCENT;\n    this.#ascentCache.set(fontFamily, ratio);\n    return ratio;\n  }\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\n  static textContent(xfa) {\n    const items = [];\n    const output = {\n      items,\n      styles: Object.create(null)\n    };\n    function walk(node) {\n      if (!node) {\n        return;\n      }\n      let str = null;\n      const name = node.name;\n      if (name === \"#text\") {\n        str = node.value;\n      } else if (!XfaText.shouldBuildText(name)) {\n        return;\n      } else if (node?.attributes?.textContent) {\n        str = node.attributes.textContent;\n      } else if (node.value) {\n        str = node.value;\n      }\n      if (str !== null) {\n        items.push({\n          str\n        });\n      }\n      if (!node.children) {\n        return;\n      }\n      for (const child of node.children) {\n        walk(child);\n      }\n    }\n    walk(xfa);\n    return output;\n  }\n  static shouldBuildText(name) {\n    return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n  }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nconst DefaultCanvasFactory = isNodeJS ? NodeCanvasFactory : DOMCanvasFactory;\nconst DefaultCMapReaderFactory = isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory;\nconst DefaultFilterFactory = isNodeJS ? NodeFilterFactory : DOMFilterFactory;\nconst DefaultStandardFontDataFactory = isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory;\nfunction getDocument(src = {}) {\n  if (typeof src === \"string\" || src instanceof URL) {\n    src = {\n      url: src\n    };\n  } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n    src = {\n      data: src\n    };\n  }\n  const task = new PDFDocumentLoadingTask();\n  const {\n    docId\n  } = task;\n  const url = src.url ? getUrlProp(src.url) : null;\n  const data = src.data ? getDataProp(src.data) : null;\n  const httpHeaders = src.httpHeaders || null;\n  const withCredentials = src.withCredentials === true;\n  const password = src.password ?? null;\n  const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n  const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n  let worker = src.worker instanceof PDFWorker ? src.worker : null;\n  const verbosity = src.verbosity;\n  const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n  const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n  const cMapPacked = src.cMapPacked !== false;\n  const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n  const standardFontDataUrl = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n  const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n  const ignoreErrors = src.stopAtErrors !== true;\n  const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n  const isEvalSupported = src.isEvalSupported !== false;\n  const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n  const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n  const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n  const fontExtraProperties = src.fontExtraProperties === true;\n  const enableXfa = src.enableXfa === true;\n  const ownerDocument = src.ownerDocument || globalThis.document;\n  const disableRange = src.disableRange === true;\n  const disableStream = src.disableStream === true;\n  const disableAutoFetch = src.disableAutoFetch === true;\n  const pdfBug = src.pdfBug === true;\n  const CanvasFactory = src.CanvasFactory || DefaultCanvasFactory;\n  const FilterFactory = src.FilterFactory || DefaultFilterFactory;\n  const enableHWA = src.enableHWA === true;\n  const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n  const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n  const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI);\n  if (src.canvasFactory) {\n    deprecated(\"`canvasFactory`-instance option, please use `CanvasFactory` instead.\");\n  }\n  if (src.filterFactory) {\n    deprecated(\"`filterFactory`-instance option, please use `FilterFactory` instead.\");\n  }\n  const styleElement = null;\n  setVerbosityLevel(verbosity);\n  const transportFactory = {\n    canvasFactory: new CanvasFactory({\n      ownerDocument,\n      enableHWA\n    }),\n    filterFactory: new FilterFactory({\n      docId,\n      ownerDocument\n    }),\n    cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n      baseUrl: cMapUrl,\n      isCompressed: cMapPacked\n    }),\n    standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n      baseUrl: standardFontDataUrl\n    })\n  };\n  if (!worker) {\n    const workerParams = {\n      verbosity,\n      port: GlobalWorkerOptions.workerPort\n    };\n    worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n    task._worker = worker;\n  }\n  const docParams = {\n    docId,\n    apiVersion: \"4.7.76\",\n    data,\n    password,\n    disableAutoFetch,\n    rangeChunkSize,\n    length,\n    docBaseUrl,\n    enableXfa,\n    evaluatorOptions: {\n      maxImageSize,\n      disableFontFace,\n      ignoreErrors,\n      isEvalSupported,\n      isOffscreenCanvasSupported,\n      canvasMaxAreaInBytes,\n      fontExtraProperties,\n      useSystemFonts,\n      cMapUrl: useWorkerFetch ? cMapUrl : null,\n      standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n    }\n  };\n  const transportParams = {\n    disableFontFace,\n    fontExtraProperties,\n    ownerDocument,\n    pdfBug,\n    styleElement,\n    loadingParams: {\n      disableAutoFetch,\n      enableXfa\n    }\n  };\n  worker.promise.then(function () {\n    if (task.destroyed) {\n      throw new Error(\"Loading aborted\");\n    }\n    if (worker.destroyed) {\n      throw new Error(\"Worker was destroyed\");\n    }\n    const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n    let networkStream;\n    if (rangeTransport) {\n      networkStream = new PDFDataTransportStream(rangeTransport, {\n        disableRange,\n        disableStream\n      });\n    } else if (!data) {\n      if (!url) {\n        throw new Error(\"getDocument - no `url` parameter provided.\");\n      }\n      let NetworkStream;\n      if (isNodeJS) {\n        const isFetchSupported = typeof fetch !== \"undefined\" && typeof Response !== \"undefined\" && \"body\" in Response.prototype;\n        NetworkStream = isFetchSupported && isValidFetchUrl(url) ? PDFFetchStream : PDFNodeStream;\n      } else {\n        NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : PDFNetworkStream;\n      }\n      networkStream = new NetworkStream({\n        url,\n        length,\n        httpHeaders,\n        withCredentials,\n        rangeChunkSize,\n        disableRange,\n        disableStream\n      });\n    }\n    return workerIdPromise.then(workerId => {\n      if (task.destroyed) {\n        throw new Error(\"Loading aborted\");\n      }\n      if (worker.destroyed) {\n        throw new Error(\"Worker was destroyed\");\n      }\n      const messageHandler = new MessageHandler(docId, workerId, worker.port);\n      const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n      task._transport = transport;\n      messageHandler.send(\"Ready\", null);\n    });\n  }).catch(task._capability.reject);\n  return task;\n}\nfunction getUrlProp(val) {\n  if (val instanceof URL) {\n    return val.href;\n  }\n  try {\n    return new URL(val, window.location).href;\n  } catch {\n    if (isNodeJS && typeof val === \"string\") {\n      return val;\n    }\n  }\n  throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n  if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n    throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n  }\n  if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n    return val;\n  }\n  if (typeof val === \"string\") {\n    return stringToBytes(val);\n  }\n  if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n    return new Uint8Array(val);\n  }\n  throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction isRefProxy(ref) {\n  return typeof ref === \"object\" && Number.isInteger(ref?.num) && ref.num >= 0 && Number.isInteger(ref?.gen) && ref.gen >= 0;\n}\nclass PDFDocumentLoadingTask {\n  static #docId = 0;\n  constructor() {\n    this._capability = Promise.withResolvers();\n    this._transport = null;\n    this._worker = null;\n    this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n    this.destroyed = false;\n    this.onPassword = null;\n    this.onProgress = null;\n  }\n  get promise() {\n    return this._capability.promise;\n  }\n  async destroy() {\n    this.destroyed = true;\n    try {\n      if (this._worker?.port) {\n        this._worker._pendingDestroy = true;\n      }\n      await this._transport?.destroy();\n    } catch (ex) {\n      if (this._worker?.port) {\n        delete this._worker._pendingDestroy;\n      }\n      throw ex;\n    }\n    this._transport = null;\n    if (this._worker) {\n      this._worker.destroy();\n      this._worker = null;\n    }\n  }\n}\nclass PDFDataRangeTransport {\n  constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n    this.length = length;\n    this.initialData = initialData;\n    this.progressiveDone = progressiveDone;\n    this.contentDispositionFilename = contentDispositionFilename;\n    this._rangeListeners = [];\n    this._progressListeners = [];\n    this._progressiveReadListeners = [];\n    this._progressiveDoneListeners = [];\n    this._readyCapability = Promise.withResolvers();\n  }\n  addRangeListener(listener) {\n    this._rangeListeners.push(listener);\n  }\n  addProgressListener(listener) {\n    this._progressListeners.push(listener);\n  }\n  addProgressiveReadListener(listener) {\n    this._progressiveReadListeners.push(listener);\n  }\n  addProgressiveDoneListener(listener) {\n    this._progressiveDoneListeners.push(listener);\n  }\n  onDataRange(begin, chunk) {\n    for (const listener of this._rangeListeners) {\n      listener(begin, chunk);\n    }\n  }\n  onDataProgress(loaded, total) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressListeners) {\n        listener(loaded, total);\n      }\n    });\n  }\n  onDataProgressiveRead(chunk) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveReadListeners) {\n        listener(chunk);\n      }\n    });\n  }\n  onDataProgressiveDone() {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveDoneListeners) {\n        listener();\n      }\n    });\n  }\n  transportReady() {\n    this._readyCapability.resolve();\n  }\n  requestDataRange(begin, end) {\n    unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n  }\n  abort() {}\n}\nclass PDFDocumentProxy {\n  constructor(pdfInfo, transport) {\n    this._pdfInfo = pdfInfo;\n    this._transport = transport;\n  }\n  get annotationStorage() {\n    return this._transport.annotationStorage;\n  }\n  get canvasFactory() {\n    return this._transport.canvasFactory;\n  }\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n  get numPages() {\n    return this._pdfInfo.numPages;\n  }\n  get fingerprints() {\n    return this._pdfInfo.fingerprints;\n  }\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n  get allXfaHtml() {\n    return this._transport._htmlForXfa;\n  }\n  getPage(pageNumber) {\n    return this._transport.getPage(pageNumber);\n  }\n  getPageIndex(ref) {\n    return this._transport.getPageIndex(ref);\n  }\n  getDestinations() {\n    return this._transport.getDestinations();\n  }\n  getDestination(id) {\n    return this._transport.getDestination(id);\n  }\n  getPageLabels() {\n    return this._transport.getPageLabels();\n  }\n  getPageLayout() {\n    return this._transport.getPageLayout();\n  }\n  getPageMode() {\n    return this._transport.getPageMode();\n  }\n  getViewerPreferences() {\n    return this._transport.getViewerPreferences();\n  }\n  getOpenAction() {\n    return this._transport.getOpenAction();\n  }\n  getAttachments() {\n    return this._transport.getAttachments();\n  }\n  getJSActions() {\n    return this._transport.getDocJSActions();\n  }\n  getOutline() {\n    return this._transport.getOutline();\n  }\n  getOptionalContentConfig({\n    intent = \"display\"\n  } = {}) {\n    const {\n      renderingIntent\n    } = this._transport.getRenderingIntent(intent);\n    return this._transport.getOptionalContentConfig(renderingIntent);\n  }\n  getPermissions() {\n    return this._transport.getPermissions();\n  }\n  getMetadata() {\n    return this._transport.getMetadata();\n  }\n  getMarkInfo() {\n    return this._transport.getMarkInfo();\n  }\n  getData() {\n    return this._transport.getData();\n  }\n  saveDocument() {\n    return this._transport.saveDocument();\n  }\n  getDownloadInfo() {\n    return this._transport.downloadInfoCapability.promise;\n  }\n  cleanup(keepLoadedFonts = false) {\n    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n  }\n  destroy() {\n    return this.loadingTask.destroy();\n  }\n  cachedPageNumber(ref) {\n    return this._transport.cachedPageNumber(ref);\n  }\n  get loadingParams() {\n    return this._transport.loadingParams;\n  }\n  get loadingTask() {\n    return this._transport.loadingTask;\n  }\n  getFieldObjects() {\n    return this._transport.getFieldObjects();\n  }\n  hasJSActions() {\n    return this._transport.hasJSActions();\n  }\n  getCalculationOrderIds() {\n    return this._transport.getCalculationOrderIds();\n  }\n}\nclass PDFPageProxy {\n  #delayedCleanupTimeout = null;\n  #pendingCleanup = false;\n  constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n    this._pageIndex = pageIndex;\n    this._pageInfo = pageInfo;\n    this._transport = transport;\n    this._stats = pdfBug ? new StatTimer() : null;\n    this._pdfBug = pdfBug;\n    this.commonObjs = transport.commonObjs;\n    this.objs = new PDFObjects();\n    this._maybeCleanupAfterRender = false;\n    this._intentStates = new Map();\n    this.destroyed = false;\n  }\n  get pageNumber() {\n    return this._pageIndex + 1;\n  }\n  get rotate() {\n    return this._pageInfo.rotate;\n  }\n  get ref() {\n    return this._pageInfo.ref;\n  }\n  get userUnit() {\n    return this._pageInfo.userUnit;\n  }\n  get view() {\n    return this._pageInfo.view;\n  }\n  getViewport({\n    scale,\n    rotation = this.rotate,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.view,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip\n    });\n  }\n  getAnnotations({\n    intent = \"display\"\n  } = {}) {\n    const {\n      renderingIntent\n    } = this._transport.getRenderingIntent(intent);\n    return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n  }\n  getJSActions() {\n    return this._transport.getPageJSActions(this._pageIndex);\n  }\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n  async getXfa() {\n    return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n  }\n  render({\n    canvasContext,\n    viewport,\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    transform = null,\n    background = null,\n    optionalContentConfigPromise = null,\n    annotationCanvasMap = null,\n    pageColors = null,\n    printAnnotationStorage = null,\n    isEditing = false\n  }) {\n    this._stats?.time(\"Overall\");\n    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n    const {\n      renderingIntent,\n      cacheKey\n    } = intentArgs;\n    this.#pendingCleanup = false;\n    this.#abortDelayedCleanup();\n    optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n    let intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(cacheKey, intentState);\n    }\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n    const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n    if (!intentState.displayReadyCapability) {\n      intentState.displayReadyCapability = Promise.withResolvers();\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null\n      };\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n    const complete = error => {\n      intentState.renderTasks.delete(internalRenderTask);\n      if (this._maybeCleanupAfterRender || intentPrint) {\n        this.#pendingCleanup = true;\n      }\n      this.#tryCleanup(!intentPrint);\n      if (error) {\n        internalRenderTask.capability.reject(error);\n        this._abortOperatorList({\n          intentState,\n          reason: error instanceof Error ? error : new Error(error)\n        });\n      } else {\n        internalRenderTask.capability.resolve();\n      }\n      if (this._stats) {\n        this._stats.timeEnd(\"Rendering\");\n        this._stats.timeEnd(\"Overall\");\n        if (globalThis.Stats?.enabled) {\n          globalThis.Stats.add(this.pageNumber, this._stats);\n        }\n      }\n    };\n    const internalRenderTask = new InternalRenderTask({\n      callback: complete,\n      params: {\n        canvasContext,\n        viewport,\n        transform,\n        background\n      },\n      objs: this.objs,\n      commonObjs: this.commonObjs,\n      annotationCanvasMap,\n      operatorList: intentState.operatorList,\n      pageIndex: this._pageIndex,\n      canvasFactory: this._transport.canvasFactory,\n      filterFactory: this._transport.filterFactory,\n      useRequestAnimationFrame: !intentPrint,\n      pdfBug: this._pdfBug,\n      pageColors\n    });\n    (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n    const renderTask = internalRenderTask.task;\n    Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n      if (this.destroyed) {\n        complete();\n        return;\n      }\n      this._stats?.time(\"Rendering\");\n      if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n        throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n      }\n      internalRenderTask.initializeGraphics({\n        transparency,\n        optionalContentConfig\n      });\n      internalRenderTask.operatorListChanged();\n    }).catch(complete);\n    return renderTask;\n  }\n  getOperatorList({\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n    isEditing = false\n  } = {}) {\n    function operatorListChanged() {\n      if (intentState.operatorList.lastChunk) {\n        intentState.opListReadCapability.resolve(intentState.operatorList);\n        intentState.renderTasks.delete(opListTask);\n      }\n    }\n    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(intentArgs.cacheKey, intentState);\n    }\n    let opListTask;\n    if (!intentState.opListReadCapability) {\n      opListTask = Object.create(null);\n      opListTask.operatorListChanged = operatorListChanged;\n      intentState.opListReadCapability = Promise.withResolvers();\n      (intentState.renderTasks ||= new Set()).add(opListTask);\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null\n      };\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n    return intentState.opListReadCapability.promise;\n  }\n  streamTextContent({\n    includeMarkedContent = false,\n    disableNormalization = false\n  } = {}) {\n    const TEXT_CONTENT_CHUNK_SIZE = 100;\n    return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n      pageIndex: this._pageIndex,\n      includeMarkedContent: includeMarkedContent === true,\n      disableNormalization: disableNormalization === true\n    }, {\n      highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n      size(textContent) {\n        return textContent.items.length;\n      }\n    });\n  }\n  getTextContent(params = {}) {\n    if (this._transport._htmlForXfa) {\n      return this.getXfa().then(xfa => XfaText.textContent(xfa));\n    }\n    const readableStream = this.streamTextContent(params);\n    return new Promise(function (resolve, reject) {\n      function pump() {\n        reader.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            resolve(textContent);\n            return;\n          }\n          textContent.lang ??= value.lang;\n          Object.assign(textContent.styles, value.styles);\n          textContent.items.push(...value.items);\n          pump();\n        }, reject);\n      }\n      const reader = readableStream.getReader();\n      const textContent = {\n        items: [],\n        styles: Object.create(null),\n        lang: null\n      };\n      pump();\n    });\n  }\n  getStructTree() {\n    return this._transport.getStructTree(this._pageIndex);\n  }\n  _destroy() {\n    this.destroyed = true;\n    const waitOn = [];\n    for (const intentState of this._intentStates.values()) {\n      this._abortOperatorList({\n        intentState,\n        reason: new Error(\"Page was destroyed.\"),\n        force: true\n      });\n      if (intentState.opListReadCapability) {\n        continue;\n      }\n      for (const internalRenderTask of intentState.renderTasks) {\n        waitOn.push(internalRenderTask.completed);\n        internalRenderTask.cancel();\n      }\n    }\n    this.objs.clear();\n    this.#pendingCleanup = false;\n    this.#abortDelayedCleanup();\n    return Promise.all(waitOn);\n  }\n  cleanup(resetStats = false) {\n    this.#pendingCleanup = true;\n    const success = this.#tryCleanup(false);\n    if (resetStats && success) {\n      this._stats &&= new StatTimer();\n    }\n    return success;\n  }\n  #tryCleanup(delayed = false) {\n    this.#abortDelayedCleanup();\n    if (!this.#pendingCleanup || this.destroyed) {\n      return false;\n    }\n    if (delayed) {\n      this.#delayedCleanupTimeout = setTimeout(() => {\n        this.#delayedCleanupTimeout = null;\n        this.#tryCleanup(false);\n      }, DELAYED_CLEANUP_TIMEOUT);\n      return false;\n    }\n    for (const {\n      renderTasks,\n      operatorList\n    } of this._intentStates.values()) {\n      if (renderTasks.size > 0 || !operatorList.lastChunk) {\n        return false;\n      }\n    }\n    this._intentStates.clear();\n    this.objs.clear();\n    this.#pendingCleanup = false;\n    return true;\n  }\n  #abortDelayedCleanup() {\n    if (this.#delayedCleanupTimeout) {\n      clearTimeout(this.#delayedCleanupTimeout);\n      this.#delayedCleanupTimeout = null;\n    }\n  }\n  _startRenderPage(transparency, cacheKey) {\n    const intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      return;\n    }\n    this._stats?.timeEnd(\"Page Request\");\n    intentState.displayReadyCapability?.resolve(transparency);\n  }\n  _renderPageChunk(operatorListChunk, intentState) {\n    for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n      intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n      intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n    }\n    intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n    intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n    for (const internalRenderTask of intentState.renderTasks) {\n      internalRenderTask.operatorListChanged();\n    }\n    if (operatorListChunk.lastChunk) {\n      this.#tryCleanup(true);\n    }\n  }\n  _pumpOperatorList({\n    renderingIntent,\n    cacheKey,\n    annotationStorageSerializable,\n    modifiedIds\n  }) {\n    const {\n      map,\n      transfer\n    } = annotationStorageSerializable;\n    const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n      pageIndex: this._pageIndex,\n      intent: renderingIntent,\n      cacheKey,\n      annotationStorage: map,\n      modifiedIds\n    }, transfer);\n    const reader = readableStream.getReader();\n    const intentState = this._intentStates.get(cacheKey);\n    intentState.streamReader = reader;\n    const pump = () => {\n      reader.read().then(({\n        value,\n        done\n      }) => {\n        if (done) {\n          intentState.streamReader = null;\n          return;\n        }\n        if (this._transport.destroyed) {\n          return;\n        }\n        this._renderPageChunk(value, intentState);\n        pump();\n      }, reason => {\n        intentState.streamReader = null;\n        if (this._transport.destroyed) {\n          return;\n        }\n        if (intentState.operatorList) {\n          intentState.operatorList.lastChunk = true;\n          for (const internalRenderTask of intentState.renderTasks) {\n            internalRenderTask.operatorListChanged();\n          }\n          this.#tryCleanup(true);\n        }\n        if (intentState.displayReadyCapability) {\n          intentState.displayReadyCapability.reject(reason);\n        } else if (intentState.opListReadCapability) {\n          intentState.opListReadCapability.reject(reason);\n        } else {\n          throw reason;\n        }\n      });\n    };\n    pump();\n  }\n  _abortOperatorList({\n    intentState,\n    reason,\n    force = false\n  }) {\n    if (!intentState.streamReader) {\n      return;\n    }\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n    if (!force) {\n      if (intentState.renderTasks.size > 0) {\n        return;\n      }\n      if (reason instanceof RenderingCancelledException) {\n        let delay = RENDERING_CANCELLED_TIMEOUT;\n        if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n          delay += reason.extraDelay;\n        }\n        intentState.streamReaderCancelTimeout = setTimeout(() => {\n          intentState.streamReaderCancelTimeout = null;\n          this._abortOperatorList({\n            intentState,\n            reason,\n            force: true\n          });\n        }, delay);\n        return;\n      }\n    }\n    intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n    intentState.streamReader = null;\n    if (this._transport.destroyed) {\n      return;\n    }\n    for (const [curCacheKey, curIntentState] of this._intentStates) {\n      if (curIntentState === intentState) {\n        this._intentStates.delete(curCacheKey);\n        break;\n      }\n    }\n    this.cleanup();\n  }\n  get stats() {\n    return this._stats;\n  }\n}\nclass LoopbackPort {\n  #listeners = new Set();\n  #deferred = Promise.resolve();\n  postMessage(obj, transfer) {\n    const event = {\n      data: structuredClone(obj, transfer ? {\n        transfer\n      } : null)\n    };\n    this.#deferred.then(() => {\n      for (const listener of this.#listeners) {\n        listener.call(this, event);\n      }\n    });\n  }\n  addEventListener(name, listener) {\n    this.#listeners.add(listener);\n  }\n  removeEventListener(name, listener) {\n    this.#listeners.delete(listener);\n  }\n  terminate() {\n    this.#listeners.clear();\n  }\n}\nclass PDFWorker {\n  static #fakeWorkerId = 0;\n  static #isWorkerDisabled = false;\n  static #workerPorts;\n  static {\n    if (isNodeJS) {\n      this.#isWorkerDisabled = true;\n      GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n    }\n    this._isSameOrigin = (baseUrl, otherUrl) => {\n      let base;\n      try {\n        base = new URL(baseUrl);\n        if (!base.origin || base.origin === \"null\") {\n          return false;\n        }\n      } catch {\n        return false;\n      }\n      const other = new URL(otherUrl, base);\n      return base.origin === other.origin;\n    };\n    this._createCDNWrapper = url => {\n      const wrapper = `await import(\"${url}\");`;\n      return URL.createObjectURL(new Blob([wrapper], {\n        type: \"text/javascript\"\n      }));\n    };\n  }\n  constructor({\n    name = null,\n    port = null,\n    verbosity = getVerbosityLevel()\n  } = {}) {\n    this.name = name;\n    this.destroyed = false;\n    this.verbosity = verbosity;\n    this._readyCapability = Promise.withResolvers();\n    this._port = null;\n    this._webWorker = null;\n    this._messageHandler = null;\n    if (port) {\n      if (PDFWorker.#workerPorts?.has(port)) {\n        throw new Error(\"Cannot use more than one PDFWorker per port.\");\n      }\n      (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n      this._initializeFromPort(port);\n      return;\n    }\n    this._initialize();\n  }\n  get promise() {\n    if (isNodeJS) {\n      return Promise.all([NodePackages.promise, this._readyCapability.promise]);\n    }\n    return this._readyCapability.promise;\n  }\n  #resolve() {\n    this._readyCapability.resolve();\n    this._messageHandler.send(\"configure\", {\n      verbosity: this.verbosity\n    });\n  }\n  get port() {\n    return this._port;\n  }\n  get messageHandler() {\n    return this._messageHandler;\n  }\n  _initializeFromPort(port) {\n    this._port = port;\n    this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n    this._messageHandler.on(\"ready\", function () {});\n    this.#resolve();\n  }\n  _initialize() {\n    if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n      this._setupFakeWorker();\n      return;\n    }\n    let {\n      workerSrc\n    } = PDFWorker;\n    try {\n      if (!PDFWorker._isSameOrigin(window.location.href, workerSrc)) {\n        workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n      }\n      const worker = new Worker(workerSrc, {\n        type: \"module\"\n      });\n      const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n      const terminateEarly = () => {\n        ac.abort();\n        messageHandler.destroy();\n        worker.terminate();\n        if (this.destroyed) {\n          this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n        } else {\n          this._setupFakeWorker();\n        }\n      };\n      const ac = new AbortController();\n      worker.addEventListener(\"error\", () => {\n        if (!this._webWorker) {\n          terminateEarly();\n        }\n      }, {\n        signal: ac.signal\n      });\n      messageHandler.on(\"test\", data => {\n        ac.abort();\n        if (this.destroyed || !data) {\n          terminateEarly();\n          return;\n        }\n        this._messageHandler = messageHandler;\n        this._port = worker;\n        this._webWorker = worker;\n        this.#resolve();\n      });\n      messageHandler.on(\"ready\", data => {\n        ac.abort();\n        if (this.destroyed) {\n          terminateEarly();\n          return;\n        }\n        try {\n          sendTest();\n        } catch {\n          this._setupFakeWorker();\n        }\n      });\n      const sendTest = () => {\n        const testObj = new Uint8Array();\n        messageHandler.send(\"test\", testObj, [testObj.buffer]);\n      };\n      sendTest();\n      return;\n    } catch {\n      info(\"The worker has been disabled.\");\n    }\n    this._setupFakeWorker();\n  }\n  _setupFakeWorker() {\n    if (!PDFWorker.#isWorkerDisabled) {\n      warn(\"Setting up fake worker.\");\n      PDFWorker.#isWorkerDisabled = true;\n    }\n    PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n      if (this.destroyed) {\n        this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n        return;\n      }\n      const port = new LoopbackPort();\n      this._port = port;\n      const id = `fake${PDFWorker.#fakeWorkerId++}`;\n      const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n      WorkerMessageHandler.setup(workerHandler, port);\n      this._messageHandler = new MessageHandler(id, id + \"_worker\", port);\n      this.#resolve();\n    }).catch(reason => {\n      this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n    });\n  }\n  destroy() {\n    this.destroyed = true;\n    if (this._webWorker) {\n      this._webWorker.terminate();\n      this._webWorker = null;\n    }\n    PDFWorker.#workerPorts?.delete(this._port);\n    this._port = null;\n    if (this._messageHandler) {\n      this._messageHandler.destroy();\n      this._messageHandler = null;\n    }\n  }\n  static fromPort(params) {\n    if (!params?.port) {\n      throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n    }\n    const cachedPort = this.#workerPorts?.get(params.port);\n    if (cachedPort) {\n      if (cachedPort._pendingDestroy) {\n        throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n      }\n      return cachedPort;\n    }\n    return new PDFWorker(params);\n  }\n  static get workerSrc() {\n    if (GlobalWorkerOptions.workerSrc) {\n      return GlobalWorkerOptions.workerSrc;\n    }\n    throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n  }\n  static get #mainThreadWorkerMessageHandler() {\n    try {\n      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n    } catch {\n      return null;\n    }\n  }\n  static get _setupFakeWorkerGlobal() {\n    const loader = async () => {\n      if (this.#mainThreadWorkerMessageHandler) {\n        return this.#mainThreadWorkerMessageHandler;\n      }\n      const worker = await import(/*webpackIgnore: true*/this.workerSrc);\n      return worker.WorkerMessageHandler;\n    };\n    return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n  }\n}\nclass WorkerTransport {\n  #methodPromises = new Map();\n  #pageCache = new Map();\n  #pagePromises = new Map();\n  #pageRefCache = new Map();\n  #passwordCapability = null;\n  constructor(messageHandler, loadingTask, networkStream, params, factory) {\n    this.messageHandler = messageHandler;\n    this.loadingTask = loadingTask;\n    this.commonObjs = new PDFObjects();\n    this.fontLoader = new FontLoader({\n      ownerDocument: params.ownerDocument,\n      styleElement: params.styleElement\n    });\n    this.loadingParams = params.loadingParams;\n    this._params = params;\n    this.canvasFactory = factory.canvasFactory;\n    this.filterFactory = factory.filterFactory;\n    this.cMapReaderFactory = factory.cMapReaderFactory;\n    this.standardFontDataFactory = factory.standardFontDataFactory;\n    this.destroyed = false;\n    this.destroyCapability = null;\n    this._networkStream = networkStream;\n    this._fullReader = null;\n    this._lastProgress = null;\n    this.downloadInfoCapability = Promise.withResolvers();\n    this.setupMessageHandler();\n  }\n  #cacheSimpleMethod(name, data = null) {\n    const cachedPromise = this.#methodPromises.get(name);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler.sendWithPromise(name, data);\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n  get annotationStorage() {\n    return shadow(this, \"annotationStorage\", new AnnotationStorage());\n  }\n  getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n    let renderingIntent = RenderingIntentFlag.DISPLAY;\n    let annotationStorageSerializable = SerializableEmpty;\n    switch (intent) {\n      case \"any\":\n        renderingIntent = RenderingIntentFlag.ANY;\n        break;\n      case \"display\":\n        break;\n      case \"print\":\n        renderingIntent = RenderingIntentFlag.PRINT;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid intent: ${intent}`);\n    }\n    const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n    switch (annotationMode) {\n      case AnnotationMode.DISABLE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n        break;\n      case AnnotationMode.ENABLE:\n        break;\n      case AnnotationMode.ENABLE_FORMS:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n        break;\n      case AnnotationMode.ENABLE_STORAGE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n        annotationStorageSerializable = annotationStorage.serializable;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n    }\n    if (isEditing) {\n      renderingIntent += RenderingIntentFlag.IS_EDITING;\n    }\n    if (isOpList) {\n      renderingIntent += RenderingIntentFlag.OPLIST;\n    }\n    const {\n      ids: modifiedIds,\n      hash: modifiedIdsHash\n    } = annotationStorage.modifiedIds;\n    const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n    return {\n      renderingIntent,\n      cacheKey: cacheKeyBuf.join(\"_\"),\n      annotationStorageSerializable,\n      modifiedIds\n    };\n  }\n  destroy() {\n    if (this.destroyCapability) {\n      return this.destroyCapability.promise;\n    }\n    this.destroyed = true;\n    this.destroyCapability = Promise.withResolvers();\n    this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n    const waitOn = [];\n    for (const page of this.#pageCache.values()) {\n      waitOn.push(page._destroy());\n    }\n    this.#pageCache.clear();\n    this.#pagePromises.clear();\n    this.#pageRefCache.clear();\n    if (this.hasOwnProperty(\"annotationStorage\")) {\n      this.annotationStorage.resetModified();\n    }\n    const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n    waitOn.push(terminated);\n    Promise.all(waitOn).then(() => {\n      this.commonObjs.clear();\n      this.fontLoader.clear();\n      this.#methodPromises.clear();\n      this.filterFactory.destroy();\n      TextLayer.cleanup();\n      this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n      if (this.messageHandler) {\n        this.messageHandler.destroy();\n        this.messageHandler = null;\n      }\n      this.destroyCapability.resolve();\n    }, this.destroyCapability.reject);\n    return this.destroyCapability.promise;\n  }\n  setupMessageHandler() {\n    const {\n      messageHandler,\n      loadingTask\n    } = this;\n    messageHandler.on(\"GetReader\", (data, sink) => {\n      assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n      this._fullReader = this._networkStream.getFullReader();\n      this._fullReader.onProgress = evt => {\n        this._lastProgress = {\n          loaded: evt.loaded,\n          total: evt.total\n        };\n      };\n      sink.onPull = () => {\n        this._fullReader.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            sink.close();\n            return;\n          }\n          assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n          sink.enqueue(new Uint8Array(value), 1, [value]);\n        }).catch(reason => {\n          sink.error(reason);\n        });\n      };\n      sink.onCancel = reason => {\n        this._fullReader.cancel(reason);\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return;\n          }\n          throw readyReason;\n        });\n      };\n    });\n    messageHandler.on(\"ReaderHeadersReady\", data => {\n      const headersCapability = Promise.withResolvers();\n      const fullReader = this._fullReader;\n      fullReader.headersReady.then(() => {\n        if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n          if (this._lastProgress) {\n            loadingTask.onProgress?.(this._lastProgress);\n          }\n          fullReader.onProgress = evt => {\n            loadingTask.onProgress?.({\n              loaded: evt.loaded,\n              total: evt.total\n            });\n          };\n        }\n        headersCapability.resolve({\n          isStreamingSupported: fullReader.isStreamingSupported,\n          isRangeSupported: fullReader.isRangeSupported,\n          contentLength: fullReader.contentLength\n        });\n      }, headersCapability.reject);\n      return headersCapability.promise;\n    });\n    messageHandler.on(\"GetRangeReader\", (data, sink) => {\n      assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n      const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n      if (!rangeReader) {\n        sink.close();\n        return;\n      }\n      sink.onPull = () => {\n        rangeReader.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            sink.close();\n            return;\n          }\n          assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n          sink.enqueue(new Uint8Array(value), 1, [value]);\n        }).catch(reason => {\n          sink.error(reason);\n        });\n      };\n      sink.onCancel = reason => {\n        rangeReader.cancel(reason);\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return;\n          }\n          throw readyReason;\n        });\n      };\n    });\n    messageHandler.on(\"GetDoc\", ({\n      pdfInfo\n    }) => {\n      this._numPages = pdfInfo.numPages;\n      this._htmlForXfa = pdfInfo.htmlForXfa;\n      delete pdfInfo.htmlForXfa;\n      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n    });\n    messageHandler.on(\"DocException\", function (ex) {\n      let reason;\n      switch (ex.name) {\n        case \"PasswordException\":\n          reason = new PasswordException(ex.message, ex.code);\n          break;\n        case \"InvalidPDFException\":\n          reason = new InvalidPDFException(ex.message);\n          break;\n        case \"MissingPDFException\":\n          reason = new MissingPDFException(ex.message);\n          break;\n        case \"UnexpectedResponseException\":\n          reason = new UnexpectedResponseException(ex.message, ex.status);\n          break;\n        case \"UnknownErrorException\":\n          reason = new UnknownErrorException(ex.message, ex.details);\n          break;\n        default:\n          unreachable(\"DocException - expected a valid Error.\");\n      }\n      loadingTask._capability.reject(reason);\n    });\n    messageHandler.on(\"PasswordRequest\", exception => {\n      this.#passwordCapability = Promise.withResolvers();\n      if (loadingTask.onPassword) {\n        const updatePassword = password => {\n          if (password instanceof Error) {\n            this.#passwordCapability.reject(password);\n          } else {\n            this.#passwordCapability.resolve({\n              password\n            });\n          }\n        };\n        try {\n          loadingTask.onPassword(updatePassword, exception.code);\n        } catch (ex) {\n          this.#passwordCapability.reject(ex);\n        }\n      } else {\n        this.#passwordCapability.reject(new PasswordException(exception.message, exception.code));\n      }\n      return this.#passwordCapability.promise;\n    });\n    messageHandler.on(\"DataLoaded\", data => {\n      loadingTask.onProgress?.({\n        loaded: data.length,\n        total: data.length\n      });\n      this.downloadInfoCapability.resolve(data);\n    });\n    messageHandler.on(\"StartRenderPage\", data => {\n      if (this.destroyed) {\n        return;\n      }\n      const page = this.#pageCache.get(data.pageIndex);\n      page._startRenderPage(data.transparency, data.cacheKey);\n    });\n    messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n      if (this.destroyed) {\n        return null;\n      }\n      if (this.commonObjs.has(id)) {\n        return null;\n      }\n      switch (type) {\n        case \"Font\":\n          const {\n            disableFontFace,\n            fontExtraProperties,\n            pdfBug\n          } = this._params;\n          if (\"error\" in exportedData) {\n            const exportedError = exportedData.error;\n            warn(`Error during font loading: ${exportedError}`);\n            this.commonObjs.resolve(id, exportedError);\n            break;\n          }\n          const inspectFont = pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n          const font = new FontFaceObject(exportedData, {\n            disableFontFace,\n            inspectFont\n          });\n          this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n            id\n          })).finally(() => {\n            if (!fontExtraProperties && font.data) {\n              font.data = null;\n            }\n            this.commonObjs.resolve(id, font);\n          });\n          break;\n        case \"CopyLocalImage\":\n          const {\n            imageRef\n          } = exportedData;\n          assert(imageRef, \"The imageRef must be defined.\");\n          for (const pageProxy of this.#pageCache.values()) {\n            for (const [, data] of pageProxy.objs) {\n              if (data?.ref !== imageRef) {\n                continue;\n              }\n              if (!data.dataLen) {\n                return null;\n              }\n              this.commonObjs.resolve(id, structuredClone(data));\n              return data.dataLen;\n            }\n          }\n          break;\n        case \"FontPath\":\n        case \"Image\":\n        case \"Pattern\":\n          this.commonObjs.resolve(id, exportedData);\n          break;\n        default:\n          throw new Error(`Got unknown common object type ${type}`);\n      }\n      return null;\n    });\n    messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n      if (this.destroyed) {\n        return;\n      }\n      const pageProxy = this.#pageCache.get(pageIndex);\n      if (pageProxy.objs.has(id)) {\n        return;\n      }\n      if (pageProxy._intentStates.size === 0) {\n        imageData?.bitmap?.close();\n        return;\n      }\n      switch (type) {\n        case \"Image\":\n          pageProxy.objs.resolve(id, imageData);\n          if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\n            pageProxy._maybeCleanupAfterRender = true;\n          }\n          break;\n        case \"Pattern\":\n          pageProxy.objs.resolve(id, imageData);\n          break;\n        default:\n          throw new Error(`Got unknown object type ${type}`);\n      }\n    });\n    messageHandler.on(\"DocProgress\", data => {\n      if (this.destroyed) {\n        return;\n      }\n      loadingTask.onProgress?.({\n        loaded: data.loaded,\n        total: data.total\n      });\n    });\n    messageHandler.on(\"FetchBuiltInCMap\", data => {\n      if (this.destroyed) {\n        return Promise.reject(new Error(\"Worker was destroyed.\"));\n      }\n      if (!this.cMapReaderFactory) {\n        return Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"));\n      }\n      return this.cMapReaderFactory.fetch(data);\n    });\n    messageHandler.on(\"FetchStandardFontData\", data => {\n      if (this.destroyed) {\n        return Promise.reject(new Error(\"Worker was destroyed.\"));\n      }\n      if (!this.standardFontDataFactory) {\n        return Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"));\n      }\n      return this.standardFontDataFactory.fetch(data);\n    });\n  }\n  getData() {\n    return this.messageHandler.sendWithPromise(\"GetData\", null);\n  }\n  saveDocument() {\n    if (this.annotationStorage.size <= 0) {\n      warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n    }\n    const {\n      map,\n      transfer\n    } = this.annotationStorage.serializable;\n    return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n      isPureXfa: !!this._htmlForXfa,\n      numPages: this._numPages,\n      annotationStorage: map,\n      filename: this._fullReader?.filename ?? null\n    }, transfer).finally(() => {\n      this.annotationStorage.resetModified();\n    });\n  }\n  getPage(pageNumber) {\n    if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n      return Promise.reject(new Error(\"Invalid page request.\"));\n    }\n    const pageIndex = pageNumber - 1,\n      cachedPromise = this.#pagePromises.get(pageIndex);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n      pageIndex\n    }).then(pageInfo => {\n      if (this.destroyed) {\n        throw new Error(\"Transport destroyed\");\n      }\n      if (pageInfo.refStr) {\n        this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n      }\n      const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n      this.#pageCache.set(pageIndex, page);\n      return page;\n    });\n    this.#pagePromises.set(pageIndex, promise);\n    return promise;\n  }\n  getPageIndex(ref) {\n    if (!isRefProxy(ref)) {\n      return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n    }\n    return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n      num: ref.num,\n      gen: ref.gen\n    });\n  }\n  getAnnotations(pageIndex, intent) {\n    return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n      pageIndex,\n      intent\n    });\n  }\n  getFieldObjects() {\n    return this.#cacheSimpleMethod(\"GetFieldObjects\");\n  }\n  hasJSActions() {\n    return this.#cacheSimpleMethod(\"HasJSActions\");\n  }\n  getCalculationOrderIds() {\n    return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n  }\n  getDestinations() {\n    return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n  }\n  getDestination(id) {\n    if (typeof id !== \"string\") {\n      return Promise.reject(new Error(\"Invalid destination request.\"));\n    }\n    return this.messageHandler.sendWithPromise(\"GetDestination\", {\n      id\n    });\n  }\n  getPageLabels() {\n    return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n  }\n  getPageLayout() {\n    return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n  }\n  getPageMode() {\n    return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n  }\n  getViewerPreferences() {\n    return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n  }\n  getOpenAction() {\n    return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n  }\n  getAttachments() {\n    return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n  }\n  getDocJSActions() {\n    return this.#cacheSimpleMethod(\"GetDocJSActions\");\n  }\n  getPageJSActions(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n      pageIndex\n    });\n  }\n  getStructTree(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n      pageIndex\n    });\n  }\n  getOutline() {\n    return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n  }\n  getOptionalContentConfig(renderingIntent) {\n    return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n  }\n  getPermissions() {\n    return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n  }\n  getMetadata() {\n    const name = \"GetMetadata\",\n      cachedPromise = this.#methodPromises.get(name);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n      info: results[0],\n      metadata: results[1] ? new Metadata(results[1]) : null,\n      contentDispositionFilename: this._fullReader?.filename ?? null,\n      contentLength: this._fullReader?.contentLength ?? null\n    }));\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n  getMarkInfo() {\n    return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n  }\n  async startCleanup(keepLoadedFonts = false) {\n    if (this.destroyed) {\n      return;\n    }\n    await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n    for (const page of this.#pageCache.values()) {\n      const cleanupSuccessful = page.cleanup();\n      if (!cleanupSuccessful) {\n        throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n      }\n    }\n    this.commonObjs.clear();\n    if (!keepLoadedFonts) {\n      this.fontLoader.clear();\n    }\n    this.#methodPromises.clear();\n    this.filterFactory.destroy(true);\n    TextLayer.cleanup();\n  }\n  cachedPageNumber(ref) {\n    if (!isRefProxy(ref)) {\n      return null;\n    }\n    const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n    return this.#pageRefCache.get(refStr) ?? null;\n  }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n  #objs = Object.create(null);\n  #ensureObj(objId) {\n    return this.#objs[objId] ||= {\n      ...Promise.withResolvers(),\n      data: INITIAL_DATA\n    };\n  }\n  get(objId, callback = null) {\n    if (callback) {\n      const obj = this.#ensureObj(objId);\n      obj.promise.then(() => callback(obj.data));\n      return null;\n    }\n    const obj = this.#objs[objId];\n    if (!obj || obj.data === INITIAL_DATA) {\n      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n    }\n    return obj.data;\n  }\n  has(objId) {\n    const obj = this.#objs[objId];\n    return !!obj && obj.data !== INITIAL_DATA;\n  }\n  resolve(objId, data = null) {\n    const obj = this.#ensureObj(objId);\n    obj.data = data;\n    obj.resolve();\n  }\n  clear() {\n    for (const objId in this.#objs) {\n      const {\n        data\n      } = this.#objs[objId];\n      data?.bitmap?.close();\n    }\n    this.#objs = Object.create(null);\n  }\n  *[Symbol.iterator]() {\n    for (const objId in this.#objs) {\n      const {\n        data\n      } = this.#objs[objId];\n      if (data === INITIAL_DATA) {\n        continue;\n      }\n      yield [objId, data];\n    }\n  }\n}\nclass RenderTask {\n  #internalRenderTask = null;\n  constructor(internalRenderTask) {\n    this.#internalRenderTask = internalRenderTask;\n    this.onContinue = null;\n  }\n  get promise() {\n    return this.#internalRenderTask.capability.promise;\n  }\n  cancel(extraDelay = 0) {\n    this.#internalRenderTask.cancel(null, extraDelay);\n  }\n  get separateAnnots() {\n    const {\n      separateAnnots\n    } = this.#internalRenderTask.operatorList;\n    if (!separateAnnots) {\n      return false;\n    }\n    const {\n      annotationCanvasMap\n    } = this.#internalRenderTask;\n    return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n  }\n}\nclass InternalRenderTask {\n  #rAF = null;\n  static #canvasInUse = new WeakSet();\n  constructor({\n    callback,\n    params,\n    objs,\n    commonObjs,\n    annotationCanvasMap,\n    operatorList,\n    pageIndex,\n    canvasFactory,\n    filterFactory,\n    useRequestAnimationFrame = false,\n    pdfBug = false,\n    pageColors = null\n  }) {\n    this.callback = callback;\n    this.params = params;\n    this.objs = objs;\n    this.commonObjs = commonObjs;\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.operatorListIdx = null;\n    this.operatorList = operatorList;\n    this._pageIndex = pageIndex;\n    this.canvasFactory = canvasFactory;\n    this.filterFactory = filterFactory;\n    this._pdfBug = pdfBug;\n    this.pageColors = pageColors;\n    this.running = false;\n    this.graphicsReadyCallback = null;\n    this.graphicsReady = false;\n    this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n    this.cancelled = false;\n    this.capability = Promise.withResolvers();\n    this.task = new RenderTask(this);\n    this._cancelBound = this.cancel.bind(this);\n    this._continueBound = this._continue.bind(this);\n    this._scheduleNextBound = this._scheduleNext.bind(this);\n    this._nextBound = this._next.bind(this);\n    this._canvas = params.canvasContext.canvas;\n  }\n  get completed() {\n    return this.capability.promise.catch(function () {});\n  }\n  initializeGraphics({\n    transparency = false,\n    optionalContentConfig\n  }) {\n    if (this.cancelled) {\n      return;\n    }\n    if (this._canvas) {\n      if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n        throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n      }\n      InternalRenderTask.#canvasInUse.add(this._canvas);\n    }\n    if (this._pdfBug && globalThis.StepperManager?.enabled) {\n      this.stepper = globalThis.StepperManager.create(this._pageIndex);\n      this.stepper.init(this.operatorList);\n      this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n    }\n    const {\n      canvasContext,\n      viewport,\n      transform,\n      background\n    } = this.params;\n    this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n      optionalContentConfig\n    }, this.annotationCanvasMap, this.pageColors);\n    this.gfx.beginDrawing({\n      transform,\n      viewport,\n      transparency,\n      background\n    });\n    this.operatorListIdx = 0;\n    this.graphicsReady = true;\n    this.graphicsReadyCallback?.();\n  }\n  cancel(error = null, extraDelay = 0) {\n    this.running = false;\n    this.cancelled = true;\n    this.gfx?.endDrawing();\n    if (this.#rAF) {\n      window.cancelAnimationFrame(this.#rAF);\n      this.#rAF = null;\n    }\n    InternalRenderTask.#canvasInUse.delete(this._canvas);\n    this.callback(error || new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n  }\n  operatorListChanged() {\n    if (!this.graphicsReady) {\n      this.graphicsReadyCallback ||= this._continueBound;\n      return;\n    }\n    this.stepper?.updateOperatorList(this.operatorList);\n    if (this.running) {\n      return;\n    }\n    this._continue();\n  }\n  _continue() {\n    this.running = true;\n    if (this.cancelled) {\n      return;\n    }\n    if (this.task.onContinue) {\n      this.task.onContinue(this._scheduleNextBound);\n    } else {\n      this._scheduleNext();\n    }\n  }\n  _scheduleNext() {\n    if (this._useRequestAnimationFrame) {\n      this.#rAF = window.requestAnimationFrame(() => {\n        this.#rAF = null;\n        this._nextBound().catch(this._cancelBound);\n      });\n    } else {\n      Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n    }\n  }\n  async _next() {\n    if (this.cancelled) {\n      return;\n    }\n    this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n    if (this.operatorListIdx === this.operatorList.argsArray.length) {\n      this.running = false;\n      if (this.operatorList.lastChunk) {\n        this.gfx.endDrawing();\n        InternalRenderTask.#canvasInUse.delete(this._canvas);\n        this.callback();\n      }\n    }\n  }\n}\nconst version = \"4.7.76\";\nconst build = \"8b73b828b\";\n\n;// ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n  return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n  static CMYK_G([c, y, m, k]) {\n    return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n  }\n  static G_CMYK([g]) {\n    return [\"CMYK\", 0, 0, 0, 1 - g];\n  }\n  static G_RGB([g]) {\n    return [\"RGB\", g, g, g];\n  }\n  static G_rgb([g]) {\n    g = scaleAndClamp(g);\n    return [g, g, g];\n  }\n  static G_HTML([g]) {\n    const G = makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n  static RGB_G([r, g, b]) {\n    return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n  }\n  static RGB_rgb(color) {\n    return color.map(scaleAndClamp);\n  }\n  static RGB_HTML(color) {\n    return `#${color.map(makeColorComp).join(\"\")}`;\n  }\n  static T_HTML() {\n    return \"#00000000\";\n  }\n  static T_rgb() {\n    return [null];\n  }\n  static CMYK_RGB([c, y, m, k]) {\n    return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n  }\n  static CMYK_rgb([c, y, m, k]) {\n    return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n  }\n  static CMYK_HTML(components) {\n    const rgb = this.CMYK_RGB(components).slice(1);\n    return this.RGB_HTML(rgb);\n  }\n  static RGB_CMYK([r, g, b]) {\n    const c = 1 - r;\n    const m = 1 - g;\n    const y = 1 - b;\n    const k = Math.min(c, m, y);\n    return [\"CMYK\", c, m, y, k];\n  }\n}\n\n;// ./src/display/xfa_layer.js\n\nclass XfaLayer {\n  static setupStorage(html, id, element, storage, intent) {\n    const storedData = storage.getValue(id, {\n      value: null\n    });\n    switch (element.name) {\n      case \"textarea\":\n        if (storedData.value !== null) {\n          html.textContent = storedData.value;\n        }\n        if (intent === \"print\") {\n          break;\n        }\n        html.addEventListener(\"input\", event => {\n          storage.setValue(id, {\n            value: event.target.value\n          });\n        });\n        break;\n      case \"input\":\n        if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n          if (storedData.value === element.attributes.xfaOn) {\n            html.setAttribute(\"checked\", true);\n          } else if (storedData.value === element.attributes.xfaOff) {\n            html.removeAttribute(\"checked\");\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"change\", event => {\n            storage.setValue(id, {\n              value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n            });\n          });\n        } else {\n          if (storedData.value !== null) {\n            html.setAttribute(\"value\", storedData.value);\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"input\", event => {\n            storage.setValue(id, {\n              value: event.target.value\n            });\n          });\n        }\n        break;\n      case \"select\":\n        if (storedData.value !== null) {\n          html.setAttribute(\"value\", storedData.value);\n          for (const option of element.children) {\n            if (option.attributes.value === storedData.value) {\n              option.attributes.selected = true;\n            } else if (option.attributes.hasOwnProperty(\"selected\")) {\n              delete option.attributes.selected;\n            }\n          }\n        }\n        html.addEventListener(\"input\", event => {\n          const options = event.target.options;\n          const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n          storage.setValue(id, {\n            value\n          });\n        });\n        break;\n    }\n  }\n  static setAttributes({\n    html,\n    element,\n    storage = null,\n    intent,\n    linkService\n  }) {\n    const {\n      attributes\n    } = element;\n    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n    if (attributes.type === \"radio\") {\n      attributes.name = `${attributes.name}-${intent}`;\n    }\n    for (const [key, value] of Object.entries(attributes)) {\n      if (value === null || value === undefined) {\n        continue;\n      }\n      switch (key) {\n        case \"class\":\n          if (value.length) {\n            html.setAttribute(key, value.join(\" \"));\n          }\n          break;\n        case \"dataId\":\n          break;\n        case \"id\":\n          html.setAttribute(\"data-element-id\", value);\n          break;\n        case \"style\":\n          Object.assign(html.style, value);\n          break;\n        case \"textContent\":\n          html.textContent = value;\n          break;\n        default:\n          if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n            html.setAttribute(key, value);\n          }\n      }\n    }\n    if (isHTMLAnchorElement) {\n      linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n    }\n    if (storage && attributes.dataId) {\n      this.setupStorage(html, attributes.dataId, element, storage);\n    }\n  }\n  static render(parameters) {\n    const storage = parameters.annotationStorage;\n    const linkService = parameters.linkService;\n    const root = parameters.xfaHtml;\n    const intent = parameters.intent || \"display\";\n    const rootHtml = document.createElement(root.name);\n    if (root.attributes) {\n      this.setAttributes({\n        html: rootHtml,\n        element: root,\n        intent,\n        linkService\n      });\n    }\n    const isNotForRichText = intent !== \"richText\";\n    const rootDiv = parameters.div;\n    rootDiv.append(rootHtml);\n    if (parameters.viewport) {\n      const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n      rootDiv.style.transform = transform;\n    }\n    if (isNotForRichText) {\n      rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n    }\n    const textDivs = [];\n    if (root.children.length === 0) {\n      if (root.value) {\n        const node = document.createTextNode(root.value);\n        rootHtml.append(node);\n        if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n          textDivs.push(node);\n        }\n      }\n      return {\n        textDivs\n      };\n    }\n    const stack = [[root, -1, rootHtml]];\n    while (stack.length > 0) {\n      const [parent, i, html] = stack.at(-1);\n      if (i + 1 === parent.children.length) {\n        stack.pop();\n        continue;\n      }\n      const child = parent.children[++stack.at(-1)[1]];\n      if (child === null) {\n        continue;\n      }\n      const {\n        name\n      } = child;\n      if (name === \"#text\") {\n        const node = document.createTextNode(child.value);\n        textDivs.push(node);\n        html.append(node);\n        continue;\n      }\n      const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n      html.append(childHtml);\n      if (child.attributes) {\n        this.setAttributes({\n          html: childHtml,\n          element: child,\n          storage,\n          intent,\n          linkService\n        });\n      }\n      if (child.children?.length > 0) {\n        stack.push([child, -1, childHtml]);\n      } else if (child.value) {\n        const node = document.createTextNode(child.value);\n        if (isNotForRichText && XfaText.shouldBuildText(name)) {\n          textDivs.push(node);\n        }\n        childHtml.append(node);\n      }\n    }\n    for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n      el.setAttribute(\"readOnly\", true);\n    }\n    return {\n      textDivs\n    };\n  }\n  static update(parameters) {\n    const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n    parameters.div.style.transform = transform;\n    parameters.div.hidden = false;\n  }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n  return {\n    width: rect[2] - rect[0],\n    height: rect[3] - rect[1]\n  };\n}\nclass AnnotationElementFactory {\n  static create(parameters) {\n    const subtype = parameters.data.annotationType;\n    switch (subtype) {\n      case AnnotationType.LINK:\n        return new LinkAnnotationElement(parameters);\n      case AnnotationType.TEXT:\n        return new TextAnnotationElement(parameters);\n      case AnnotationType.WIDGET:\n        const fieldType = parameters.data.fieldType;\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotationElement(parameters);\n          case \"Btn\":\n            if (parameters.data.radioButton) {\n              return new RadioButtonWidgetAnnotationElement(parameters);\n            } else if (parameters.data.checkBox) {\n              return new CheckboxWidgetAnnotationElement(parameters);\n            }\n            return new PushButtonWidgetAnnotationElement(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotationElement(parameters);\n          case \"Sig\":\n            return new SignatureWidgetAnnotationElement(parameters);\n        }\n        return new WidgetAnnotationElement(parameters);\n      case AnnotationType.POPUP:\n        return new PopupAnnotationElement(parameters);\n      case AnnotationType.FREETEXT:\n        return new FreeTextAnnotationElement(parameters);\n      case AnnotationType.LINE:\n        return new LineAnnotationElement(parameters);\n      case AnnotationType.SQUARE:\n        return new SquareAnnotationElement(parameters);\n      case AnnotationType.CIRCLE:\n        return new CircleAnnotationElement(parameters);\n      case AnnotationType.POLYLINE:\n        return new PolylineAnnotationElement(parameters);\n      case AnnotationType.CARET:\n        return new CaretAnnotationElement(parameters);\n      case AnnotationType.INK:\n        return new InkAnnotationElement(parameters);\n      case AnnotationType.POLYGON:\n        return new PolygonAnnotationElement(parameters);\n      case AnnotationType.HIGHLIGHT:\n        return new HighlightAnnotationElement(parameters);\n      case AnnotationType.UNDERLINE:\n        return new UnderlineAnnotationElement(parameters);\n      case AnnotationType.SQUIGGLY:\n        return new SquigglyAnnotationElement(parameters);\n      case AnnotationType.STRIKEOUT:\n        return new StrikeOutAnnotationElement(parameters);\n      case AnnotationType.STAMP:\n        return new StampAnnotationElement(parameters);\n      case AnnotationType.FILEATTACHMENT:\n        return new FileAttachmentAnnotationElement(parameters);\n      default:\n        return new AnnotationElement(parameters);\n    }\n  }\n}\nclass AnnotationElement {\n  #updates = null;\n  #hasBorder = false;\n  #popupElement = null;\n  constructor(parameters, {\n    isRenderable = false,\n    ignoreBorder = false,\n    createQuadrilaterals = false\n  } = {}) {\n    this.isRenderable = isRenderable;\n    this.data = parameters.data;\n    this.layer = parameters.layer;\n    this.linkService = parameters.linkService;\n    this.downloadManager = parameters.downloadManager;\n    this.imageResourcesPath = parameters.imageResourcesPath;\n    this.renderForms = parameters.renderForms;\n    this.svgFactory = parameters.svgFactory;\n    this.annotationStorage = parameters.annotationStorage;\n    this.enableScripting = parameters.enableScripting;\n    this.hasJSActions = parameters.hasJSActions;\n    this._fieldObjects = parameters.fieldObjects;\n    this.parent = parameters.parent;\n    if (isRenderable) {\n      this.container = this._createContainer(ignoreBorder);\n    }\n    if (createQuadrilaterals) {\n      this._createQuadrilaterals();\n    }\n  }\n  static _hasPopupData({\n    titleObj,\n    contentsObj,\n    richText\n  }) {\n    return !!(titleObj?.str || contentsObj?.str || richText?.str);\n  }\n  get _isEditable() {\n    return this.data.isEditable;\n  }\n  get hasPopupData() {\n    return AnnotationElement._hasPopupData(this.data);\n  }\n  updateEdited(params) {\n    if (!this.container) {\n      return;\n    }\n    this.#updates ||= {\n      rect: this.data.rect.slice(0)\n    };\n    const {\n      rect\n    } = params;\n    if (rect) {\n      this.#setRectEdited(rect);\n    }\n    this.#popupElement?.popup.updateEdited(params);\n  }\n  resetEdited() {\n    if (!this.#updates) {\n      return;\n    }\n    this.#setRectEdited(this.#updates.rect);\n    this.#popupElement?.popup.resetEdited();\n    this.#updates = null;\n  }\n  #setRectEdited(rect) {\n    const {\n      container: {\n        style\n      },\n      data: {\n        rect: currentRect,\n        rotation\n      },\n      parent: {\n        viewport: {\n          rawDims: {\n            pageWidth,\n            pageHeight,\n            pageX,\n            pageY\n          }\n        }\n      }\n    } = this;\n    currentRect?.splice(0, 4, ...rect);\n    const {\n      width,\n      height\n    } = getRectDims(rect);\n    style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n    style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n    if (rotation === 0) {\n      style.width = `${100 * width / pageWidth}%`;\n      style.height = `${100 * height / pageHeight}%`;\n    } else {\n      this.setRotation(rotation);\n    }\n  }\n  _createContainer(ignoreBorder) {\n    const {\n      data,\n      parent: {\n        page,\n        viewport\n      }\n    } = this;\n    const container = document.createElement(\"section\");\n    container.setAttribute(\"data-annotation-id\", data.id);\n    if (!(this instanceof WidgetAnnotationElement)) {\n      container.tabIndex = DEFAULT_TAB_INDEX;\n    }\n    const {\n      style\n    } = container;\n    style.zIndex = this.parent.zIndex++;\n    if (data.popupRef) {\n      container.setAttribute(\"aria-haspopup\", \"dialog\");\n    }\n    if (data.alternativeText) {\n      container.title = data.alternativeText;\n    }\n    if (data.noRotate) {\n      container.classList.add(\"norotate\");\n    }\n    if (!data.rect || this instanceof PopupAnnotationElement) {\n      const {\n        rotation\n      } = data;\n      if (!data.hasOwnCanvas && rotation !== 0) {\n        this.setRotation(rotation, container);\n      }\n      return container;\n    }\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    if (!ignoreBorder && data.borderStyle.width > 0) {\n      style.borderWidth = `${data.borderStyle.width}px`;\n      const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n      const verticalRadius = data.borderStyle.verticalCornerRadius;\n      if (horizontalRadius > 0 || verticalRadius > 0) {\n        const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n        style.borderRadius = radius;\n      } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n        const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n        style.borderRadius = radius;\n      }\n      switch (data.borderStyle.style) {\n        case AnnotationBorderStyleType.SOLID:\n          style.borderStyle = \"solid\";\n          break;\n        case AnnotationBorderStyleType.DASHED:\n          style.borderStyle = \"dashed\";\n          break;\n        case AnnotationBorderStyleType.BEVELED:\n          warn(\"Unimplemented border style: beveled\");\n          break;\n        case AnnotationBorderStyleType.INSET:\n          warn(\"Unimplemented border style: inset\");\n          break;\n        case AnnotationBorderStyleType.UNDERLINE:\n          style.borderBottomStyle = \"solid\";\n          break;\n        default:\n          break;\n      }\n      const borderColor = data.borderColor || null;\n      if (borderColor) {\n        this.#hasBorder = true;\n        style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n      } else {\n        style.borderWidth = 0;\n      }\n    }\n    const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n    const {\n      pageWidth,\n      pageHeight,\n      pageX,\n      pageY\n    } = viewport.rawDims;\n    style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n    style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n    const {\n      rotation\n    } = data;\n    if (data.hasOwnCanvas || rotation === 0) {\n      style.width = `${100 * width / pageWidth}%`;\n      style.height = `${100 * height / pageHeight}%`;\n    } else {\n      this.setRotation(rotation, container);\n    }\n    return container;\n  }\n  setRotation(angle, container = this.container) {\n    if (!this.data.rect) {\n      return;\n    }\n    const {\n      pageWidth,\n      pageHeight\n    } = this.parent.viewport.rawDims;\n    const {\n      width,\n      height\n    } = getRectDims(this.data.rect);\n    let elementWidth, elementHeight;\n    if (angle % 180 === 0) {\n      elementWidth = 100 * width / pageWidth;\n      elementHeight = 100 * height / pageHeight;\n    } else {\n      elementWidth = 100 * height / pageWidth;\n      elementHeight = 100 * width / pageHeight;\n    }\n    container.style.width = `${elementWidth}%`;\n    container.style.height = `${elementHeight}%`;\n    container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n  }\n  get _commonActions() {\n    const setColor = (jsName, styleName, event) => {\n      const color = event.detail[jsName];\n      const colorType = color[0];\n      const colorArray = color.slice(1);\n      event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n      this.annotationStorage.setValue(this.data.id, {\n        [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n      });\n    };\n    return shadow(this, \"_commonActions\", {\n      display: event => {\n        const {\n          display\n        } = event.detail;\n        const hidden = display % 2 === 1;\n        this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          noView: hidden,\n          noPrint: display === 1 || display === 2\n        });\n      },\n      print: event => {\n        this.annotationStorage.setValue(this.data.id, {\n          noPrint: !event.detail.print\n        });\n      },\n      hidden: event => {\n        const {\n          hidden\n        } = event.detail;\n        this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          noPrint: hidden,\n          noView: hidden\n        });\n      },\n      focus: event => {\n        setTimeout(() => event.target.focus({\n          preventScroll: false\n        }), 0);\n      },\n      userName: event => {\n        event.target.title = event.detail.userName;\n      },\n      readonly: event => {\n        event.target.disabled = event.detail.readonly;\n      },\n      required: event => {\n        this._setRequired(event.target, event.detail.required);\n      },\n      bgColor: event => {\n        setColor(\"bgColor\", \"backgroundColor\", event);\n      },\n      fillColor: event => {\n        setColor(\"fillColor\", \"backgroundColor\", event);\n      },\n      fgColor: event => {\n        setColor(\"fgColor\", \"color\", event);\n      },\n      textColor: event => {\n        setColor(\"textColor\", \"color\", event);\n      },\n      borderColor: event => {\n        setColor(\"borderColor\", \"borderColor\", event);\n      },\n      strokeColor: event => {\n        setColor(\"strokeColor\", \"borderColor\", event);\n      },\n      rotation: event => {\n        const angle = event.detail.rotation;\n        this.setRotation(angle);\n        this.annotationStorage.setValue(this.data.id, {\n          rotation: angle\n        });\n      }\n    });\n  }\n  _dispatchEventFromSandbox(actions, jsEvent) {\n    const commonActions = this._commonActions;\n    for (const name of Object.keys(jsEvent.detail)) {\n      const action = actions[name] || commonActions[name];\n      action?.(jsEvent);\n    }\n  }\n  _setDefaultPropertiesFromJS(element) {\n    if (!this.enableScripting) {\n      return;\n    }\n    const storedData = this.annotationStorage.getRawValue(this.data.id);\n    if (!storedData) {\n      return;\n    }\n    const commonActions = this._commonActions;\n    for (const [actionName, detail] of Object.entries(storedData)) {\n      const action = commonActions[actionName];\n      if (action) {\n        const eventProxy = {\n          detail: {\n            [actionName]: detail\n          },\n          target: element\n        };\n        action(eventProxy);\n        delete storedData[actionName];\n      }\n    }\n  }\n  _createQuadrilaterals() {\n    if (!this.container) {\n      return;\n    }\n    const {\n      quadPoints\n    } = this.data;\n    if (!quadPoints) {\n      return;\n    }\n    const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n    if (quadPoints.length === 8) {\n      const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n      if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n        return;\n      }\n    }\n    const {\n      style\n    } = this.container;\n    let svgBuffer;\n    if (this.#hasBorder) {\n      const {\n        borderColor,\n        borderWidth\n      } = style;\n      style.borderWidth = 0;\n      svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n      this.container.classList.add(\"hasBorder\");\n    }\n    const width = rectTrX - rectBlX;\n    const height = rectTrY - rectBlY;\n    const {\n      svgFactory\n    } = this;\n    const svg = svgFactory.createElement(\"svg\");\n    svg.classList.add(\"quadrilateralsContainer\");\n    svg.setAttribute(\"width\", 0);\n    svg.setAttribute(\"height\", 0);\n    const defs = svgFactory.createElement(\"defs\");\n    svg.append(defs);\n    const clipPath = svgFactory.createElement(\"clipPath\");\n    const id = `clippath_${this.data.id}`;\n    clipPath.setAttribute(\"id\", id);\n    clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n    defs.append(clipPath);\n    for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n      const trX = quadPoints[i];\n      const trY = quadPoints[i + 1];\n      const blX = quadPoints[i + 2];\n      const blY = quadPoints[i + 3];\n      const rect = svgFactory.createElement(\"rect\");\n      const x = (blX - rectBlX) / width;\n      const y = (rectTrY - trY) / height;\n      const rectWidth = (trX - blX) / width;\n      const rectHeight = (trY - blY) / height;\n      rect.setAttribute(\"x\", x);\n      rect.setAttribute(\"y\", y);\n      rect.setAttribute(\"width\", rectWidth);\n      rect.setAttribute(\"height\", rectHeight);\n      clipPath.append(rect);\n      svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n    }\n    if (this.#hasBorder) {\n      svgBuffer.push(`</g></svg>')`);\n      style.backgroundImage = svgBuffer.join(\"\");\n    }\n    this.container.append(svg);\n    this.container.style.clipPath = `url(#${id})`;\n  }\n  _createPopup() {\n    const {\n      container,\n      data\n    } = this;\n    container.setAttribute(\"aria-haspopup\", \"dialog\");\n    const popup = this.#popupElement = new PopupAnnotationElement({\n      data: {\n        color: data.color,\n        titleObj: data.titleObj,\n        modificationDate: data.modificationDate,\n        contentsObj: data.contentsObj,\n        richText: data.richText,\n        parentRect: data.rect,\n        borderStyle: 0,\n        id: `popup_${data.id}`,\n        rotation: data.rotation\n      },\n      parent: this.parent,\n      elements: [this]\n    });\n    this.parent.div.append(popup.render());\n  }\n  render() {\n    unreachable(\"Abstract method `AnnotationElement.render` called\");\n  }\n  _getElementsByName(name, skipId = null) {\n    const fields = [];\n    if (this._fieldObjects) {\n      const fieldObj = this._fieldObjects[name];\n      if (fieldObj) {\n        for (const {\n          page,\n          id,\n          exportValues\n        } of fieldObj) {\n          if (page === -1) {\n            continue;\n          }\n          if (id === skipId) {\n            continue;\n          }\n          const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n          const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n          if (domElement && !GetElementsByNameSet.has(domElement)) {\n            warn(`_getElementsByName - element not allowed: ${id}`);\n            continue;\n          }\n          fields.push({\n            id,\n            exportValue,\n            domElement\n          });\n        }\n      }\n      return fields;\n    }\n    for (const domElement of document.getElementsByName(name)) {\n      const {\n        exportValue\n      } = domElement;\n      const id = domElement.getAttribute(\"data-element-id\");\n      if (id === skipId) {\n        continue;\n      }\n      if (!GetElementsByNameSet.has(domElement)) {\n        continue;\n      }\n      fields.push({\n        id,\n        exportValue,\n        domElement\n      });\n    }\n    return fields;\n  }\n  show() {\n    if (this.container) {\n      this.container.hidden = false;\n    }\n    this.popup?.maybeShow();\n  }\n  hide() {\n    if (this.container) {\n      this.container.hidden = true;\n    }\n    this.popup?.forceHide();\n  }\n  getElementsToTriggerPopup() {\n    return this.container;\n  }\n  addHighlightArea() {\n    const triggers = this.getElementsToTriggerPopup();\n    if (Array.isArray(triggers)) {\n      for (const element of triggers) {\n        element.classList.add(\"highlightArea\");\n      }\n    } else {\n      triggers.classList.add(\"highlightArea\");\n    }\n  }\n  _editOnDoubleClick() {\n    if (!this._isEditable) {\n      return;\n    }\n    const {\n      annotationEditorType: mode,\n      data: {\n        id: editId\n      }\n    } = this;\n    this.container.addEventListener(\"dblclick\", () => {\n      this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n        source: this,\n        mode,\n        editId\n      });\n    });\n  }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n  constructor(parameters, options = null) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: !!options?.ignoreBorder,\n      createQuadrilaterals: true\n    });\n    this.isTooltipOnly = parameters.data.isTooltipOnly;\n  }\n  render() {\n    const {\n      data,\n      linkService\n    } = this;\n    const link = document.createElement(\"a\");\n    link.setAttribute(\"data-element-id\", data.id);\n    let isBound = false;\n    if (data.url) {\n      linkService.addLinkAttributes(link, data.url, data.newWindow);\n      isBound = true;\n    } else if (data.action) {\n      this._bindNamedAction(link, data.action);\n      isBound = true;\n    } else if (data.attachment) {\n      this.#bindAttachment(link, data.attachment, data.attachmentDest);\n      isBound = true;\n    } else if (data.setOCGState) {\n      this.#bindSetOCGState(link, data.setOCGState);\n      isBound = true;\n    } else if (data.dest) {\n      this._bindLink(link, data.dest);\n      isBound = true;\n    } else {\n      if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n        this._bindJSAction(link, data);\n        isBound = true;\n      }\n      if (data.resetForm) {\n        this._bindResetFormAction(link, data.resetForm);\n        isBound = true;\n      } else if (this.isTooltipOnly && !isBound) {\n        this._bindLink(link, \"\");\n        isBound = true;\n      }\n    }\n    this.container.classList.add(\"linkAnnotation\");\n    if (isBound) {\n      this.container.append(link);\n    }\n    return this.container;\n  }\n  #setInternalLink() {\n    this.container.setAttribute(\"data-internal-link\", \"\");\n  }\n  _bindLink(link, destination) {\n    link.href = this.linkService.getDestinationHash(destination);\n    link.onclick = () => {\n      if (destination) {\n        this.linkService.goToDestination(destination);\n      }\n      return false;\n    };\n    if (destination || destination === \"\") {\n      this.#setInternalLink();\n    }\n  }\n  _bindNamedAction(link, action) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeNamedAction(action);\n      return false;\n    };\n    this.#setInternalLink();\n  }\n  #bindAttachment(link, attachment, dest = null) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    if (attachment.description) {\n      link.title = attachment.description;\n    }\n    link.onclick = () => {\n      this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n      return false;\n    };\n    this.#setInternalLink();\n  }\n  #bindSetOCGState(link, action) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeSetOCGState(action);\n      return false;\n    };\n    this.#setInternalLink();\n  }\n  _bindJSAction(link, data) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n    for (const name of Object.keys(data.actions)) {\n      const jsName = map.get(name);\n      if (!jsName) {\n        continue;\n      }\n      link[jsName] = () => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: data.id,\n            name\n          }\n        });\n        return false;\n      };\n    }\n    if (!link.onclick) {\n      link.onclick = () => false;\n    }\n    this.#setInternalLink();\n  }\n  _bindResetFormAction(link, resetForm) {\n    const otherClickAction = link.onclick;\n    if (!otherClickAction) {\n      link.href = this.linkService.getAnchorUrl(\"\");\n    }\n    this.#setInternalLink();\n    if (!this._fieldObjects) {\n      warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n      if (!otherClickAction) {\n        link.onclick = () => false;\n      }\n      return;\n    }\n    link.onclick = () => {\n      otherClickAction?.();\n      const {\n        fields: resetFormFields,\n        refs: resetFormRefs,\n        include\n      } = resetForm;\n      const allFields = [];\n      if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n        const fieldIds = new Set(resetFormRefs);\n        for (const fieldName of resetFormFields) {\n          const fields = this._fieldObjects[fieldName] || [];\n          for (const {\n            id\n          } of fields) {\n            fieldIds.add(id);\n          }\n        }\n        for (const fields of Object.values(this._fieldObjects)) {\n          for (const field of fields) {\n            if (fieldIds.has(field.id) === include) {\n              allFields.push(field);\n            }\n          }\n        }\n      } else {\n        for (const fields of Object.values(this._fieldObjects)) {\n          allFields.push(...fields);\n        }\n      }\n      const storage = this.annotationStorage;\n      const allIds = [];\n      for (const field of allFields) {\n        const {\n          id\n        } = field;\n        allIds.push(id);\n        switch (field.type) {\n          case \"text\":\n            {\n              const value = field.defaultValue || \"\";\n              storage.setValue(id, {\n                value\n              });\n              break;\n            }\n          case \"checkbox\":\n          case \"radiobutton\":\n            {\n              const value = field.defaultValue === field.exportValues;\n              storage.setValue(id, {\n                value\n              });\n              break;\n            }\n          case \"combobox\":\n          case \"listbox\":\n            {\n              const value = field.defaultValue || \"\";\n              storage.setValue(id, {\n                value\n              });\n              break;\n            }\n          default:\n            continue;\n        }\n        const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n        if (!domElement) {\n          continue;\n        } else if (!GetElementsByNameSet.has(domElement)) {\n          warn(`_bindResetFormAction - element not allowed: ${id}`);\n          continue;\n        }\n        domElement.dispatchEvent(new Event(\"resetform\"));\n      }\n      if (this.enableScripting) {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: \"app\",\n            ids: allIds,\n            name: \"ResetForm\"\n          }\n        });\n      }\n      return false;\n    };\n  }\n}\nclass TextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"textAnnotation\");\n    const image = document.createElement(\"img\");\n    image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n    image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n    image.setAttribute(\"data-l10n-args\", JSON.stringify({\n      type: this.data.name\n    }));\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.append(image);\n    return this.container;\n  }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n  render() {\n    return this.container;\n  }\n  showElementAndHideCanvas(element) {\n    if (this.data.hasOwnCanvas) {\n      if (element.previousSibling?.nodeName === \"CANVAS\") {\n        element.previousSibling.hidden = true;\n      }\n      element.hidden = false;\n    }\n  }\n  _getKeyModifier(event) {\n    return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n  }\n  _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n    if (baseName.includes(\"mouse\")) {\n      element.addEventListener(baseName, event => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event),\n            shift: event.shiftKey,\n            modifier: this._getKeyModifier(event)\n          }\n        });\n      });\n    } else {\n      element.addEventListener(baseName, event => {\n        if (baseName === \"blur\") {\n          if (!elementData.focused || !event.relatedTarget) {\n            return;\n          }\n          elementData.focused = false;\n        } else if (baseName === \"focus\") {\n          if (elementData.focused) {\n            return;\n          }\n          elementData.focused = true;\n        }\n        if (!valueGetter) {\n          return;\n        }\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event)\n          }\n        });\n      });\n    }\n  }\n  _setEventListeners(element, elementData, names, getter) {\n    for (const [baseName, eventName] of names) {\n      if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n        if (eventName === \"Focus\" || eventName === \"Blur\") {\n          elementData ||= {\n            focused: false\n          };\n        }\n        this._setEventListener(element, elementData, baseName, eventName, getter);\n        if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n          this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n        } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n          this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n        }\n      }\n    }\n  }\n  _setBackgroundColor(element) {\n    const color = this.data.backgroundColor || null;\n    element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n  }\n  _setTextStyle(element) {\n    const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n    const {\n      fontColor\n    } = this.data.defaultAppearanceData;\n    const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n    const style = element.style;\n    let computedFontSize;\n    const BORDER_SIZE = 2;\n    const roundToOneDecimal = x => Math.round(10 * x) / 10;\n    if (this.data.multiLine) {\n      const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n      const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n      const lineHeight = height / numberOfLines;\n      computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n    } else {\n      const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n      computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n    }\n    style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n    style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n    if (this.data.textAlignment !== null) {\n      style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n    }\n  }\n  _setRequired(element, isRequired) {\n    if (isRequired) {\n      element.setAttribute(\"required\", true);\n    } else {\n      element.removeAttribute(\"required\");\n    }\n    element.setAttribute(\"aria-required\", isRequired);\n  }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n    super(parameters, {\n      isRenderable\n    });\n  }\n  setPropertyOnSiblings(base, key, value, keyInStorage) {\n    const storage = this.annotationStorage;\n    for (const element of this._getElementsByName(base.name, base.id)) {\n      if (element.domElement) {\n        element.domElement[key] = value;\n      }\n      storage.setValue(element.id, {\n        [keyInStorage]: value\n      });\n    }\n  }\n  render() {\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n    this.container.classList.add(\"textWidgetAnnotation\");\n    let element = null;\n    if (this.renderForms) {\n      const storedData = storage.getValue(id, {\n        value: this.data.fieldValue\n      });\n      let textContent = storedData.value || \"\";\n      const maxLen = storage.getValue(id, {\n        charLimit: this.data.maxLen\n      }).charLimit;\n      if (maxLen && textContent.length > maxLen) {\n        textContent = textContent.slice(0, maxLen);\n      }\n      let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n      if (fieldFormattedValues && this.data.comb) {\n        fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n      }\n      const elementData = {\n        userValue: textContent,\n        formattedValue: fieldFormattedValues,\n        lastCommittedValue: null,\n        commitKey: 1,\n        focused: false\n      };\n      if (this.data.multiLine) {\n        element = document.createElement(\"textarea\");\n        element.textContent = fieldFormattedValues ?? textContent;\n        if (this.data.doNotScroll) {\n          element.style.overflowY = \"hidden\";\n        }\n      } else {\n        element = document.createElement(\"input\");\n        element.type = \"text\";\n        element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n        if (this.data.doNotScroll) {\n          element.style.overflowX = \"hidden\";\n        }\n      }\n      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n      GetElementsByNameSet.add(element);\n      element.setAttribute(\"data-element-id\", id);\n      element.disabled = this.data.readOnly;\n      element.name = this.data.fieldName;\n      element.tabIndex = DEFAULT_TAB_INDEX;\n      this._setRequired(element, this.data.required);\n      if (maxLen) {\n        element.maxLength = maxLen;\n      }\n      element.addEventListener(\"input\", event => {\n        storage.setValue(id, {\n          value: event.target.value\n        });\n        this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n        elementData.formattedValue = null;\n      });\n      element.addEventListener(\"resetform\", event => {\n        const defaultValue = this.data.defaultFieldValue ?? \"\";\n        element.value = elementData.userValue = defaultValue;\n        elementData.formattedValue = null;\n      });\n      let blurListener = event => {\n        const {\n          formattedValue\n        } = elementData;\n        if (formattedValue !== null && formattedValue !== undefined) {\n          event.target.value = formattedValue;\n        }\n        event.target.scrollLeft = 0;\n      };\n      if (this.enableScripting && this.hasJSActions) {\n        element.addEventListener(\"focus\", event => {\n          if (elementData.focused) {\n            return;\n          }\n          const {\n            target\n          } = event;\n          if (elementData.userValue) {\n            target.value = elementData.userValue;\n          }\n          elementData.lastCommittedValue = target.value;\n          elementData.commitKey = 1;\n          if (!this.data.actions?.Focus) {\n            elementData.focused = true;\n          }\n        });\n        element.addEventListener(\"updatefromsandbox\", jsEvent => {\n          this.showElementAndHideCanvas(jsEvent.target);\n          const actions = {\n            value(event) {\n              elementData.userValue = event.detail.value ?? \"\";\n              storage.setValue(id, {\n                value: elementData.userValue.toString()\n              });\n              event.target.value = elementData.userValue;\n            },\n            formattedValue(event) {\n              const {\n                formattedValue\n              } = event.detail;\n              elementData.formattedValue = formattedValue;\n              if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n                event.target.value = formattedValue;\n              }\n              storage.setValue(id, {\n                formattedValue\n              });\n            },\n            selRange(event) {\n              event.target.setSelectionRange(...event.detail.selRange);\n            },\n            charLimit: event => {\n              const {\n                charLimit\n              } = event.detail;\n              const {\n                target\n              } = event;\n              if (charLimit === 0) {\n                target.removeAttribute(\"maxLength\");\n                return;\n              }\n              target.setAttribute(\"maxLength\", charLimit);\n              let value = elementData.userValue;\n              if (!value || value.length <= charLimit) {\n                return;\n              }\n              value = value.slice(0, charLimit);\n              target.value = elementData.userValue = value;\n              storage.setValue(id, {\n                value\n              });\n              this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n                source: this,\n                detail: {\n                  id,\n                  name: \"Keystroke\",\n                  value,\n                  willCommit: true,\n                  commitKey: 1,\n                  selStart: target.selectionStart,\n                  selEnd: target.selectionEnd\n                }\n              });\n            }\n          };\n          this._dispatchEventFromSandbox(actions, jsEvent);\n        });\n        element.addEventListener(\"keydown\", event => {\n          elementData.commitKey = 1;\n          let commitKey = -1;\n          if (event.key === \"Escape\") {\n            commitKey = 0;\n          } else if (event.key === \"Enter\" && !this.data.multiLine) {\n            commitKey = 2;\n          } else if (event.key === \"Tab\") {\n            elementData.commitKey = 3;\n          }\n          if (commitKey === -1) {\n            return;\n          }\n          const {\n            value\n          } = event.target;\n          if (elementData.lastCommittedValue === value) {\n            return;\n          }\n          elementData.lastCommittedValue = value;\n          elementData.userValue = value;\n          this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n            source: this,\n            detail: {\n              id,\n              name: \"Keystroke\",\n              value,\n              willCommit: true,\n              commitKey,\n              selStart: event.target.selectionStart,\n              selEnd: event.target.selectionEnd\n            }\n          });\n        });\n        const _blurListener = blurListener;\n        blurListener = null;\n        element.addEventListener(\"blur\", event => {\n          if (!elementData.focused || !event.relatedTarget) {\n            return;\n          }\n          if (!this.data.actions?.Blur) {\n            elementData.focused = false;\n          }\n          const {\n            value\n          } = event.target;\n          elementData.userValue = value;\n          if (elementData.lastCommittedValue !== value) {\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                willCommit: true,\n                commitKey: elementData.commitKey,\n                selStart: event.target.selectionStart,\n                selEnd: event.target.selectionEnd\n              }\n            });\n          }\n          _blurListener(event);\n        });\n        if (this.data.actions?.Keystroke) {\n          element.addEventListener(\"beforeinput\", event => {\n            elementData.lastCommittedValue = null;\n            const {\n              data,\n              target\n            } = event;\n            const {\n              value,\n              selectionStart,\n              selectionEnd\n            } = target;\n            let selStart = selectionStart,\n              selEnd = selectionEnd;\n            switch (event.inputType) {\n              case \"deleteWordBackward\":\n                {\n                  const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n                  if (match) {\n                    selStart -= match[0].length;\n                  }\n                  break;\n                }\n              case \"deleteWordForward\":\n                {\n                  const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n                  if (match) {\n                    selEnd += match[0].length;\n                  }\n                  break;\n                }\n              case \"deleteContentBackward\":\n                if (selectionStart === selectionEnd) {\n                  selStart -= 1;\n                }\n                break;\n              case \"deleteContentForward\":\n                if (selectionStart === selectionEnd) {\n                  selEnd += 1;\n                }\n                break;\n            }\n            event.preventDefault();\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                change: data || \"\",\n                willCommit: false,\n                selStart,\n                selEnd\n              }\n            });\n          });\n        }\n        this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n      }\n      if (blurListener) {\n        element.addEventListener(\"blur\", blurListener);\n      }\n      if (this.data.comb) {\n        const fieldWidth = this.data.rect[2] - this.data.rect[0];\n        const combWidth = fieldWidth / maxLen;\n        element.classList.add(\"comb\");\n        element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n      }\n    } else {\n      element = document.createElement(\"div\");\n      element.textContent = this.data.fieldValue;\n      element.style.verticalAlign = \"middle\";\n      element.style.display = \"table-cell\";\n      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n    }\n    this._setTextStyle(element);\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n    this.container.append(element);\n    return this.container;\n  }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: !!parameters.data.hasOwnCanvas\n    });\n  }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: parameters.renderForms\n    });\n  }\n  render() {\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.exportValue === data.fieldValue\n    }).value;\n    if (typeof value === \"string\") {\n      value = value !== \"Off\";\n      storage.setValue(id, {\n        value\n      });\n    }\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"checkbox\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.setAttribute(\"exportValue\", data.exportValue);\n    element.tabIndex = DEFAULT_TAB_INDEX;\n    element.addEventListener(\"change\", event => {\n      const {\n        name,\n        checked\n      } = event.target;\n      for (const checkbox of this._getElementsByName(name, id)) {\n        const curChecked = checked && checkbox.exportValue === data.exportValue;\n        if (checkbox.domElement) {\n          checkbox.domElement.checked = curChecked;\n        }\n        storage.setValue(checkbox.id, {\n          value: curChecked\n        });\n      }\n      storage.setValue(id, {\n        value: checked\n      });\n    });\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue || \"Off\";\n      event.target.checked = defaultValue === data.exportValue;\n    });\n    if (this.enableScripting && this.hasJSActions) {\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            event.target.checked = event.detail.value !== \"Off\";\n            storage.setValue(id, {\n              value: event.target.checked\n            });\n          }\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n      this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n    }\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n    this.container.append(element);\n    return this.container;\n  }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: parameters.renderForms\n    });\n  }\n  render() {\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.fieldValue === data.buttonValue\n    }).value;\n    if (typeof value === \"string\") {\n      value = value !== data.buttonValue;\n      storage.setValue(id, {\n        value\n      });\n    }\n    if (value) {\n      for (const radio of this._getElementsByName(data.fieldName, id)) {\n        storage.setValue(radio.id, {\n          value: false\n        });\n      }\n    }\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"radio\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.tabIndex = DEFAULT_TAB_INDEX;\n    element.addEventListener(\"change\", event => {\n      const {\n        name,\n        checked\n      } = event.target;\n      for (const radio of this._getElementsByName(name, id)) {\n        storage.setValue(radio.id, {\n          value: false\n        });\n      }\n      storage.setValue(id, {\n        value: checked\n      });\n    });\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue;\n      event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n    });\n    if (this.enableScripting && this.hasJSActions) {\n      const pdfButtonValue = data.buttonValue;\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value: event => {\n            const checked = pdfButtonValue === event.detail.value;\n            for (const radio of this._getElementsByName(event.target.name)) {\n              const curChecked = checked && radio.id === id;\n              if (radio.domElement) {\n                radio.domElement.checked = curChecked;\n              }\n              storage.setValue(radio.id, {\n                value: curChecked\n              });\n            }\n          }\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n      this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n    }\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n    this.container.append(element);\n    return this.container;\n  }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      ignoreBorder: parameters.data.hasAppearance\n    });\n  }\n  render() {\n    const container = super.render();\n    container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n    const linkElement = container.lastChild;\n    if (this.enableScripting && this.hasJSActions && linkElement) {\n      this._setDefaultPropertiesFromJS(linkElement);\n      linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        this._dispatchEventFromSandbox({}, jsEvent);\n      });\n    }\n    return container;\n  }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: parameters.renderForms\n    });\n  }\n  render() {\n    this.container.classList.add(\"choiceWidgetAnnotation\");\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n    const storedData = storage.getValue(id, {\n      value: this.data.fieldValue\n    });\n    const selectElement = document.createElement(\"select\");\n    GetElementsByNameSet.add(selectElement);\n    selectElement.setAttribute(\"data-element-id\", id);\n    selectElement.disabled = this.data.readOnly;\n    this._setRequired(selectElement, this.data.required);\n    selectElement.name = this.data.fieldName;\n    selectElement.tabIndex = DEFAULT_TAB_INDEX;\n    let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n    if (!this.data.combo) {\n      selectElement.size = this.data.options.length;\n      if (this.data.multiSelect) {\n        selectElement.multiple = true;\n      }\n    }\n    selectElement.addEventListener(\"resetform\", event => {\n      const defaultValue = this.data.defaultFieldValue;\n      for (const option of selectElement.options) {\n        option.selected = option.value === defaultValue;\n      }\n    });\n    for (const option of this.data.options) {\n      const optionElement = document.createElement(\"option\");\n      optionElement.textContent = option.displayValue;\n      optionElement.value = option.exportValue;\n      if (storedData.value.includes(option.exportValue)) {\n        optionElement.setAttribute(\"selected\", true);\n        addAnEmptyEntry = false;\n      }\n      selectElement.append(optionElement);\n    }\n    let removeEmptyEntry = null;\n    if (addAnEmptyEntry) {\n      const noneOptionElement = document.createElement(\"option\");\n      noneOptionElement.value = \" \";\n      noneOptionElement.setAttribute(\"hidden\", true);\n      noneOptionElement.setAttribute(\"selected\", true);\n      selectElement.prepend(noneOptionElement);\n      removeEmptyEntry = () => {\n        noneOptionElement.remove();\n        selectElement.removeEventListener(\"input\", removeEmptyEntry);\n        removeEmptyEntry = null;\n      };\n      selectElement.addEventListener(\"input\", removeEmptyEntry);\n    }\n    const getValue = isExport => {\n      const name = isExport ? \"value\" : \"textContent\";\n      const {\n        options,\n        multiple\n      } = selectElement;\n      if (!multiple) {\n        return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n      }\n      return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n    };\n    let selectedValues = getValue(false);\n    const getItems = event => {\n      const options = event.target.options;\n      return Array.prototype.map.call(options, option => ({\n        displayValue: option.textContent,\n        exportValue: option.value\n      }));\n    };\n    if (this.enableScripting && this.hasJSActions) {\n      selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            removeEmptyEntry?.();\n            const value = event.detail.value;\n            const values = new Set(Array.isArray(value) ? value : [value]);\n            for (const option of selectElement.options) {\n              option.selected = values.has(option.value);\n            }\n            storage.setValue(id, {\n              value: getValue(true)\n            });\n            selectedValues = getValue(false);\n          },\n          multipleSelection(event) {\n            selectElement.multiple = true;\n          },\n          remove(event) {\n            const options = selectElement.options;\n            const index = event.detail.remove;\n            options[index].selected = false;\n            selectElement.remove(index);\n            if (options.length > 0) {\n              const i = Array.prototype.findIndex.call(options, option => option.selected);\n              if (i === -1) {\n                options[0].selected = true;\n              }\n            }\n            storage.setValue(id, {\n              value: getValue(true),\n              items: getItems(event)\n            });\n            selectedValues = getValue(false);\n          },\n          clear(event) {\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            storage.setValue(id, {\n              value: null,\n              items: []\n            });\n            selectedValues = getValue(false);\n          },\n          insert(event) {\n            const {\n              index,\n              displayValue,\n              exportValue\n            } = event.detail.insert;\n            const selectChild = selectElement.children[index];\n            const optionElement = document.createElement(\"option\");\n            optionElement.textContent = displayValue;\n            optionElement.value = exportValue;\n            if (selectChild) {\n              selectChild.before(optionElement);\n            } else {\n              selectElement.append(optionElement);\n            }\n            storage.setValue(id, {\n              value: getValue(true),\n              items: getItems(event)\n            });\n            selectedValues = getValue(false);\n          },\n          items(event) {\n            const {\n              items\n            } = event.detail;\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            for (const item of items) {\n              const {\n                displayValue,\n                exportValue\n              } = item;\n              const optionElement = document.createElement(\"option\");\n              optionElement.textContent = displayValue;\n              optionElement.value = exportValue;\n              selectElement.append(optionElement);\n            }\n            if (selectElement.options.length > 0) {\n              selectElement.options[0].selected = true;\n            }\n            storage.setValue(id, {\n              value: getValue(true),\n              items: getItems(event)\n            });\n            selectedValues = getValue(false);\n          },\n          indices(event) {\n            const indices = new Set(event.detail.indices);\n            for (const option of event.target.options) {\n              option.selected = indices.has(option.index);\n            }\n            storage.setValue(id, {\n              value: getValue(true)\n            });\n            selectedValues = getValue(false);\n          },\n          editable(event) {\n            event.target.disabled = !event.detail.editable;\n          }\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n      selectElement.addEventListener(\"input\", event => {\n        const exportValue = getValue(true);\n        const change = getValue(false);\n        storage.setValue(id, {\n          value: exportValue\n        });\n        event.preventDefault();\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id,\n            name: \"Keystroke\",\n            value: selectedValues,\n            change,\n            changeEx: exportValue,\n            willCommit: false,\n            commitKey: 1,\n            keyDown: false\n          }\n        });\n      });\n      this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n    } else {\n      selectElement.addEventListener(\"input\", function (event) {\n        storage.setValue(id, {\n          value: getValue(true)\n        });\n      });\n    }\n    if (this.data.combo) {\n      this._setTextStyle(selectElement);\n    } else {}\n    this._setBackgroundColor(selectElement);\n    this._setDefaultPropertiesFromJS(selectElement);\n    this.container.append(selectElement);\n    return this.container;\n  }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const {\n      data,\n      elements\n    } = parameters;\n    super(parameters, {\n      isRenderable: AnnotationElement._hasPopupData(data)\n    });\n    this.elements = elements;\n    this.popup = null;\n  }\n  render() {\n    this.container.classList.add(\"popupAnnotation\");\n    const popup = this.popup = new PopupElement({\n      container: this.container,\n      color: this.data.color,\n      titleObj: this.data.titleObj,\n      modificationDate: this.data.modificationDate,\n      contentsObj: this.data.contentsObj,\n      richText: this.data.richText,\n      rect: this.data.rect,\n      parentRect: this.data.parentRect || null,\n      parent: this.parent,\n      elements: this.elements,\n      open: this.data.open\n    });\n    const elementIds = [];\n    for (const element of this.elements) {\n      element.popup = popup;\n      elementIds.push(element.data.id);\n      element.addHighlightArea();\n    }\n    this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n    return this.container;\n  }\n}\nclass PopupElement {\n  #boundKeyDown = this.#keyDown.bind(this);\n  #boundHide = this.#hide.bind(this);\n  #boundShow = this.#show.bind(this);\n  #boundToggle = this.#toggle.bind(this);\n  #color = null;\n  #container = null;\n  #contentsObj = null;\n  #dateObj = null;\n  #elements = null;\n  #parent = null;\n  #parentRect = null;\n  #pinned = false;\n  #popup = null;\n  #position = null;\n  #rect = null;\n  #richText = null;\n  #titleObj = null;\n  #updates = null;\n  #wasVisible = false;\n  constructor({\n    container,\n    color,\n    elements,\n    titleObj,\n    modificationDate,\n    contentsObj,\n    richText,\n    parent,\n    rect,\n    parentRect,\n    open\n  }) {\n    this.#container = container;\n    this.#titleObj = titleObj;\n    this.#contentsObj = contentsObj;\n    this.#richText = richText;\n    this.#parent = parent;\n    this.#color = color;\n    this.#rect = rect;\n    this.#parentRect = parentRect;\n    this.#elements = elements;\n    this.#dateObj = PDFDateString.toDateObject(modificationDate);\n    this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n    for (const element of this.trigger) {\n      element.addEventListener(\"click\", this.#boundToggle);\n      element.addEventListener(\"mouseenter\", this.#boundShow);\n      element.addEventListener(\"mouseleave\", this.#boundHide);\n      element.classList.add(\"popupTriggerArea\");\n    }\n    for (const element of elements) {\n      element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n    }\n    this.#container.hidden = true;\n    if (open) {\n      this.#toggle();\n    }\n  }\n  render() {\n    if (this.#popup) {\n      return;\n    }\n    const popup = this.#popup = document.createElement(\"div\");\n    popup.className = \"popup\";\n    if (this.#color) {\n      const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n      if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n        popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n      } else {\n        const BACKGROUND_ENLIGHT = 0.7;\n        popup.style.backgroundColor = Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n      }\n    }\n    const header = document.createElement(\"span\");\n    header.className = \"header\";\n    const title = document.createElement(\"h1\");\n    header.append(title);\n    ({\n      dir: title.dir,\n      str: title.textContent\n    } = this.#titleObj);\n    popup.append(header);\n    if (this.#dateObj) {\n      const modificationDate = document.createElement(\"span\");\n      modificationDate.classList.add(\"popupDate\");\n      modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n      modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n        dateObj: this.#dateObj.valueOf()\n      }));\n      header.append(modificationDate);\n    }\n    const html = this.#html;\n    if (html) {\n      XfaLayer.render({\n        xfaHtml: html,\n        intent: \"richText\",\n        div: popup\n      });\n      popup.lastChild.classList.add(\"richText\", \"popupContent\");\n    } else {\n      const contents = this._formatContents(this.#contentsObj);\n      popup.append(contents);\n    }\n    this.#container.append(popup);\n  }\n  get #html() {\n    const richText = this.#richText;\n    const contentsObj = this.#contentsObj;\n    if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n      return this.#richText.html || null;\n    }\n    return null;\n  }\n  get #fontSize() {\n    return this.#html?.attributes?.style?.fontSize || 0;\n  }\n  get #fontColor() {\n    return this.#html?.attributes?.style?.color || null;\n  }\n  #makePopupContent(text) {\n    const popupLines = [];\n    const popupContent = {\n      str: text,\n      html: {\n        name: \"div\",\n        attributes: {\n          dir: \"auto\"\n        },\n        children: [{\n          name: \"p\",\n          children: popupLines\n        }]\n      }\n    };\n    const lineAttributes = {\n      style: {\n        color: this.#fontColor,\n        fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--scale-factor))` : \"\"\n      }\n    };\n    for (const line of text.split(\"\\n\")) {\n      popupLines.push({\n        name: \"span\",\n        value: line,\n        attributes: lineAttributes\n      });\n    }\n    return popupContent;\n  }\n  _formatContents({\n    str,\n    dir\n  }) {\n    const p = document.createElement(\"p\");\n    p.classList.add(\"popupContent\");\n    p.dir = dir;\n    const lines = str.split(/(?:\\r\\n?|\\n)/);\n    for (let i = 0, ii = lines.length; i < ii; ++i) {\n      const line = lines[i];\n      p.append(document.createTextNode(line));\n      if (i < ii - 1) {\n        p.append(document.createElement(\"br\"));\n      }\n    }\n    return p;\n  }\n  #keyDown(event) {\n    if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n    if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n      this.#toggle();\n    }\n  }\n  updateEdited({\n    rect,\n    popupContent\n  }) {\n    this.#updates ||= {\n      contentsObj: this.#contentsObj,\n      richText: this.#richText\n    };\n    if (rect) {\n      this.#position = null;\n    }\n    if (popupContent) {\n      this.#richText = this.#makePopupContent(popupContent);\n      this.#contentsObj = null;\n    }\n    this.#popup?.remove();\n    this.#popup = null;\n  }\n  resetEdited() {\n    if (!this.#updates) {\n      return;\n    }\n    ({\n      contentsObj: this.#contentsObj,\n      richText: this.#richText\n    } = this.#updates);\n    this.#updates = null;\n    this.#popup?.remove();\n    this.#popup = null;\n    this.#position = null;\n  }\n  #setPosition() {\n    if (this.#position !== null) {\n      return;\n    }\n    const {\n      page: {\n        view\n      },\n      viewport: {\n        rawDims: {\n          pageWidth,\n          pageHeight,\n          pageX,\n          pageY\n        }\n      }\n    } = this.#parent;\n    let useParentRect = !!this.#parentRect;\n    let rect = useParentRect ? this.#parentRect : this.#rect;\n    for (const element of this.#elements) {\n      if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n        rect = element.data.rect;\n        useParentRect = true;\n        break;\n      }\n    }\n    const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n    const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n    const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n    const popupLeft = normalizedRect[0] + parentWidth;\n    const popupTop = normalizedRect[1];\n    this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n    const {\n      style\n    } = this.#container;\n    style.left = `${this.#position[0]}%`;\n    style.top = `${this.#position[1]}%`;\n  }\n  #toggle() {\n    this.#pinned = !this.#pinned;\n    if (this.#pinned) {\n      this.#show();\n      this.#container.addEventListener(\"click\", this.#boundToggle);\n      this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n    } else {\n      this.#hide();\n      this.#container.removeEventListener(\"click\", this.#boundToggle);\n      this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n    }\n  }\n  #show() {\n    if (!this.#popup) {\n      this.render();\n    }\n    if (!this.isVisible) {\n      this.#setPosition();\n      this.#container.hidden = false;\n      this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n    } else if (this.#pinned) {\n      this.#container.classList.add(\"focused\");\n    }\n  }\n  #hide() {\n    this.#container.classList.remove(\"focused\");\n    if (this.#pinned || !this.isVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n    this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n  }\n  forceHide() {\n    this.#wasVisible = this.isVisible;\n    if (!this.#wasVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n  }\n  maybeShow() {\n    if (!this.#wasVisible) {\n      return;\n    }\n    if (!this.#popup) {\n      this.#show();\n    }\n    this.#wasVisible = false;\n    this.#container.hidden = false;\n  }\n  get isVisible() {\n    return this.#container.hidden === false;\n  }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.textContent = parameters.data.textContent;\n    this.textPosition = parameters.data.textPosition;\n    this.annotationEditorType = AnnotationEditorType.FREETEXT;\n  }\n  render() {\n    this.container.classList.add(\"freeTextAnnotation\");\n    if (this.textContent) {\n      const content = document.createElement(\"div\");\n      content.classList.add(\"annotationTextContent\");\n      content.setAttribute(\"role\", \"comment\");\n      for (const line of this.textContent) {\n        const lineSpan = document.createElement(\"span\");\n        lineSpan.textContent = line;\n        content.append(lineSpan);\n      }\n      this.container.append(content);\n    }\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this._editOnDoubleClick();\n    return this.container;\n  }\n}\nclass LineAnnotationElement extends AnnotationElement {\n  #line = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"lineAnnotation\");\n    const data = this.data;\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(width, height, true);\n    const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n    line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n    line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n    line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n    line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n    line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    line.setAttribute(\"stroke\", \"transparent\");\n    line.setAttribute(\"fill\", \"transparent\");\n    svg.append(line);\n    this.container.append(svg);\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#line;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n  #square = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"squareAnnotation\");\n    const data = this.data;\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(width, height, true);\n    const borderWidth = data.borderStyle.width;\n    const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n    square.setAttribute(\"x\", borderWidth / 2);\n    square.setAttribute(\"y\", borderWidth / 2);\n    square.setAttribute(\"width\", width - borderWidth);\n    square.setAttribute(\"height\", height - borderWidth);\n    square.setAttribute(\"stroke-width\", borderWidth || 1);\n    square.setAttribute(\"stroke\", \"transparent\");\n    square.setAttribute(\"fill\", \"transparent\");\n    svg.append(square);\n    this.container.append(svg);\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#square;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n  #circle = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"circleAnnotation\");\n    const data = this.data;\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(width, height, true);\n    const borderWidth = data.borderStyle.width;\n    const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n    circle.setAttribute(\"cx\", width / 2);\n    circle.setAttribute(\"cy\", height / 2);\n    circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n    circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n    circle.setAttribute(\"stroke-width\", borderWidth || 1);\n    circle.setAttribute(\"stroke\", \"transparent\");\n    circle.setAttribute(\"fill\", \"transparent\");\n    svg.append(circle);\n    this.container.append(svg);\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#circle;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n  #polyline = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.containerClassName = \"polylineAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n  }\n  render() {\n    this.container.classList.add(this.containerClassName);\n    const {\n      data: {\n        rect,\n        vertices,\n        borderStyle,\n        popupRef\n      }\n    } = this;\n    if (!vertices) {\n      return this.container;\n    }\n    const {\n      width,\n      height\n    } = getRectDims(rect);\n    const svg = this.svgFactory.create(width, height, true);\n    let points = [];\n    for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n      const x = vertices[i] - rect[0];\n      const y = rect[3] - vertices[i + 1];\n      points.push(`${x},${y}`);\n    }\n    points = points.join(\" \");\n    const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n    polyline.setAttribute(\"points\", points);\n    polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n    polyline.setAttribute(\"stroke\", \"transparent\");\n    polyline.setAttribute(\"fill\", \"transparent\");\n    svg.append(polyline);\n    this.container.append(svg);\n    if (!popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#polyline;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n  constructor(parameters) {\n    super(parameters);\n    this.containerClassName = \"polygonAnnotation\";\n    this.svgElementName = \"svg:polygon\";\n  }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n  }\n  render() {\n    this.container.classList.add(\"caretAnnotation\");\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n}\nclass InkAnnotationElement extends AnnotationElement {\n  #polylines = [];\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.containerClassName = \"inkAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n    this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n  }\n  render() {\n    this.container.classList.add(this.containerClassName);\n    const {\n      data: {\n        rect,\n        inkLists,\n        borderStyle,\n        popupRef\n      }\n    } = this;\n    const {\n      width,\n      height\n    } = getRectDims(rect);\n    const svg = this.svgFactory.create(width, height, true);\n    for (const inkList of inkLists) {\n      let points = [];\n      for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n        const x = inkList[i] - rect[0];\n        const y = rect[3] - inkList[i + 1];\n        points.push(`${x},${y}`);\n      }\n      points = points.join(\" \");\n      const polyline = this.svgFactory.createElement(this.svgElementName);\n      this.#polylines.push(polyline);\n      polyline.setAttribute(\"points\", points);\n      polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n      polyline.setAttribute(\"stroke\", \"transparent\");\n      polyline.setAttribute(\"fill\", \"transparent\");\n      if (!popupRef && this.hasPopupData) {\n        this._createPopup();\n      }\n      svg.append(polyline);\n    }\n    this.container.append(svg);\n    this._editOnDoubleClick();\n    return this.container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#polylines;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n    this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"highlightAnnotation\");\n    this._editOnDoubleClick();\n    return this.container;\n  }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"underlineAnnotation\");\n    return this.container;\n  }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"squigglyAnnotation\");\n    return this.container;\n  }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n  render() {\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this.container.classList.add(\"strikeoutAnnotation\");\n    return this.container;\n  }\n}\nclass StampAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true\n    });\n    this.annotationEditorType = AnnotationEditorType.STAMP;\n  }\n  render() {\n    this.container.classList.add(\"stampAnnotation\");\n    this.container.setAttribute(\"role\", \"img\");\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this._editOnDoubleClick();\n    return this.container;\n  }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n  #trigger = null;\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true\n    });\n    const {\n      file\n    } = this.data;\n    this.filename = file.filename;\n    this.content = file.content;\n    this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n      source: this,\n      ...file\n    });\n  }\n  render() {\n    this.container.classList.add(\"fileAttachmentAnnotation\");\n    const {\n      container,\n      data\n    } = this;\n    let trigger;\n    if (data.hasAppearance || data.fillAlpha === 0) {\n      trigger = document.createElement(\"div\");\n    } else {\n      trigger = document.createElement(\"img\");\n      trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n      if (data.fillAlpha && data.fillAlpha < 1) {\n        trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n      }\n    }\n    trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n    this.#trigger = trigger;\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    container.addEventListener(\"keydown\", evt => {\n      if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n        this.#download();\n      }\n    });\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    } else {\n      trigger.classList.add(\"popupTriggerArea\");\n    }\n    container.append(trigger);\n    return container;\n  }\n  getElementsToTriggerPopup() {\n    return this.#trigger;\n  }\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n  #download() {\n    this.downloadManager?.openOrDownloadData(this.content, this.filename);\n  }\n}\nclass AnnotationLayer {\n  #accessibilityManager = null;\n  #annotationCanvasMap = null;\n  #editableAnnotations = new Map();\n  #structTreeLayer = null;\n  constructor({\n    div,\n    accessibilityManager,\n    annotationCanvasMap,\n    annotationEditorUIManager,\n    page,\n    viewport,\n    structTreeLayer\n  }) {\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationCanvasMap = annotationCanvasMap;\n    this.#structTreeLayer = structTreeLayer || null;\n    this.page = page;\n    this.viewport = viewport;\n    this.zIndex = 0;\n    this._annotationEditorUIManager = annotationEditorUIManager;\n  }\n  hasEditableAnnotations() {\n    return this.#editableAnnotations.size > 0;\n  }\n  async #appendElement(element, id) {\n    const contentElement = element.firstChild || element;\n    const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n    const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n    if (ariaAttributes) {\n      for (const [key, value] of ariaAttributes) {\n        contentElement.setAttribute(key, value);\n      }\n    }\n    this.div.append(element);\n    this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n  }\n  async render(params) {\n    const {\n      annotations\n    } = params;\n    const layer = this.div;\n    setLayerDimensions(layer, this.viewport);\n    const popupToElements = new Map();\n    const elementParams = {\n      data: null,\n      layer,\n      linkService: params.linkService,\n      downloadManager: params.downloadManager,\n      imageResourcesPath: params.imageResourcesPath || \"\",\n      renderForms: params.renderForms !== false,\n      svgFactory: new DOMSVGFactory(),\n      annotationStorage: params.annotationStorage || new AnnotationStorage(),\n      enableScripting: params.enableScripting === true,\n      hasJSActions: params.hasJSActions,\n      fieldObjects: params.fieldObjects,\n      parent: this,\n      elements: null\n    };\n    for (const data of annotations) {\n      if (data.noHTML) {\n        continue;\n      }\n      const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n      if (!isPopupAnnotation) {\n        const {\n          width,\n          height\n        } = getRectDims(data.rect);\n        if (width <= 0 || height <= 0) {\n          continue;\n        }\n      } else {\n        const elements = popupToElements.get(data.id);\n        if (!elements) {\n          continue;\n        }\n        elementParams.elements = elements;\n      }\n      elementParams.data = data;\n      const element = AnnotationElementFactory.create(elementParams);\n      if (!element.isRenderable) {\n        continue;\n      }\n      if (!isPopupAnnotation && data.popupRef) {\n        const elements = popupToElements.get(data.popupRef);\n        if (!elements) {\n          popupToElements.set(data.popupRef, [element]);\n        } else {\n          elements.push(element);\n        }\n      }\n      const rendered = element.render();\n      if (data.hidden) {\n        rendered.style.visibility = \"hidden\";\n      }\n      await this.#appendElement(rendered, data.id);\n      if (element._isEditable) {\n        this.#editableAnnotations.set(element.data.id, element);\n        this._annotationEditorUIManager?.renderAnnotationElement(element);\n      }\n    }\n    this.#setAnnotationCanvasMap();\n  }\n  update({\n    viewport\n  }) {\n    const layer = this.div;\n    this.viewport = viewport;\n    setLayerDimensions(layer, {\n      rotation: viewport.rotation\n    });\n    this.#setAnnotationCanvasMap();\n    layer.hidden = false;\n  }\n  #setAnnotationCanvasMap() {\n    if (!this.#annotationCanvasMap) {\n      return;\n    }\n    const layer = this.div;\n    for (const [id, canvas] of this.#annotationCanvasMap) {\n      const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n      if (!element) {\n        continue;\n      }\n      canvas.className = \"annotationContent\";\n      const {\n        firstChild\n      } = element;\n      if (!firstChild) {\n        element.append(canvas);\n      } else if (firstChild.nodeName === \"CANVAS\") {\n        firstChild.replaceWith(canvas);\n      } else if (!firstChild.classList.contains(\"annotationContent\")) {\n        firstChild.before(canvas);\n      } else {\n        firstChild.after(canvas);\n      }\n    }\n    this.#annotationCanvasMap.clear();\n  }\n  getEditableAnnotations() {\n    return Array.from(this.#editableAnnotations.values());\n  }\n  getEditableAnnotation(id) {\n    return this.#editableAnnotations.get(id);\n  }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n  #color;\n  #content = \"\";\n  #editorDivId = `${this.id}-editor`;\n  #editModeAC = null;\n  #fontSize;\n  static _freeTextDefaultContent = \"\";\n  static _internalPadding = 0;\n  static _defaultColor = null;\n  static _defaultFontSize = 10;\n  static get _keyboardManager() {\n    const proto = FreeTextEditor.prototype;\n    const arrowChecker = self => self.isEmpty();\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n      bubbles: true\n    }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n      args: [-small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n      args: [-big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n      args: [small, 0],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n      args: [big, 0],\n      checker: arrowChecker\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n      args: [0, -small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n      args: [0, -big],\n      checker: arrowChecker\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n      args: [0, small],\n      checker: arrowChecker\n    }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n      args: [0, big],\n      checker: arrowChecker\n    }]]));\n  }\n  static _type = \"freetext\";\n  static _editorType = AnnotationEditorType.FREETEXT;\n  constructor(params) {\n    super({\n      ...params,\n      name: \"freeTextEditor\"\n    });\n    this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n    this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager, {\n      strings: [\"pdfjs-free-text-default-content\"]\n    });\n    const style = getComputedStyle(document.documentElement);\n    this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n  }\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        FreeTextEditor._defaultFontSize = value;\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        FreeTextEditor._defaultColor = value;\n        break;\n    }\n  }\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        this.#updateFontSize(value);\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        this.#updateColor(value);\n        break;\n    }\n  }\n  static get defaultPropertiesToUpdate() {\n    return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n  }\n  get propertiesToUpdate() {\n    return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n  }\n  #updateFontSize(fontSize) {\n    const setFontsize = size => {\n      this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n      this.translate(0, -(size - this.#fontSize) * this.parentScale);\n      this.#fontSize = size;\n      this.#setEditorDimensions();\n    };\n    const savedFontsize = this.#fontSize;\n    this.addCommands({\n      cmd: setFontsize.bind(this, fontSize),\n      undo: setFontsize.bind(this, savedFontsize),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_SIZE,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n  }\n  #updateColor(color) {\n    const setColor = col => {\n      this.#color = this.editorDiv.style.color = col;\n    };\n    const savedColor = this.#color;\n    this.addCommands({\n      cmd: setColor.bind(this, color),\n      undo: setColor.bind(this, savedColor),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n  }\n  _translateEmpty(x, y) {\n    this._uiManager.translateSelectedEditors(x, y, true);\n  }\n  getInitialTranslation() {\n    const scale = this.parentScale;\n    return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n  }\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n    }\n  }\n  enableEditMode() {\n    if (this.isInEditMode()) {\n      return;\n    }\n    this.parent.setEditingState(false);\n    this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n    super.enableEditMode();\n    this.overlayDiv.classList.remove(\"enabled\");\n    this.editorDiv.contentEditable = true;\n    this._isDraggable = false;\n    this.div.removeAttribute(\"aria-activedescendant\");\n    this.#editModeAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#editModeAC);\n    this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n      signal\n    });\n    this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n      signal\n    });\n  }\n  disableEditMode() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n    this.parent.setEditingState(true);\n    super.disableEditMode();\n    this.overlayDiv.classList.add(\"enabled\");\n    this.editorDiv.contentEditable = false;\n    this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n    this._isDraggable = true;\n    this.#editModeAC?.abort();\n    this.#editModeAC = null;\n    this.div.focus({\n      preventScroll: true\n    });\n    this.isEditing = false;\n    this.parent.div.classList.add(\"freetextEditing\");\n  }\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    super.focusin(event);\n    if (event.target !== this.editorDiv) {\n      this.editorDiv.focus();\n    }\n  }\n  onceAdded() {\n    if (this.width) {\n      return;\n    }\n    this.enableEditMode();\n    this.editorDiv.focus();\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    }\n    this._initialOptions = null;\n  }\n  isEmpty() {\n    return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n  }\n  remove() {\n    this.isEditing = false;\n    if (this.parent) {\n      this.parent.setEditingState(true);\n      this.parent.div.classList.add(\"freetextEditing\");\n    }\n    super.remove();\n  }\n  #extractText() {\n    const buffer = [];\n    this.editorDiv.normalize();\n    let prevChild = null;\n    for (const child of this.editorDiv.childNodes) {\n      if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n        continue;\n      }\n      buffer.push(FreeTextEditor.#getNodeContent(child));\n      prevChild = child;\n    }\n    return buffer.join(\"\\n\");\n  }\n  #setEditorDimensions() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    let rect;\n    if (this.isAttachedToDOM) {\n      rect = this.div.getBoundingClientRect();\n    } else {\n      const {\n        currentLayer,\n        div\n      } = this;\n      const savedDisplay = div.style.display;\n      const savedVisibility = div.classList.contains(\"hidden\");\n      div.classList.remove(\"hidden\");\n      div.style.display = \"hidden\";\n      currentLayer.div.append(this.div);\n      rect = div.getBoundingClientRect();\n      div.remove();\n      div.style.display = savedDisplay;\n      div.classList.toggle(\"hidden\", savedVisibility);\n    }\n    if (this.rotation % 180 === this.parentRotation % 180) {\n      this.width = rect.width / parentWidth;\n      this.height = rect.height / parentHeight;\n    } else {\n      this.width = rect.height / parentWidth;\n      this.height = rect.width / parentHeight;\n    }\n    this.fixAndSetPosition();\n  }\n  commit() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n    super.commit();\n    this.disableEditMode();\n    const savedText = this.#content;\n    const newText = this.#content = this.#extractText().trimEnd();\n    if (savedText === newText) {\n      return;\n    }\n    const setText = text => {\n      this.#content = text;\n      if (!text) {\n        this.remove();\n        return;\n      }\n      this.#setContent();\n      this._uiManager.rebuild(this);\n      this.#setEditorDimensions();\n    };\n    this.addCommands({\n      cmd: () => {\n        setText(newText);\n      },\n      undo: () => {\n        setText(savedText);\n      },\n      mustExec: false\n    });\n    this.#setEditorDimensions();\n  }\n  shouldGetKeyboardEvents() {\n    return this.isInEditMode();\n  }\n  enterInEditMode() {\n    this.enableEditMode();\n    this.editorDiv.focus();\n  }\n  dblclick(event) {\n    this.enterInEditMode();\n  }\n  keydown(event) {\n    if (event.target === this.div && event.key === \"Enter\") {\n      this.enterInEditMode();\n      event.preventDefault();\n    }\n  }\n  editorDivKeydown(event) {\n    FreeTextEditor._keyboardManager.exec(this, event);\n  }\n  editorDivFocus(event) {\n    this.isEditing = true;\n  }\n  editorDivBlur(event) {\n    this.isEditing = false;\n  }\n  editorDivInput(event) {\n    this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n  }\n  disableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"comment\");\n    this.editorDiv.removeAttribute(\"aria-multiline\");\n  }\n  enableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"textbox\");\n    this.editorDiv.setAttribute(\"aria-multiline\", true);\n  }\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n    super.render();\n    this.editorDiv = document.createElement(\"div\");\n    this.editorDiv.className = \"internal\";\n    this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n    this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text\");\n    this.enableEditing();\n    AnnotationEditor._l10nPromise.get(\"pdfjs-free-text-default-content\").then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n    this.editorDiv.contentEditable = true;\n    const {\n      style\n    } = this.editorDiv;\n    style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n    style.color = this.#color;\n    this.div.append(this.editorDiv);\n    this.overlayDiv = document.createElement(\"div\");\n    this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n    this.div.append(this.overlayDiv);\n    bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n    if (this.width) {\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      if (this.annotationElementId) {\n        const {\n          position\n        } = this._initialData;\n        let [tx, ty] = this.getInitialTranslation();\n        [tx, ty] = this.pageTranslationToScreen(tx, ty);\n        const [pageWidth, pageHeight] = this.pageDimensions;\n        const [pageX, pageY] = this.pageTranslation;\n        let posX, posY;\n        switch (this.rotation) {\n          case 0:\n            posX = baseX + (position[0] - pageX) / pageWidth;\n            posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n            break;\n          case 90:\n            posX = baseX + (position[0] - pageX) / pageWidth;\n            posY = baseY - (position[1] - pageY) / pageHeight;\n            [tx, ty] = [ty, -tx];\n            break;\n          case 180:\n            posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n            posY = baseY - (position[1] - pageY) / pageHeight;\n            [tx, ty] = [-tx, -ty];\n            break;\n          case 270:\n            posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n            posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n            [tx, ty] = [-ty, tx];\n            break;\n        }\n        this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n      } else {\n        this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n      }\n      this.#setContent();\n      this._isDraggable = true;\n      this.editorDiv.contentEditable = false;\n    } else {\n      this._isDraggable = false;\n      this.editorDiv.contentEditable = true;\n    }\n    return this.div;\n  }\n  static #getNodeContent(node) {\n    return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n  }\n  editorDivPaste(event) {\n    const clipboardData = event.clipboardData || window.clipboardData;\n    const {\n      types\n    } = clipboardData;\n    if (types.length === 1 && types[0] === \"text/plain\") {\n      return;\n    }\n    event.preventDefault();\n    const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n    if (!paste) {\n      return;\n    }\n    const selection = window.getSelection();\n    if (!selection.rangeCount) {\n      return;\n    }\n    this.editorDiv.normalize();\n    selection.deleteFromDocument();\n    const range = selection.getRangeAt(0);\n    if (!paste.includes(\"\\n\")) {\n      range.insertNode(document.createTextNode(paste));\n      this.editorDiv.normalize();\n      selection.collapseToStart();\n      return;\n    }\n    const {\n      startContainer,\n      startOffset\n    } = range;\n    const bufferBefore = [];\n    const bufferAfter = [];\n    if (startContainer.nodeType === Node.TEXT_NODE) {\n      const parent = startContainer.parentElement;\n      bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n      if (parent !== this.editorDiv) {\n        let buffer = bufferBefore;\n        for (const child of this.editorDiv.childNodes) {\n          if (child === parent) {\n            buffer = bufferAfter;\n            continue;\n          }\n          buffer.push(FreeTextEditor.#getNodeContent(child));\n        }\n      }\n      bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n    } else if (startContainer === this.editorDiv) {\n      let buffer = bufferBefore;\n      let i = 0;\n      for (const child of this.editorDiv.childNodes) {\n        if (i++ === startOffset) {\n          buffer = bufferAfter;\n        }\n        buffer.push(FreeTextEditor.#getNodeContent(child));\n      }\n    }\n    this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n    this.#setContent();\n    const newRange = new Range();\n    let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n    for (const {\n      firstChild\n    } of this.editorDiv.childNodes) {\n      if (firstChild.nodeType === Node.TEXT_NODE) {\n        const length = firstChild.nodeValue.length;\n        if (beforeLength <= length) {\n          newRange.setStart(firstChild, beforeLength);\n          newRange.setEnd(firstChild, beforeLength);\n          break;\n        }\n        beforeLength -= length;\n      }\n    }\n    selection.removeAllRanges();\n    selection.addRange(newRange);\n  }\n  #setContent() {\n    this.editorDiv.replaceChildren();\n    if (!this.#content) {\n      return;\n    }\n    for (const line of this.#content.split(\"\\n\")) {\n      const div = document.createElement(\"div\");\n      div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n      this.editorDiv.append(div);\n    }\n  }\n  #serializeContent() {\n    return this.#content.replaceAll(\"\\xa0\", \" \");\n  }\n  static #deserializeContent(content) {\n    return content.replaceAll(\" \", \"\\xa0\");\n  }\n  get contentDiv() {\n    return this.editorDiv;\n  }\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof FreeTextAnnotationElement) {\n      const {\n        data: {\n          defaultAppearanceData: {\n            fontSize,\n            fontColor\n          },\n          rect,\n          rotation,\n          id,\n          popupRef\n        },\n        textContent,\n        textPosition,\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      if (!textContent || textContent.length === 0) {\n        return null;\n      }\n      initialData = data = {\n        annotationType: AnnotationEditorType.FREETEXT,\n        color: Array.from(fontColor),\n        fontSize,\n        value: textContent.join(\"\\n\"),\n        position: textPosition,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        popupRef\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.#fontSize = data.fontSize;\n    editor.#color = Util.makeHexColor(...data.color);\n    editor.#content = FreeTextEditor.#deserializeContent(data.value);\n    editor.annotationElementId = data.id || null;\n    editor._initialData = initialData;\n    return editor;\n  }\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    const rect = this.getRect(padding, padding);\n    const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n    const serialized = {\n      annotationType: AnnotationEditorType.FREETEXT,\n      color,\n      fontSize: this.#fontSize,\n      value: this.#serializeContent(),\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId\n    };\n    if (isForCopying) {\n      return serialized;\n    }\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n  #hasElementChanged(serialized) {\n    const {\n      value,\n      fontSize,\n      color,\n      pageIndex\n    } = this._initialData;\n    return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n  }\n  renderAnnotationElement(annotation) {\n    const content = super.renderAnnotationElement(annotation);\n    if (this.deleted) {\n      return content;\n    }\n    const {\n      style\n    } = content;\n    style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n    style.color = this.#color;\n    content.replaceChildren();\n    for (const line of this.#content.split(\"\\n\")) {\n      const div = document.createElement(\"div\");\n      div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n      content.append(div);\n    }\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    annotation.updateEdited({\n      rect: this.getRect(padding, padding),\n      popupContent: this.#content\n    });\n    return content;\n  }\n  resetAnnotationElement(annotation) {\n    super.resetAnnotationElement(annotation);\n    annotation.resetEdited();\n  }\n}\n\n;// ./src/display/editor/outliner.js\n\nclass Outliner {\n  #box;\n  #verticalEdges = [];\n  #intervals = [];\n  constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n    let minX = Infinity;\n    let maxX = -Infinity;\n    let minY = Infinity;\n    let maxY = -Infinity;\n    const NUMBER_OF_DIGITS = 4;\n    const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n    for (const {\n      x,\n      y,\n      width,\n      height\n    } of boxes) {\n      const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n      const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n      const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n      const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n      const left = [x1, y1, y2, true];\n      const right = [x2, y1, y2, false];\n      this.#verticalEdges.push(left, right);\n      minX = Math.min(minX, x1);\n      maxX = Math.max(maxX, x2);\n      minY = Math.min(minY, y1);\n      maxY = Math.max(maxY, y2);\n    }\n    const bboxWidth = maxX - minX + 2 * innerMargin;\n    const bboxHeight = maxY - minY + 2 * innerMargin;\n    const shiftedMinX = minX - innerMargin;\n    const shiftedMinY = minY - innerMargin;\n    const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n    const lastPoint = [lastEdge[0], lastEdge[2]];\n    for (const edge of this.#verticalEdges) {\n      const [x, y1, y2] = edge;\n      edge[0] = (x - shiftedMinX) / bboxWidth;\n      edge[1] = (y1 - shiftedMinY) / bboxHeight;\n      edge[2] = (y2 - shiftedMinY) / bboxHeight;\n    }\n    this.#box = {\n      x: shiftedMinX,\n      y: shiftedMinY,\n      width: bboxWidth,\n      height: bboxHeight,\n      lastPoint\n    };\n  }\n  getOutlines() {\n    this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n    const outlineVerticalEdges = [];\n    for (const edge of this.#verticalEdges) {\n      if (edge[3]) {\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n        this.#insert(edge);\n      } else {\n        this.#remove(edge);\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n      }\n    }\n    return this.#getOutlines(outlineVerticalEdges);\n  }\n  #getOutlines(outlineVerticalEdges) {\n    const edges = [];\n    const allEdges = new Set();\n    for (const edge of outlineVerticalEdges) {\n      const [x, y1, y2] = edge;\n      edges.push([x, y1, edge], [x, y2, edge]);\n    }\n    edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n    for (let i = 0, ii = edges.length; i < ii; i += 2) {\n      const edge1 = edges[i][2];\n      const edge2 = edges[i + 1][2];\n      edge1.push(edge2);\n      edge2.push(edge1);\n      allEdges.add(edge1);\n      allEdges.add(edge2);\n    }\n    const outlines = [];\n    let outline;\n    while (allEdges.size > 0) {\n      const edge = allEdges.values().next().value;\n      let [x, y1, y2, edge1, edge2] = edge;\n      allEdges.delete(edge);\n      let lastPointX = x;\n      let lastPointY = y1;\n      outline = [x, y2];\n      outlines.push(outline);\n      while (true) {\n        let e;\n        if (allEdges.has(edge1)) {\n          e = edge1;\n        } else if (allEdges.has(edge2)) {\n          e = edge2;\n        } else {\n          break;\n        }\n        allEdges.delete(e);\n        [x, y1, y2, edge1, edge2] = e;\n        if (lastPointX !== x) {\n          outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n          lastPointX = x;\n        }\n        lastPointY = lastPointY === y1 ? y2 : y1;\n      }\n      outline.push(lastPointX, lastPointY);\n    }\n    return new HighlightOutline(outlines, this.#box);\n  }\n  #binarySearch(y) {\n    const array = this.#intervals;\n    let start = 0;\n    let end = array.length - 1;\n    while (start <= end) {\n      const middle = start + end >> 1;\n      const y1 = array[middle][0];\n      if (y1 === y) {\n        return middle;\n      }\n      if (y1 < y) {\n        start = middle + 1;\n      } else {\n        end = middle - 1;\n      }\n    }\n    return end + 1;\n  }\n  #insert([, y1, y2]) {\n    const index = this.#binarySearch(y1);\n    this.#intervals.splice(index, 0, [y1, y2]);\n  }\n  #remove([, y1, y2]) {\n    const index = this.#binarySearch(y1);\n    for (let i = index; i < this.#intervals.length; i++) {\n      const [start, end] = this.#intervals[i];\n      if (start !== y1) {\n        break;\n      }\n      if (start === y1 && end === y2) {\n        this.#intervals.splice(i, 1);\n        return;\n      }\n    }\n    for (let i = index - 1; i >= 0; i--) {\n      const [start, end] = this.#intervals[i];\n      if (start !== y1) {\n        break;\n      }\n      if (start === y1 && end === y2) {\n        this.#intervals.splice(i, 1);\n        return;\n      }\n    }\n  }\n  #breakEdge(edge) {\n    const [x, y1, y2] = edge;\n    const results = [[x, y1, y2]];\n    const index = this.#binarySearch(y2);\n    for (let i = 0; i < index; i++) {\n      const [start, end] = this.#intervals[i];\n      for (let j = 0, jj = results.length; j < jj; j++) {\n        const [, y3, y4] = results[j];\n        if (end <= y3 || y4 <= start) {\n          continue;\n        }\n        if (y3 >= start) {\n          if (y4 > end) {\n            results[j][1] = end;\n          } else {\n            if (jj === 1) {\n              return [];\n            }\n            results.splice(j, 1);\n            j--;\n            jj--;\n          }\n          continue;\n        }\n        results[j][2] = start;\n        if (y4 > end) {\n          results.push([x, end, y4]);\n        }\n      }\n    }\n    return results;\n  }\n}\nclass Outline {\n  toSVGPath() {\n    throw new Error(\"Abstract method `toSVGPath` must be implemented.\");\n  }\n  get box() {\n    throw new Error(\"Abstract getter `box` must be implemented.\");\n  }\n  serialize(_bbox, _rotation) {\n    throw new Error(\"Abstract method `serialize` must be implemented.\");\n  }\n  get free() {\n    return this instanceof FreeHighlightOutline;\n  }\n}\nclass HighlightOutline extends Outline {\n  #box;\n  #outlines;\n  constructor(outlines, box) {\n    super();\n    this.#outlines = outlines;\n    this.#box = box;\n  }\n  toSVGPath() {\n    const buffer = [];\n    for (const polygon of this.#outlines) {\n      let [prevX, prevY] = polygon;\n      buffer.push(`M${prevX} ${prevY}`);\n      for (let i = 2; i < polygon.length; i += 2) {\n        const x = polygon[i];\n        const y = polygon[i + 1];\n        if (x === prevX) {\n          buffer.push(`V${y}`);\n          prevY = y;\n        } else if (y === prevY) {\n          buffer.push(`H${x}`);\n          prevX = x;\n        }\n      }\n      buffer.push(\"Z\");\n    }\n    return buffer.join(\" \");\n  }\n  serialize([blX, blY, trX, trY], _rotation) {\n    const outlines = [];\n    const width = trX - blX;\n    const height = trY - blY;\n    for (const outline of this.#outlines) {\n      const points = new Array(outline.length);\n      for (let i = 0; i < outline.length; i += 2) {\n        points[i] = blX + outline[i] * width;\n        points[i + 1] = trY - outline[i + 1] * height;\n      }\n      outlines.push(points);\n    }\n    return outlines;\n  }\n  get box() {\n    return this.#box;\n  }\n}\nclass FreeOutliner {\n  #box;\n  #bottom = [];\n  #innerMargin;\n  #isLTR;\n  #top = [];\n  #last = new Float64Array(18);\n  #lastX;\n  #lastY;\n  #min;\n  #min_dist;\n  #scaleFactor;\n  #thickness;\n  #points = [];\n  static #MIN_DIST = 8;\n  static #MIN_DIFF = 2;\n  static #MIN = FreeOutliner.#MIN_DIST + FreeOutliner.#MIN_DIFF;\n  constructor({\n    x,\n    y\n  }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    this.#box = box;\n    this.#thickness = thickness * scaleFactor;\n    this.#isLTR = isLTR;\n    this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n    this.#innerMargin = innerMargin;\n    this.#min_dist = FreeOutliner.#MIN_DIST * scaleFactor;\n    this.#min = FreeOutliner.#MIN * scaleFactor;\n    this.#scaleFactor = scaleFactor;\n    this.#points.push(x, y);\n  }\n  get free() {\n    return true;\n  }\n  isEmpty() {\n    return isNaN(this.#last[8]);\n  }\n  #getLastCoords() {\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [x, y, width, height] = this.#box;\n    return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n  }\n  add({\n    x,\n    y\n  }) {\n    this.#lastX = x;\n    this.#lastY = y;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n    const diffX = x - x2;\n    const diffY = y - y2;\n    const d = Math.hypot(diffX, diffY);\n    if (d < this.#min) {\n      return false;\n    }\n    const diffD = d - this.#min_dist;\n    const K = diffD / d;\n    const shiftX = K * diffX;\n    const shiftY = K * diffY;\n    let x0 = x1;\n    let y0 = y1;\n    x1 = x2;\n    y1 = y2;\n    x2 += shiftX;\n    y2 += shiftY;\n    this.#points?.push(x, y);\n    const nX = -shiftY / diffD;\n    const nY = shiftX / diffD;\n    const thX = nX * this.#thickness;\n    const thY = nY * this.#thickness;\n    this.#last.set(this.#last.subarray(2, 8), 0);\n    this.#last.set([x2 + thX, y2 + thY], 4);\n    this.#last.set(this.#last.subarray(14, 18), 12);\n    this.#last.set([x2 - thX, y2 - thY], 16);\n    if (isNaN(this.#last[6])) {\n      if (this.#top.length === 0) {\n        this.#last.set([x1 + thX, y1 + thY], 2);\n        this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n        this.#last.set([x1 - thX, y1 - thY], 14);\n        this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n      }\n      this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n      return !this.isEmpty();\n    }\n    this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n    const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n    if (angle < Math.PI / 2) {\n      [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n      this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n      [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n      this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n      return true;\n    }\n    [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n    this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n    [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n    this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n    return true;\n  }\n  toSVGPath() {\n    if (this.isEmpty()) {\n      return \"\";\n    }\n    const top = this.#top;\n    const bottom = this.#bottom;\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [x, y, width, height] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n    if (isNaN(this.#last[6]) && !this.isEmpty()) {\n      return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n    }\n    const buffer = [];\n    buffer.push(`M${top[4]} ${top[5]}`);\n    for (let i = 6; i < top.length; i += 6) {\n      if (isNaN(top[i])) {\n        buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n      } else {\n        buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n      }\n    }\n    buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\n      if (isNaN(bottom[i])) {\n        buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n      } else {\n        buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n      }\n    }\n    buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n    return buffer.join(\" \");\n  }\n  getOutlines() {\n    const top = this.#top;\n    const bottom = this.#bottom;\n    const last = this.#last;\n    const lastTop = last.subarray(4, 6);\n    const lastBottom = last.subarray(16, 18);\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const points = new Float64Array((this.#points?.length ?? 0) + 2);\n    for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n      points[i] = (this.#points[i] - layerX) / layerWidth;\n      points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n    }\n    points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n    points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n    if (isNaN(last[6]) && !this.isEmpty()) {\n      const outline = new Float64Array(36);\n      outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n      return new FreeHighlightOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n    }\n    const outline = new Float64Array(this.#top.length + 24 + this.#bottom.length);\n    let N = top.length;\n    for (let i = 0; i < N; i += 2) {\n      if (isNaN(top[i])) {\n        outline[i] = outline[i + 1] = NaN;\n        continue;\n      }\n      outline[i] = top[i];\n      outline[i + 1] = top[i + 1];\n    }\n    outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], N);\n    N += 24;\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\n      for (let j = 0; j < 6; j += 2) {\n        if (isNaN(bottom[i + j])) {\n          outline[N] = outline[N + 1] = NaN;\n          N += 2;\n          continue;\n        }\n        outline[N] = bottom[i + j];\n        outline[N + 1] = bottom[i + j + 1];\n        N += 2;\n      }\n    }\n    outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], N);\n    return new FreeHighlightOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n  }\n}\nclass FreeHighlightOutline extends Outline {\n  #box;\n  #bbox = null;\n  #innerMargin;\n  #isLTR;\n  #points;\n  #scaleFactor;\n  #outline;\n  constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    super();\n    this.#outline = outline;\n    this.#points = points;\n    this.#box = box;\n    this.#scaleFactor = scaleFactor;\n    this.#innerMargin = innerMargin;\n    this.#isLTR = isLTR;\n    this.#computeMinMax(isLTR);\n    const {\n      x,\n      y,\n      width,\n      height\n    } = this.#bbox;\n    for (let i = 0, ii = outline.length; i < ii; i += 2) {\n      outline[i] = (outline[i] - x) / width;\n      outline[i + 1] = (outline[i + 1] - y) / height;\n    }\n    for (let i = 0, ii = points.length; i < ii; i += 2) {\n      points[i] = (points[i] - x) / width;\n      points[i + 1] = (points[i + 1] - y) / height;\n    }\n  }\n  toSVGPath() {\n    const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n    for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n      if (isNaN(this.#outline[i])) {\n        buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n        continue;\n      }\n      buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n    }\n    buffer.push(\"Z\");\n    return buffer.join(\" \");\n  }\n  serialize([blX, blY, trX, trY], rotation) {\n    const width = trX - blX;\n    const height = trY - blY;\n    let outline;\n    let points;\n    switch (rotation) {\n      case 0:\n        outline = this.#rescale(this.#outline, blX, trY, width, -height);\n        points = this.#rescale(this.#points, blX, trY, width, -height);\n        break;\n      case 90:\n        outline = this.#rescaleAndSwap(this.#outline, blX, blY, width, height);\n        points = this.#rescaleAndSwap(this.#points, blX, blY, width, height);\n        break;\n      case 180:\n        outline = this.#rescale(this.#outline, trX, blY, -width, height);\n        points = this.#rescale(this.#points, trX, blY, -width, height);\n        break;\n      case 270:\n        outline = this.#rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n        points = this.#rescaleAndSwap(this.#points, trX, trY, -width, -height);\n        break;\n    }\n    return {\n      outline: Array.from(outline),\n      points: [Array.from(points)]\n    };\n  }\n  #rescale(src, tx, ty, sx, sy) {\n    const dest = new Float64Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i] * sx;\n      dest[i + 1] = ty + src[i + 1] * sy;\n    }\n    return dest;\n  }\n  #rescaleAndSwap(src, tx, ty, sx, sy) {\n    const dest = new Float64Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i + 1] * sx;\n      dest[i + 1] = ty + src[i] * sy;\n    }\n    return dest;\n  }\n  #computeMinMax(isLTR) {\n    const outline = this.#outline;\n    let lastX = outline[4];\n    let lastY = outline[5];\n    let minX = lastX;\n    let minY = lastY;\n    let maxX = lastX;\n    let maxY = lastY;\n    let lastPointX = lastX;\n    let lastPointY = lastY;\n    const ltrCallback = isLTR ? Math.max : Math.min;\n    for (let i = 6, ii = outline.length; i < ii; i += 6) {\n      if (isNaN(outline[i])) {\n        minX = Math.min(minX, outline[i + 4]);\n        minY = Math.min(minY, outline[i + 5]);\n        maxX = Math.max(maxX, outline[i + 4]);\n        maxY = Math.max(maxY, outline[i + 5]);\n        if (lastPointY < outline[i + 5]) {\n          lastPointX = outline[i + 4];\n          lastPointY = outline[i + 5];\n        } else if (lastPointY === outline[i + 5]) {\n          lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n        }\n      } else {\n        const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n        minX = Math.min(minX, bbox[0]);\n        minY = Math.min(minY, bbox[1]);\n        maxX = Math.max(maxX, bbox[2]);\n        maxY = Math.max(maxY, bbox[3]);\n        if (lastPointY < bbox[3]) {\n          lastPointX = bbox[2];\n          lastPointY = bbox[3];\n        } else if (lastPointY === bbox[3]) {\n          lastPointX = ltrCallback(lastPointX, bbox[2]);\n        }\n      }\n      lastX = outline[i + 4];\n      lastY = outline[i + 5];\n    }\n    const x = minX - this.#innerMargin,\n      y = minY - this.#innerMargin,\n      width = maxX - minX + 2 * this.#innerMargin,\n      height = maxY - minY + 2 * this.#innerMargin;\n    this.#bbox = {\n      x,\n      y,\n      width,\n      height,\n      lastPoint: [lastPointX, lastPointY]\n    };\n  }\n  get box() {\n    return this.#bbox;\n  }\n  getNewOutline(thickness, innerMargin) {\n    const {\n      x,\n      y,\n      width,\n      height\n    } = this.#bbox;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const sx = width * layerWidth;\n    const sy = height * layerHeight;\n    const tx = x * layerWidth + layerX;\n    const ty = y * layerHeight + layerY;\n    const outliner = new FreeOutliner({\n      x: this.#points[0] * sx + tx,\n      y: this.#points[1] * sy + ty\n    }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n    for (let i = 2; i < this.#points.length; i += 2) {\n      outliner.add({\n        x: this.#points[i] * sx + tx,\n        y: this.#points[i + 1] * sy + ty\n      });\n    }\n    return outliner.getOutlines();\n  }\n}\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n  #boundKeyDown = this.#keyDown.bind(this);\n  #boundPointerDown = this.#pointerDown.bind(this);\n  #button = null;\n  #buttonSwatch = null;\n  #defaultColor;\n  #dropdown = null;\n  #dropdownWasFromKeyboard = false;\n  #isMainColorPicker = false;\n  #editor = null;\n  #eventBus;\n  #uiManager = null;\n  #type;\n  static #l10nColor = null;\n  static get _keyboardManager() {\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n  }\n  constructor({\n    editor = null,\n    uiManager = null\n  }) {\n    if (editor) {\n      this.#isMainColorPicker = false;\n      this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n      this.#editor = editor;\n    } else {\n      this.#isMainColorPicker = true;\n      this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n    }\n    this.#uiManager = editor?._uiManager || uiManager;\n    this.#eventBus = this.#uiManager._eventBus;\n    this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n    ColorPicker.#l10nColor ||= Object.freeze({\n      blue: \"pdfjs-editor-colorpicker-blue\",\n      green: \"pdfjs-editor-colorpicker-green\",\n      pink: \"pdfjs-editor-colorpicker-pink\",\n      red: \"pdfjs-editor-colorpicker-red\",\n      yellow: \"pdfjs-editor-colorpicker-yellow\"\n    });\n  }\n  renderButton() {\n    const button = this.#button = document.createElement(\"button\");\n    button.className = \"colorPicker\";\n    button.tabIndex = \"0\";\n    button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n    button.setAttribute(\"aria-haspopup\", true);\n    const signal = this.#uiManager._signal;\n    button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n      signal\n    });\n    button.addEventListener(\"keydown\", this.#boundKeyDown, {\n      signal\n    });\n    const swatch = this.#buttonSwatch = document.createElement(\"span\");\n    swatch.className = \"swatch\";\n    swatch.setAttribute(\"aria-hidden\", true);\n    swatch.style.backgroundColor = this.#defaultColor;\n    button.append(swatch);\n    return button;\n  }\n  renderMainDropdown() {\n    const dropdown = this.#dropdown = this.#getDropdownRoot();\n    dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n    dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n    return dropdown;\n  }\n  #getDropdownRoot() {\n    const div = document.createElement(\"div\");\n    const signal = this.#uiManager._signal;\n    div.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    div.className = \"dropdown\";\n    div.role = \"listbox\";\n    div.setAttribute(\"aria-multiselectable\", false);\n    div.setAttribute(\"aria-orientation\", \"vertical\");\n    div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n    for (const [name, color] of this.#uiManager.highlightColors) {\n      const button = document.createElement(\"button\");\n      button.tabIndex = \"0\";\n      button.role = \"option\";\n      button.setAttribute(\"data-color\", color);\n      button.title = name;\n      button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n      const swatch = document.createElement(\"span\");\n      button.append(swatch);\n      swatch.className = \"swatch\";\n      swatch.style.backgroundColor = color;\n      button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n      button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n        signal\n      });\n      div.append(button);\n    }\n    div.addEventListener(\"keydown\", this.#boundKeyDown, {\n      signal\n    });\n    return div;\n  }\n  #colorSelect(color, event) {\n    event.stopPropagation();\n    this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n      source: this,\n      type: this.#type,\n      value: color\n    });\n  }\n  _colorSelectFromKeyboard(event) {\n    if (event.target === this.#button) {\n      this.#openDropdown(event);\n      return;\n    }\n    const color = event.target.getAttribute(\"data-color\");\n    if (!color) {\n      return;\n    }\n    this.#colorSelect(color, event);\n  }\n  _moveToNext(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    if (event.target === this.#button) {\n      this.#dropdown.firstChild?.focus();\n      return;\n    }\n    event.target.nextSibling?.focus();\n  }\n  _moveToPrevious(event) {\n    if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n      if (this.#isDropdownVisible) {\n        this._hideDropdownFromKeyboard();\n      }\n      return;\n    }\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n    }\n    event.target.previousSibling?.focus();\n  }\n  _moveToBeginning(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    this.#dropdown.firstChild?.focus();\n  }\n  _moveToEnd(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    this.#dropdown.lastChild?.focus();\n  }\n  #keyDown(event) {\n    ColorPicker._keyboardManager.exec(this, event);\n  }\n  #openDropdown(event) {\n    if (this.#isDropdownVisible) {\n      this.hideDropdown();\n      return;\n    }\n    this.#dropdownWasFromKeyboard = event.detail === 0;\n    window.addEventListener(\"pointerdown\", this.#boundPointerDown, {\n      signal: this.#uiManager._signal\n    });\n    if (this.#dropdown) {\n      this.#dropdown.classList.remove(\"hidden\");\n      return;\n    }\n    const root = this.#dropdown = this.#getDropdownRoot();\n    this.#button.append(root);\n  }\n  #pointerDown(event) {\n    if (this.#dropdown?.contains(event.target)) {\n      return;\n    }\n    this.hideDropdown();\n  }\n  hideDropdown() {\n    this.#dropdown?.classList.add(\"hidden\");\n    window.removeEventListener(\"pointerdown\", this.#boundPointerDown);\n  }\n  get #isDropdownVisible() {\n    return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n  }\n  _hideDropdownFromKeyboard() {\n    if (this.#isMainColorPicker) {\n      return;\n    }\n    if (!this.#isDropdownVisible) {\n      this.#editor?.unselect();\n      return;\n    }\n    this.hideDropdown();\n    this.#button.focus({\n      preventScroll: true,\n      focusVisible: this.#dropdownWasFromKeyboard\n    });\n  }\n  updateColor(color) {\n    if (this.#buttonSwatch) {\n      this.#buttonSwatch.style.backgroundColor = color;\n    }\n    if (!this.#dropdown) {\n      return;\n    }\n    const i = this.#uiManager.highlightColors.values();\n    for (const child of this.#dropdown.children) {\n      child.setAttribute(\"aria-selected\", i.next().value === color);\n    }\n  }\n  destroy() {\n    this.#button?.remove();\n    this.#button = null;\n    this.#buttonSwatch = null;\n    this.#dropdown?.remove();\n    this.#dropdown = null;\n  }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n  #anchorNode = null;\n  #anchorOffset = 0;\n  #boxes;\n  #clipPathId = null;\n  #colorPicker = null;\n  #focusOutlines = null;\n  #focusNode = null;\n  #focusOffset = 0;\n  #highlightDiv = null;\n  #highlightOutlines = null;\n  #id = null;\n  #isFreeHighlight = false;\n  #lastPoint = null;\n  #opacity;\n  #outlineId = null;\n  #text = \"\";\n  #thickness;\n  #methodOfCreation = \"\";\n  static _defaultColor = null;\n  static _defaultOpacity = 1;\n  static _defaultThickness = 12;\n  static _type = \"highlight\";\n  static _editorType = AnnotationEditorType.HIGHLIGHT;\n  static _freeHighlightId = -1;\n  static _freeHighlight = null;\n  static _freeHighlightClipId = \"\";\n  static get _keyboardManager() {\n    const proto = HighlightEditor.prototype;\n    return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n      args: [0]\n    }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n      args: [1]\n    }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n      args: [2]\n    }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n      args: [3]\n    }]]));\n  }\n  constructor(params) {\n    super({\n      ...params,\n      name: \"highlightEditor\"\n    });\n    this.color = params.color || HighlightEditor._defaultColor;\n    this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n    this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n    this.#boxes = params.boxes || null;\n    this.#methodOfCreation = params.methodOfCreation || \"\";\n    this.#text = params.text || \"\";\n    this._isDraggable = false;\n    if (params.highlightId > -1) {\n      this.#isFreeHighlight = true;\n      this.#createFreeOutlines(params);\n      this.#addToDrawLayer();\n    } else if (this.#boxes) {\n      this.#anchorNode = params.anchorNode;\n      this.#anchorOffset = params.anchorOffset;\n      this.#focusNode = params.focusNode;\n      this.#focusOffset = params.focusOffset;\n      this.#createOutlines();\n      this.#addToDrawLayer();\n      this.rotate(this.rotation);\n    }\n  }\n  get telemetryInitialData() {\n    return {\n      action: \"added\",\n      type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n      color: this._uiManager.highlightColorNames.get(this.color),\n      thickness: this.#thickness,\n      methodOfCreation: this.#methodOfCreation\n    };\n  }\n  get telemetryFinalData() {\n    return {\n      type: \"highlight\",\n      color: this._uiManager.highlightColorNames.get(this.color)\n    };\n  }\n  static computeTelemetryFinalData(data) {\n    return {\n      numberOfColors: data.get(\"color\").size\n    };\n  }\n  #createOutlines() {\n    const outliner = new Outliner(this.#boxes, 0.001);\n    this.#highlightOutlines = outliner.getOutlines();\n    ({\n      x: this.x,\n      y: this.y,\n      width: this.width,\n      height: this.height\n    } = this.#highlightOutlines.box);\n    const outlinerForOutline = new Outliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n    this.#focusOutlines = outlinerForOutline.getOutlines();\n    const {\n      lastPoint\n    } = this.#focusOutlines.box;\n    this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n  }\n  #createFreeOutlines({\n    highlightOutlines,\n    highlightId,\n    clipPathId\n  }) {\n    this.#highlightOutlines = highlightOutlines;\n    const extraThickness = 1.5;\n    this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n    if (highlightId >= 0) {\n      this.#id = highlightId;\n      this.#clipPathId = clipPathId;\n      this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines);\n      this.#outlineId = this.parent.drawLayer.highlightOutline(this.#focusOutlines);\n    } else if (this.parent) {\n      const angle = this.parent.viewport.rotation;\n      this.parent.drawLayer.updateLine(this.#id, highlightOutlines);\n      this.parent.drawLayer.updateBox(this.#id, HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360));\n      this.parent.drawLayer.updateLine(this.#outlineId, this.#focusOutlines);\n      this.parent.drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n    }\n    const {\n      x,\n      y,\n      width,\n      height\n    } = highlightOutlines.box;\n    switch (this.rotation) {\n      case 0:\n        this.x = x;\n        this.y = y;\n        this.width = width;\n        this.height = height;\n        break;\n      case 90:\n        {\n          const [pageWidth, pageHeight] = this.parentDimensions;\n          this.x = y;\n          this.y = 1 - x;\n          this.width = width * pageHeight / pageWidth;\n          this.height = height * pageWidth / pageHeight;\n          break;\n        }\n      case 180:\n        this.x = 1 - x;\n        this.y = 1 - y;\n        this.width = width;\n        this.height = height;\n        break;\n      case 270:\n        {\n          const [pageWidth, pageHeight] = this.parentDimensions;\n          this.x = 1 - y;\n          this.y = x;\n          this.width = width * pageHeight / pageWidth;\n          this.height = height * pageWidth / pageHeight;\n          break;\n        }\n    }\n    const {\n      lastPoint\n    } = this.#focusOutlines.box;\n    this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n  }\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n        HighlightEditor._defaultColor = value;\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n        HighlightEditor._defaultThickness = value;\n        break;\n    }\n  }\n  translateInPage(x, y) {}\n  get toolbarPosition() {\n    return this.#lastPoint;\n  }\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n        this.#updateColor(value);\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n        this.#updateThickness(value);\n        break;\n    }\n  }\n  static get defaultPropertiesToUpdate() {\n    return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n  }\n  get propertiesToUpdate() {\n    return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n  }\n  #updateColor(color) {\n    const setColorAndOpacity = (col, opa) => {\n      this.color = col;\n      this.parent?.drawLayer.changeColor(this.#id, col);\n      this.#colorPicker?.updateColor(col);\n      this.#opacity = opa;\n      this.parent?.drawLayer.changeOpacity(this.#id, opa);\n    };\n    const savedColor = this.color;\n    const savedOpacity = this.#opacity;\n    this.addCommands({\n      cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n      undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n    this._reportTelemetry({\n      action: \"color_changed\",\n      color: this._uiManager.highlightColorNames.get(color)\n    }, true);\n  }\n  #updateThickness(thickness) {\n    const savedThickness = this.#thickness;\n    const setThickness = th => {\n      this.#thickness = th;\n      this.#changeThickness(th);\n    };\n    this.addCommands({\n      cmd: setThickness.bind(this, thickness),\n      undo: setThickness.bind(this, savedThickness),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_THICKNESS,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n    this._reportTelemetry({\n      action: \"thickness_changed\",\n      thickness\n    }, true);\n  }\n  async addEditToolbar() {\n    const toolbar = await super.addEditToolbar();\n    if (!toolbar) {\n      return null;\n    }\n    if (this._uiManager.highlightColors) {\n      this.#colorPicker = new ColorPicker({\n        editor: this\n      });\n      toolbar.addColorPicker(this.#colorPicker);\n    }\n    return toolbar;\n  }\n  disableEditing() {\n    super.disableEditing();\n    this.div.classList.toggle(\"disabled\", true);\n  }\n  enableEditing() {\n    super.enableEditing();\n    this.div.classList.toggle(\"disabled\", false);\n  }\n  fixAndSetPosition() {\n    return super.fixAndSetPosition(this.#getRotation());\n  }\n  getBaseTranslation() {\n    return [0, 0];\n  }\n  getRect(tx, ty) {\n    return super.getRect(tx, ty, this.#getRotation());\n  }\n  onceAdded() {\n    if (!this.annotationElementId) {\n      this.parent.addUndoableEditor(this);\n    }\n    this.div.focus();\n  }\n  remove() {\n    this.#cleanDrawLayer();\n    this._reportTelemetry({\n      action: \"deleted\"\n    });\n    super.remove();\n  }\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    this.#addToDrawLayer();\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n    }\n  }\n  setParent(parent) {\n    let mustBeSelected = false;\n    if (this.parent && !parent) {\n      this.#cleanDrawLayer();\n    } else if (parent) {\n      this.#addToDrawLayer(parent);\n      mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n    }\n    super.setParent(parent);\n    this.show(this._isVisible);\n    if (mustBeSelected) {\n      this.select();\n    }\n  }\n  #changeThickness(thickness) {\n    if (!this.#isFreeHighlight) {\n      return;\n    }\n    this.#createFreeOutlines({\n      highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n    });\n    this.fixAndSetPosition();\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\n  }\n  #cleanDrawLayer() {\n    if (this.#id === null || !this.parent) {\n      return;\n    }\n    this.parent.drawLayer.remove(this.#id);\n    this.#id = null;\n    this.parent.drawLayer.remove(this.#outlineId);\n    this.#outlineId = null;\n  }\n  #addToDrawLayer(parent = this.parent) {\n    if (this.#id !== null) {\n      return;\n    }\n    ({\n      id: this.#id,\n      clipPathId: this.#clipPathId\n    } = parent.drawLayer.highlight(this.#highlightOutlines, this.color, this.#opacity));\n    this.#outlineId = parent.drawLayer.highlightOutline(this.#focusOutlines);\n    if (this.#highlightDiv) {\n      this.#highlightDiv.style.clipPath = this.#clipPathId;\n    }\n  }\n  static #rotateBbox({\n    x,\n    y,\n    width,\n    height\n  }, angle) {\n    switch (angle) {\n      case 90:\n        return {\n          x: 1 - y - height,\n          y: x,\n          width: height,\n          height: width\n        };\n      case 180:\n        return {\n          x: 1 - x - width,\n          y: 1 - y - height,\n          width,\n          height\n        };\n      case 270:\n        return {\n          x: y,\n          y: 1 - x - width,\n          width: height,\n          height: width\n        };\n    }\n    return {\n      x,\n      y,\n      width,\n      height\n    };\n  }\n  rotate(angle) {\n    const {\n      drawLayer\n    } = this.parent;\n    let box;\n    if (this.#isFreeHighlight) {\n      angle = (angle - this.rotation + 360) % 360;\n      box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n    } else {\n      box = HighlightEditor.#rotateBbox(this, angle);\n    }\n    drawLayer.rotate(this.#id, angle);\n    drawLayer.rotate(this.#outlineId, angle);\n    drawLayer.updateBox(this.#id, box);\n    drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n  }\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    const div = super.render();\n    if (this.#text) {\n      div.setAttribute(\"aria-label\", this.#text);\n      div.setAttribute(\"role\", \"mark\");\n    }\n    if (this.#isFreeHighlight) {\n      div.classList.add(\"free\");\n    } else {\n      this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n        signal: this._uiManager._signal\n      });\n    }\n    const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n    div.append(highlightDiv);\n    highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n    highlightDiv.className = \"internal\";\n    highlightDiv.style.clipPath = this.#clipPathId;\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\n    bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n    this.enableEditing();\n    return div;\n  }\n  pointerover() {\n    this.parent.drawLayer.addClass(this.#outlineId, \"hovered\");\n  }\n  pointerleave() {\n    this.parent.drawLayer.removeClass(this.#outlineId, \"hovered\");\n  }\n  #keydown(event) {\n    HighlightEditor._keyboardManager.exec(this, event);\n  }\n  _moveCaret(direction) {\n    this.parent.unselect(this);\n    switch (direction) {\n      case 0:\n      case 2:\n        this.#setCaret(true);\n        break;\n      case 1:\n      case 3:\n        this.#setCaret(false);\n        break;\n    }\n  }\n  #setCaret(start) {\n    if (!this.#anchorNode) {\n      return;\n    }\n    const selection = window.getSelection();\n    if (start) {\n      selection.setPosition(this.#anchorNode, this.#anchorOffset);\n    } else {\n      selection.setPosition(this.#focusNode, this.#focusOffset);\n    }\n  }\n  select() {\n    super.select();\n    if (!this.#outlineId) {\n      return;\n    }\n    this.parent?.drawLayer.removeClass(this.#outlineId, \"hovered\");\n    this.parent?.drawLayer.addClass(this.#outlineId, \"selected\");\n  }\n  unselect() {\n    super.unselect();\n    if (!this.#outlineId) {\n      return;\n    }\n    this.parent?.drawLayer.removeClass(this.#outlineId, \"selected\");\n    if (!this.#isFreeHighlight) {\n      this.#setCaret(false);\n    }\n  }\n  get _mustFixPosition() {\n    return !this.#isFreeHighlight;\n  }\n  show(visible = this._isVisible) {\n    super.show(visible);\n    if (this.parent) {\n      this.parent.drawLayer.show(this.#id, visible);\n      this.parent.drawLayer.show(this.#outlineId, visible);\n    }\n  }\n  #getRotation() {\n    return this.#isFreeHighlight ? this.rotation : 0;\n  }\n  #serializeBoxes() {\n    if (this.#isFreeHighlight) {\n      return null;\n    }\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const [pageX, pageY] = this.pageTranslation;\n    const boxes = this.#boxes;\n    const quadPoints = new Float32Array(boxes.length * 8);\n    let i = 0;\n    for (const {\n      x,\n      y,\n      width,\n      height\n    } of boxes) {\n      const sx = x * pageWidth + pageX;\n      const sy = (1 - y - height) * pageHeight + pageY;\n      quadPoints[i] = quadPoints[i + 4] = sx;\n      quadPoints[i + 1] = quadPoints[i + 3] = sy;\n      quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n      quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight;\n      i += 8;\n    }\n    return quadPoints;\n  }\n  #serializeOutlines(rect) {\n    return this.#highlightOutlines.serialize(rect, this.#getRotation());\n  }\n  static startHighlighting(parent, isLTR, {\n    target: textLayer,\n    x,\n    y\n  }) {\n    const {\n      x: layerX,\n      y: layerY,\n      width: parentWidth,\n      height: parentHeight\n    } = textLayer.getBoundingClientRect();\n    const ac = new AbortController();\n    const signal = parent.combinedSignal(ac);\n    const pointerDown = e => {\n      e.preventDefault();\n      e.stopPropagation();\n    };\n    const pointerUpCallback = e => {\n      ac.abort();\n      this.#endHighlight(parent, e);\n    };\n    window.addEventListener(\"blur\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"pointerup\", pointerUpCallback, {\n      signal\n    });\n    window.addEventListener(\"pointerdown\", pointerDown, {\n      capture: true,\n      passive: false,\n      signal\n    });\n    window.addEventListener(\"contextmenu\", noContextMenu, {\n      signal\n    });\n    textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n      signal\n    });\n    this._freeHighlight = new FreeOutliner({\n      x,\n      y\n    }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n    ({\n      id: this._freeHighlightId,\n      clipPathId: this._freeHighlightClipId\n    } = parent.drawLayer.highlight(this._freeHighlight, this._defaultColor, this._defaultOpacity, true));\n  }\n  static #highlightMove(parent, event) {\n    if (this._freeHighlight.add(event)) {\n      parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight);\n    }\n  }\n  static #endHighlight(parent, event) {\n    if (!this._freeHighlight.isEmpty()) {\n      parent.createAndAddNewEditor(event, false, {\n        highlightId: this._freeHighlightId,\n        highlightOutlines: this._freeHighlight.getOutlines(),\n        clipPathId: this._freeHighlightClipId,\n        methodOfCreation: \"main_toolbar\"\n      });\n    } else {\n      parent.drawLayer.removeFreeHighlight(this._freeHighlightId);\n    }\n    this._freeHighlightId = -1;\n    this._freeHighlight = null;\n    this._freeHighlightClipId = \"\";\n  }\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof HighlightAnnotationElement) {\n      const {\n        data: {\n          quadPoints,\n          rect,\n          rotation,\n          id,\n          color,\n          opacity,\n          popupRef\n        },\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.HIGHLIGHT,\n        color: Array.from(color),\n        opacity,\n        quadPoints,\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        popupRef\n      };\n    } else if (data instanceof InkAnnotationElement) {\n      const {\n        data: {\n          inkLists,\n          rect,\n          rotation,\n          id,\n          color,\n          borderStyle: {\n            rawWidth: thickness\n          },\n          popupRef\n        },\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.HIGHLIGHT,\n        color: Array.from(color),\n        thickness,\n        inkLists,\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        popupRef\n      };\n    }\n    const {\n      color,\n      quadPoints,\n      inkLists,\n      opacity\n    } = data;\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.color = Util.makeHexColor(...color);\n    editor.#opacity = opacity || 1;\n    if (inkLists) {\n      editor.#thickness = data.thickness;\n    }\n    editor.annotationElementId = data.id || null;\n    editor._initialData = initialData;\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [pageX, pageY] = editor.pageTranslation;\n    if (quadPoints) {\n      const boxes = editor.#boxes = [];\n      for (let i = 0; i < quadPoints.length; i += 8) {\n        boxes.push({\n          x: (quadPoints[i] - pageX) / pageWidth,\n          y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n          width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n          height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n        });\n      }\n      editor.#createOutlines();\n      editor.#addToDrawLayer();\n      editor.rotate(editor.rotation);\n    } else if (inkLists) {\n      editor.#isFreeHighlight = true;\n      const points = inkLists[0];\n      const point = {\n        x: points[0] - pageX,\n        y: pageHeight - (points[1] - pageY)\n      };\n      const outliner = new FreeOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n      for (let i = 0, ii = points.length; i < ii; i += 2) {\n        point.x = points[i] - pageX;\n        point.y = pageHeight - (points[i + 1] - pageY);\n        outliner.add(point);\n      }\n      const {\n        id,\n        clipPathId\n      } = parent.drawLayer.highlight(outliner, editor.color, editor._defaultOpacity, true);\n      editor.#createFreeOutlines({\n        highlightOutlines: outliner.getOutlines(),\n        highlightId: id,\n        clipPathId\n      });\n      editor.#addToDrawLayer();\n    }\n    return editor;\n  }\n  serialize(isForCopying = false) {\n    if (this.isEmpty() || isForCopying) {\n      return null;\n    }\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n    const rect = this.getRect(0, 0);\n    const color = AnnotationEditor._colorManager.convert(this.color);\n    const serialized = {\n      annotationType: AnnotationEditorType.HIGHLIGHT,\n      color,\n      opacity: this.#opacity,\n      thickness: this.#thickness,\n      quadPoints: this.#serializeBoxes(),\n      outlines: this.#serializeOutlines(rect),\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.#getRotation(),\n      structTreeParentId: this._structTreeParentId\n    };\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n  #hasElementChanged(serialized) {\n    const {\n      color\n    } = this._initialData;\n    return serialized.color.some((c, i) => c !== color[i]);\n  }\n  renderAnnotationElement(annotation) {\n    annotation.updateEdited({\n      rect: this.getRect(0, 0)\n    });\n    return null;\n  }\n  static canCreateNewEmptyEditor() {\n    return false;\n  }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\nclass InkEditor extends AnnotationEditor {\n  #baseHeight = 0;\n  #baseWidth = 0;\n  #canvasContextMenuTimeoutId = null;\n  #currentPath2D = new Path2D();\n  #disableEditing = false;\n  #drawingAC = null;\n  #hasSomethingToDraw = false;\n  #isCanvasInitialized = false;\n  #observer = null;\n  #pointerdownAC = null;\n  #realWidth = 0;\n  #realHeight = 0;\n  #requestFrameCallback = null;\n  static _defaultColor = null;\n  static _defaultOpacity = 1;\n  static _defaultThickness = 1;\n  static _type = \"ink\";\n  static _editorType = AnnotationEditorType.INK;\n  constructor(params) {\n    super({\n      ...params,\n      name: \"inkEditor\"\n    });\n    this.color = params.color || null;\n    this.thickness = params.thickness || null;\n    this.opacity = params.opacity || null;\n    this.paths = [];\n    this.bezierPath2D = [];\n    this.allRawPaths = [];\n    this.currentPath = [];\n    this.scaleFactor = 1;\n    this.translationX = this.translationY = 0;\n    this.x = 0;\n    this.y = 0;\n    this._willKeepAspectRatio = true;\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n  }\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.INK_THICKNESS:\n        InkEditor._defaultThickness = value;\n        break;\n      case AnnotationEditorParamsType.INK_COLOR:\n        InkEditor._defaultColor = value;\n        break;\n      case AnnotationEditorParamsType.INK_OPACITY:\n        InkEditor._defaultOpacity = value / 100;\n        break;\n    }\n  }\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.INK_THICKNESS:\n        this.#updateThickness(value);\n        break;\n      case AnnotationEditorParamsType.INK_COLOR:\n        this.#updateColor(value);\n        break;\n      case AnnotationEditorParamsType.INK_OPACITY:\n        this.#updateOpacity(value);\n        break;\n    }\n  }\n  static get defaultPropertiesToUpdate() {\n    return [[AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n  }\n  get propertiesToUpdate() {\n    return [[AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n  }\n  #updateThickness(thickness) {\n    const setThickness = th => {\n      this.thickness = th;\n      this.#fitToContent();\n    };\n    const savedThickness = this.thickness;\n    this.addCommands({\n      cmd: setThickness.bind(this, thickness),\n      undo: setThickness.bind(this, savedThickness),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_THICKNESS,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n  }\n  #updateColor(color) {\n    const setColor = col => {\n      this.color = col;\n      this.#redraw();\n    };\n    const savedColor = this.color;\n    this.addCommands({\n      cmd: setColor.bind(this, color),\n      undo: setColor.bind(this, savedColor),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n  }\n  #updateOpacity(opacity) {\n    const setOpacity = op => {\n      this.opacity = op;\n      this.#redraw();\n    };\n    opacity /= 100;\n    const savedOpacity = this.opacity;\n    this.addCommands({\n      cmd: setOpacity.bind(this, opacity),\n      undo: setOpacity.bind(this, savedOpacity),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_OPACITY,\n      overwriteIfSameType: true,\n      keepUndo: true\n    });\n  }\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    if (!this.canvas) {\n      this.#createCanvas();\n      this.#createObserver();\n    }\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n      this.#setCanvasDims();\n    }\n    this.#fitToContent();\n  }\n  remove() {\n    if (this.canvas === null) {\n      return;\n    }\n    if (!this.isEmpty()) {\n      this.commit();\n    }\n    this.canvas.width = this.canvas.height = 0;\n    this.canvas.remove();\n    this.canvas = null;\n    if (this.#canvasContextMenuTimeoutId) {\n      clearTimeout(this.#canvasContextMenuTimeoutId);\n      this.#canvasContextMenuTimeoutId = null;\n    }\n    this.#observer?.disconnect();\n    this.#observer = null;\n    super.remove();\n  }\n  setParent(parent) {\n    if (!this.parent && parent) {\n      this._uiManager.removeShouldRescale(this);\n    } else if (this.parent && parent === null) {\n      this._uiManager.addShouldRescale(this);\n    }\n    super.setParent(parent);\n  }\n  onScaleChanging() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const width = this.width * parentWidth;\n    const height = this.height * parentHeight;\n    this.setDimensions(width, height);\n  }\n  enableEditMode() {\n    if (this.#disableEditing || this.canvas === null) {\n      return;\n    }\n    super.enableEditMode();\n    this._isDraggable = false;\n    this.#addPointerdownListener();\n  }\n  disableEditMode() {\n    if (!this.isInEditMode() || this.canvas === null) {\n      return;\n    }\n    super.disableEditMode();\n    this._isDraggable = !this.isEmpty();\n    this.div.classList.remove(\"editing\");\n    this.#removePointerdownListener();\n  }\n  onceAdded() {\n    this._isDraggable = !this.isEmpty();\n  }\n  isEmpty() {\n    return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n  }\n  #getInitialBBox() {\n    const {\n      parentRotation,\n      parentDimensions: [width, height]\n    } = this;\n    switch (parentRotation) {\n      case 90:\n        return [0, height, height, width];\n      case 180:\n        return [width, height, width, height];\n      case 270:\n        return [width, 0, height, width];\n      default:\n        return [0, 0, width, height];\n    }\n  }\n  #setStroke() {\n    const {\n      ctx,\n      color,\n      opacity,\n      thickness,\n      parentScale,\n      scaleFactor\n    } = this;\n    ctx.lineWidth = thickness * parentScale / scaleFactor;\n    ctx.lineCap = \"round\";\n    ctx.lineJoin = \"round\";\n    ctx.miterLimit = 10;\n    ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n  }\n  #startDrawing(x, y) {\n    this.canvas.addEventListener(\"contextmenu\", noContextMenu, {\n      signal: this._uiManager._signal\n    });\n    this.#removePointerdownListener();\n    this.#drawingAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#drawingAC);\n    this.canvas.addEventListener(\"pointerleave\", this.canvasPointerleave.bind(this), {\n      signal\n    });\n    this.canvas.addEventListener(\"pointermove\", this.canvasPointermove.bind(this), {\n      signal\n    });\n    this.canvas.addEventListener(\"pointerup\", this.canvasPointerup.bind(this), {\n      signal\n    });\n    this.isEditing = true;\n    if (!this.#isCanvasInitialized) {\n      this.#isCanvasInitialized = true;\n      this.#setCanvasDims();\n      this.thickness ||= InkEditor._defaultThickness;\n      this.color ||= InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n      this.opacity ??= InkEditor._defaultOpacity;\n    }\n    this.currentPath.push([x, y]);\n    this.#hasSomethingToDraw = false;\n    this.#setStroke();\n    this.#requestFrameCallback = () => {\n      this.#drawPoints();\n      if (this.#requestFrameCallback) {\n        window.requestAnimationFrame(this.#requestFrameCallback);\n      }\n    };\n    window.requestAnimationFrame(this.#requestFrameCallback);\n  }\n  #draw(x, y) {\n    const [lastX, lastY] = this.currentPath.at(-1);\n    if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n      return;\n    }\n    const currentPath = this.currentPath;\n    let path2D = this.#currentPath2D;\n    currentPath.push([x, y]);\n    this.#hasSomethingToDraw = true;\n    if (currentPath.length <= 2) {\n      path2D.moveTo(...currentPath[0]);\n      path2D.lineTo(x, y);\n      return;\n    }\n    if (currentPath.length === 3) {\n      this.#currentPath2D = path2D = new Path2D();\n      path2D.moveTo(...currentPath[0]);\n    }\n    this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);\n  }\n  #endPath() {\n    if (this.currentPath.length === 0) {\n      return;\n    }\n    const lastPoint = this.currentPath.at(-1);\n    this.#currentPath2D.lineTo(...lastPoint);\n  }\n  #stopDrawing(x, y) {\n    this.#requestFrameCallback = null;\n    x = Math.min(Math.max(x, 0), this.canvas.width);\n    y = Math.min(Math.max(y, 0), this.canvas.height);\n    this.#draw(x, y);\n    this.#endPath();\n    let bezier;\n    if (this.currentPath.length !== 1) {\n      bezier = this.#generateBezierPoints();\n    } else {\n      const xy = [x, y];\n      bezier = [[xy, xy.slice(), xy.slice(), xy]];\n    }\n    const path2D = this.#currentPath2D;\n    const currentPath = this.currentPath;\n    this.currentPath = [];\n    this.#currentPath2D = new Path2D();\n    const cmd = () => {\n      this.allRawPaths.push(currentPath);\n      this.paths.push(bezier);\n      this.bezierPath2D.push(path2D);\n      this._uiManager.rebuild(this);\n    };\n    const undo = () => {\n      this.allRawPaths.pop();\n      this.paths.pop();\n      this.bezierPath2D.pop();\n      if (this.paths.length === 0) {\n        this.remove();\n      } else {\n        if (!this.canvas) {\n          this.#createCanvas();\n          this.#createObserver();\n        }\n        this.#fitToContent();\n      }\n    };\n    this.addCommands({\n      cmd,\n      undo,\n      mustExec: true\n    });\n  }\n  #drawPoints() {\n    if (!this.#hasSomethingToDraw) {\n      return;\n    }\n    this.#hasSomethingToDraw = false;\n    const thickness = Math.ceil(this.thickness * this.parentScale);\n    const lastPoints = this.currentPath.slice(-3);\n    const x = lastPoints.map(xy => xy[0]);\n    const y = lastPoints.map(xy => xy[1]);\n    const xMin = Math.min(...x) - thickness;\n    const xMax = Math.max(...x) + thickness;\n    const yMin = Math.min(...y) - thickness;\n    const yMax = Math.max(...y) + thickness;\n    const {\n      ctx\n    } = this;\n    ctx.save();\n    ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n    for (const path of this.bezierPath2D) {\n      ctx.stroke(path);\n    }\n    ctx.stroke(this.#currentPath2D);\n    ctx.restore();\n  }\n  #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n    const prevX = (x0 + x1) / 2;\n    const prevY = (y0 + y1) / 2;\n    const x3 = (x1 + x2) / 2;\n    const y3 = (y1 + y2) / 2;\n    path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3);\n  }\n  #generateBezierPoints() {\n    const path = this.currentPath;\n    if (path.length <= 2) {\n      return [[path[0], path[0], path.at(-1), path.at(-1)]];\n    }\n    const bezierPoints = [];\n    let i;\n    let [x0, y0] = path[0];\n    for (i = 1; i < path.length - 2; i++) {\n      const [x1, y1] = path[i];\n      const [x2, y2] = path[i + 1];\n      const x3 = (x1 + x2) / 2;\n      const y3 = (y1 + y2) / 2;\n      const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n      const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3];\n      bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n      [x0, y0] = [x3, y3];\n    }\n    const [x1, y1] = path[i];\n    const [x2, y2] = path[i + 1];\n    const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n    const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3];\n    bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n    return bezierPoints;\n  }\n  #redraw() {\n    if (this.isEmpty()) {\n      this.#updateTransform();\n      return;\n    }\n    this.#setStroke();\n    const {\n      canvas,\n      ctx\n    } = this;\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n    this.#updateTransform();\n    for (const path of this.bezierPath2D) {\n      ctx.stroke(path);\n    }\n  }\n  commit() {\n    if (this.#disableEditing) {\n      return;\n    }\n    super.commit();\n    this.isEditing = false;\n    this.disableEditMode();\n    this.setInForeground();\n    this.#disableEditing = true;\n    this.div.classList.add(\"disabled\");\n    this.#fitToContent(true);\n    this.select();\n    this.parent.addInkEditorIfNeeded(true);\n    this.moveInDOM();\n    this.div.focus({\n      preventScroll: true\n    });\n  }\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    super.focusin(event);\n    this.enableEditMode();\n  }\n  #addPointerdownListener() {\n    if (this.#pointerdownAC) {\n      return;\n    }\n    this.#pointerdownAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#pointerdownAC);\n    this.canvas.addEventListener(\"pointerdown\", this.canvasPointerdown.bind(this), {\n      signal\n    });\n  }\n  #removePointerdownListener() {\n    this.pointerdownAC?.abort();\n    this.pointerdownAC = null;\n  }\n  canvasPointerdown(event) {\n    if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n      return;\n    }\n    this.setInForeground();\n    event.preventDefault();\n    if (!this.div.contains(document.activeElement)) {\n      this.div.focus({\n        preventScroll: true\n      });\n    }\n    this.#startDrawing(event.offsetX, event.offsetY);\n  }\n  canvasPointermove(event) {\n    event.preventDefault();\n    this.#draw(event.offsetX, event.offsetY);\n  }\n  canvasPointerup(event) {\n    event.preventDefault();\n    this.#endDrawing(event);\n  }\n  canvasPointerleave(event) {\n    this.#endDrawing(event);\n  }\n  #endDrawing(event) {\n    this.#drawingAC?.abort();\n    this.#drawingAC = null;\n    this.#addPointerdownListener();\n    if (this.#canvasContextMenuTimeoutId) {\n      clearTimeout(this.#canvasContextMenuTimeoutId);\n    }\n    this.#canvasContextMenuTimeoutId = setTimeout(() => {\n      this.#canvasContextMenuTimeoutId = null;\n      this.canvas.removeEventListener(\"contextmenu\", noContextMenu);\n    }, 10);\n    this.#stopDrawing(event.offsetX, event.offsetY);\n    this.addToAnnotationStorage();\n    this.setInBackground();\n  }\n  #createCanvas() {\n    this.canvas = document.createElement(\"canvas\");\n    this.canvas.width = this.canvas.height = 0;\n    this.canvas.className = \"inkEditorCanvas\";\n    this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n    this.div.append(this.canvas);\n    this.ctx = this.canvas.getContext(\"2d\");\n  }\n  #createObserver() {\n    this.#observer = new ResizeObserver(entries => {\n      const rect = entries[0].contentRect;\n      if (rect.width && rect.height) {\n        this.setDimensions(rect.width, rect.height);\n      }\n    });\n    this.#observer.observe(this.div);\n    this._uiManager._signal.addEventListener(\"abort\", () => {\n      this.#observer?.disconnect();\n      this.#observer = null;\n    }, {\n      once: true\n    });\n  }\n  get isResizable() {\n    return !this.isEmpty() && this.#disableEditing;\n  }\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n    super.render();\n    this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n    const [x, y, w, h] = this.#getInitialBBox();\n    this.setAt(x, y, 0, 0);\n    this.setDims(w, h);\n    this.#createCanvas();\n    if (this.width) {\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n      this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n      this.#isCanvasInitialized = true;\n      this.#setCanvasDims();\n      this.setDims(this.width * parentWidth, this.height * parentHeight);\n      this.#redraw();\n      this.div.classList.add(\"disabled\");\n    } else {\n      this.div.classList.add(\"editing\");\n      this.enableEditMode();\n    }\n    this.#createObserver();\n    return this.div;\n  }\n  #setCanvasDims() {\n    if (!this.#isCanvasInitialized) {\n      return;\n    }\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.canvas.width = Math.ceil(this.width * parentWidth);\n    this.canvas.height = Math.ceil(this.height * parentHeight);\n    this.#updateTransform();\n  }\n  setDimensions(width, height) {\n    const roundedWidth = Math.round(width);\n    const roundedHeight = Math.round(height);\n    if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n      return;\n    }\n    this.#realWidth = roundedWidth;\n    this.#realHeight = roundedHeight;\n    this.canvas.style.visibility = \"hidden\";\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.width = width / parentWidth;\n    this.height = height / parentHeight;\n    this.fixAndSetPosition();\n    if (this.#disableEditing) {\n      this.#setScaleFactor(width, height);\n    }\n    this.#setCanvasDims();\n    this.#redraw();\n    this.canvas.style.visibility = \"visible\";\n    this.fixDims();\n  }\n  #setScaleFactor(width, height) {\n    const padding = this.#getPadding();\n    const scaleFactorW = (width - padding) / this.#baseWidth;\n    const scaleFactorH = (height - padding) / this.#baseHeight;\n    this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n  }\n  #updateTransform() {\n    const padding = this.#getPadding() / 2;\n    this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n  }\n  static #buildPath2D(bezier) {\n    const path2D = new Path2D();\n    for (let i = 0, ii = bezier.length; i < ii; i++) {\n      const [first, control1, control2, second] = bezier[i];\n      if (i === 0) {\n        path2D.moveTo(...first);\n      }\n      path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n    }\n    return path2D;\n  }\n  static #toPDFCoordinates(points, rect, rotation) {\n    const [blX, blY, trX, trY] = rect;\n    switch (rotation) {\n      case 0:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] += blX;\n          points[i + 1] = trY - points[i + 1];\n        }\n        break;\n      case 90:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = points[i + 1] + blX;\n          points[i + 1] = x + blY;\n        }\n        break;\n      case 180:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] = trX - points[i];\n          points[i + 1] += blY;\n        }\n        break;\n      case 270:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = trX - points[i + 1];\n          points[i + 1] = trY - x;\n        }\n        break;\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n    return points;\n  }\n  static #fromPDFCoordinates(points, rect, rotation) {\n    const [blX, blY, trX, trY] = rect;\n    switch (rotation) {\n      case 0:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] -= blX;\n          points[i + 1] = trY - points[i + 1];\n        }\n        break;\n      case 90:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = points[i + 1] - blY;\n          points[i + 1] = x - blX;\n        }\n        break;\n      case 180:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          points[i] = trX - points[i];\n          points[i + 1] -= blY;\n        }\n        break;\n      case 270:\n        for (let i = 0, ii = points.length; i < ii; i += 2) {\n          const x = points[i];\n          points[i] = trY - points[i + 1];\n          points[i + 1] = trX - x;\n        }\n        break;\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n    return points;\n  }\n  #serializePaths(s, tx, ty, rect) {\n    const paths = [];\n    const padding = this.thickness / 2;\n    const shiftX = s * tx + padding;\n    const shiftY = s * ty + padding;\n    for (const bezier of this.paths) {\n      const buffer = [];\n      const points = [];\n      for (let j = 0, jj = bezier.length; j < jj; j++) {\n        const [first, control1, control2, second] = bezier[j];\n        if (first[0] === second[0] && first[1] === second[1] && jj === 1) {\n          const p0 = s * first[0] + shiftX;\n          const p1 = s * first[1] + shiftY;\n          buffer.push(p0, p1);\n          points.push(p0, p1);\n          break;\n        }\n        const p10 = s * first[0] + shiftX;\n        const p11 = s * first[1] + shiftY;\n        const p20 = s * control1[0] + shiftX;\n        const p21 = s * control1[1] + shiftY;\n        const p30 = s * control2[0] + shiftX;\n        const p31 = s * control2[1] + shiftY;\n        const p40 = s * second[0] + shiftX;\n        const p41 = s * second[1] + shiftY;\n        if (j === 0) {\n          buffer.push(p10, p11);\n          points.push(p10, p11);\n        }\n        buffer.push(p20, p21, p30, p31, p40, p41);\n        points.push(p20, p21);\n        if (j === jj - 1) {\n          points.push(p40, p41);\n        }\n      }\n      paths.push({\n        bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n        points: InkEditor.#toPDFCoordinates(points, rect, this.rotation)\n      });\n    }\n    return paths;\n  }\n  #getBbox() {\n    let xMin = Infinity;\n    let xMax = -Infinity;\n    let yMin = Infinity;\n    let yMax = -Infinity;\n    for (const path of this.paths) {\n      for (const [first, control1, control2, second] of path) {\n        const bbox = Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n        xMin = Math.min(xMin, bbox[0]);\n        yMin = Math.min(yMin, bbox[1]);\n        xMax = Math.max(xMax, bbox[2]);\n        yMax = Math.max(yMax, bbox[3]);\n      }\n    }\n    return [xMin, yMin, xMax, yMax];\n  }\n  #getPadding() {\n    return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;\n  }\n  #fitToContent(firstTime = false) {\n    if (this.isEmpty()) {\n      return;\n    }\n    if (!this.#disableEditing) {\n      this.#redraw();\n      return;\n    }\n    const bbox = this.#getBbox();\n    const padding = this.#getPadding();\n    this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n    this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n    const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n    const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.width = width / parentWidth;\n    this.height = height / parentHeight;\n    this.setAspectRatio(width, height);\n    const prevTranslationX = this.translationX;\n    const prevTranslationY = this.translationY;\n    this.translationX = -bbox[0];\n    this.translationY = -bbox[1];\n    this.#setCanvasDims();\n    this.#redraw();\n    this.#realWidth = width;\n    this.#realHeight = height;\n    this.setDims(width, height);\n    const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n    this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n  }\n  static async deserialize(data, parent, uiManager) {\n    if (data instanceof InkAnnotationElement) {\n      return null;\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.thickness = data.thickness;\n    editor.color = Util.makeHexColor(...data.color);\n    editor.opacity = data.opacity;\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const width = editor.width * pageWidth;\n    const height = editor.height * pageHeight;\n    const scaleFactor = editor.parentScale;\n    const padding = data.thickness / 2;\n    editor.#disableEditing = true;\n    editor.#realWidth = Math.round(width);\n    editor.#realHeight = Math.round(height);\n    const {\n      paths,\n      rect,\n      rotation\n    } = data;\n    for (let {\n      bezier\n    } of paths) {\n      bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n      const path = [];\n      editor.paths.push(path);\n      let p0 = scaleFactor * (bezier[0] - padding);\n      let p1 = scaleFactor * (bezier[1] - padding);\n      for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n        const p10 = scaleFactor * (bezier[i] - padding);\n        const p11 = scaleFactor * (bezier[i + 1] - padding);\n        const p20 = scaleFactor * (bezier[i + 2] - padding);\n        const p21 = scaleFactor * (bezier[i + 3] - padding);\n        const p30 = scaleFactor * (bezier[i + 4] - padding);\n        const p31 = scaleFactor * (bezier[i + 5] - padding);\n        path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n        p0 = p30;\n        p1 = p31;\n      }\n      const path2D = this.#buildPath2D(path);\n      editor.bezierPath2D.push(path2D);\n    }\n    const bbox = editor.#getBbox();\n    editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n    editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n    editor.#setScaleFactor(width, height);\n    return editor;\n  }\n  serialize() {\n    if (this.isEmpty()) {\n      return null;\n    }\n    const rect = this.getRect(0, 0);\n    const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n    return {\n      annotationType: AnnotationEditorType.INK,\n      color,\n      thickness: this.thickness,\n      opacity: this.opacity,\n      paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, rect),\n      pageIndex: this.pageIndex,\n      rect,\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId\n    };\n  }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n  #bitmap = null;\n  #bitmapId = null;\n  #bitmapPromise = null;\n  #bitmapUrl = null;\n  #bitmapFile = null;\n  #bitmapFileName = \"\";\n  #canvas = null;\n  #observer = null;\n  #resizeTimeoutId = null;\n  #isSvg = false;\n  #hasBeenAddedInUndoStack = false;\n  static _type = \"stamp\";\n  static _editorType = AnnotationEditorType.STAMP;\n  constructor(params) {\n    super({\n      ...params,\n      name: \"stampEditor\"\n    });\n    this.#bitmapUrl = params.bitmapUrl;\n    this.#bitmapFile = params.bitmapFile;\n  }\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n  }\n  static get supportedTypes() {\n    const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n    return shadow(this, \"supportedTypes\", types.map(type => `image/${type}`));\n  }\n  static get supportedTypesStr() {\n    return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n  }\n  static isHandlingMimeForPasting(mime) {\n    return this.supportedTypes.includes(mime);\n  }\n  static paste(item, parent) {\n    parent.pasteEditor(AnnotationEditorType.STAMP, {\n      bitmapFile: item.getAsFile()\n    });\n  }\n  altTextFinish() {\n    if (this._uiManager.useNewAltTextFlow) {\n      this.div.hidden = false;\n    }\n    super.altTextFinish();\n  }\n  get telemetryFinalData() {\n    return {\n      type: \"stamp\",\n      hasAltText: !!this.altTextData?.altText\n    };\n  }\n  static computeTelemetryFinalData(data) {\n    const hasAltTextStats = data.get(\"hasAltText\");\n    return {\n      hasAltText: hasAltTextStats.get(true) ?? 0,\n      hasNoAltText: hasAltTextStats.get(false) ?? 0\n    };\n  }\n  #getBitmapFetched(data, fromId = false) {\n    if (!data) {\n      this.remove();\n      return;\n    }\n    this.#bitmap = data.bitmap;\n    if (!fromId) {\n      this.#bitmapId = data.id;\n      this.#isSvg = data.isSvg;\n    }\n    if (data.file) {\n      this.#bitmapFileName = data.file.name;\n    }\n    this.#createCanvas();\n  }\n  #getBitmapDone() {\n    this.#bitmapPromise = null;\n    this._uiManager.enableWaiting(false);\n    if (!this.#canvas) {\n      return;\n    }\n    if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n      this._editToolbar.hide();\n      this._uiManager.editAltText(this, true);\n      return;\n    }\n    if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n      this._reportTelemetry({\n        action: \"pdfjs.image.image_added\",\n        data: {\n          alt_text_modal: false,\n          alt_text_type: \"empty\"\n        }\n      });\n      try {\n        this.mlGuessAltText();\n      } catch {}\n    }\n    this.div.focus();\n  }\n  async mlGuessAltText(imageData = null, updateAltTextData = true) {\n    if (this.hasAltTextData()) {\n      return null;\n    }\n    const {\n      mlManager\n    } = this._uiManager;\n    if (!mlManager) {\n      throw new Error(\"No ML.\");\n    }\n    if (!(await mlManager.isEnabledFor(\"altText\"))) {\n      throw new Error(\"ML isn't enabled for alt text.\");\n    }\n    const {\n      data,\n      width,\n      height\n    } = imageData || this.copyCanvas(null, null, true).imageData;\n    const response = await mlManager.guess({\n      name: \"altText\",\n      request: {\n        data,\n        width,\n        height,\n        channels: data.length / (width * height)\n      }\n    });\n    if (!response) {\n      throw new Error(\"No response from the AI service.\");\n    }\n    if (response.error) {\n      throw new Error(\"Error from the AI service.\");\n    }\n    if (response.cancel) {\n      return null;\n    }\n    if (!response.output) {\n      throw new Error(\"No valid response from the AI service.\");\n    }\n    const altText = response.output;\n    await this.setGuessedAltText(altText);\n    if (updateAltTextData && !this.hasAltTextData()) {\n      this.altTextData = {\n        alt: altText,\n        decorative: false\n      };\n    }\n    return altText;\n  }\n  #getBitmap() {\n    if (this.#bitmapId) {\n      this._uiManager.enableWaiting(true);\n      this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n      return;\n    }\n    if (this.#bitmapUrl) {\n      const url = this.#bitmapUrl;\n      this.#bitmapUrl = null;\n      this._uiManager.enableWaiting(true);\n      this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n      return;\n    }\n    if (this.#bitmapFile) {\n      const file = this.#bitmapFile;\n      this.#bitmapFile = null;\n      this._uiManager.enableWaiting(true);\n      this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n      return;\n    }\n    const input = document.createElement(\"input\");\n    input.type = \"file\";\n    input.accept = StampEditor.supportedTypesStr;\n    const signal = this._uiManager._signal;\n    this.#bitmapPromise = new Promise(resolve => {\n      input.addEventListener(\"change\", async () => {\n        if (!input.files || input.files.length === 0) {\n          this.remove();\n        } else {\n          this._uiManager.enableWaiting(true);\n          const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n          this._reportTelemetry({\n            action: \"pdfjs.image.image_selected\",\n            data: {\n              alt_text_modal: this._uiManager.useNewAltTextFlow\n            }\n          });\n          this.#getBitmapFetched(data);\n        }\n        resolve();\n      }, {\n        signal\n      });\n      input.addEventListener(\"cancel\", () => {\n        this.remove();\n        resolve();\n      }, {\n        signal\n      });\n    }).finally(() => this.#getBitmapDone());\n    input.click();\n  }\n  remove() {\n    if (this.#bitmapId) {\n      this.#bitmap = null;\n      this._uiManager.imageManager.deleteId(this.#bitmapId);\n      this.#canvas?.remove();\n      this.#canvas = null;\n      this.#observer?.disconnect();\n      this.#observer = null;\n      if (this.#resizeTimeoutId) {\n        clearTimeout(this.#resizeTimeoutId);\n        this.#resizeTimeoutId = null;\n      }\n    }\n    super.remove();\n  }\n  rebuild() {\n    if (!this.parent) {\n      if (this.#bitmapId) {\n        this.#getBitmap();\n      }\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n    if (this.#bitmapId && this.#canvas === null) {\n      this.#getBitmap();\n    }\n    if (!this.isAttachedToDOM) {\n      this.parent.add(this);\n    }\n  }\n  onceAdded() {\n    this._isDraggable = true;\n    this.div.focus();\n  }\n  isEmpty() {\n    return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId);\n  }\n  get isResizable() {\n    return true;\n  }\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n    let baseX, baseY;\n    if (this.width) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n    super.render();\n    this.div.hidden = true;\n    this.div.setAttribute(\"role\", \"figure\");\n    this.addAltTextButton();\n    if (this.#bitmap) {\n      this.#createCanvas();\n    } else {\n      this.#getBitmap();\n    }\n    if (this.width && !this.annotationElementId) {\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n    }\n    return this.div;\n  }\n  #createCanvas() {\n    const {\n      div\n    } = this;\n    let {\n      width,\n      height\n    } = this.#bitmap;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const MAX_RATIO = 0.75;\n    if (this.width) {\n      width = this.width * pageWidth;\n      height = this.height * pageHeight;\n    } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n      const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n      width *= factor;\n      height *= factor;\n    }\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n    this._uiManager.enableWaiting(false);\n    const canvas = this.#canvas = document.createElement(\"canvas\");\n    canvas.setAttribute(\"role\", \"img\");\n    this.addContainer(canvas);\n    if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n      div.hidden = false;\n    }\n    this.#drawBitmap(width, height);\n    this.#createObserver();\n    if (!this.#hasBeenAddedInUndoStack) {\n      this.parent.addUndoableEditor(this);\n      this.#hasBeenAddedInUndoStack = true;\n    }\n    this._reportTelemetry({\n      action: \"inserted_image\"\n    });\n    if (this.#bitmapFileName) {\n      canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n    }\n  }\n  copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n    if (!maxDataDimension) {\n      maxDataDimension = 224;\n    }\n    const {\n      width: bitmapWidth,\n      height: bitmapHeight\n    } = this.#bitmap;\n    const outputScale = new OutputScale();\n    let bitmap = this.#bitmap;\n    let width = bitmapWidth,\n      height = bitmapHeight;\n    let canvas = null;\n    if (maxPreviewDimension) {\n      if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n        const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n        width = Math.floor(bitmapWidth * ratio);\n        height = Math.floor(bitmapHeight * ratio);\n      }\n      canvas = document.createElement(\"canvas\");\n      const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n      const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n      if (!this.#isSvg) {\n        bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n      }\n      const ctx = canvas.getContext(\"2d\");\n      ctx.filter = this._uiManager.hcmFilter;\n      let white = \"white\",\n        black = \"#cfcfd8\";\n      if (this._uiManager.hcmFilter !== \"none\") {\n        black = \"black\";\n      } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n        white = \"#8f8f9d\";\n        black = \"#42414d\";\n      }\n      const boxDim = 15;\n      const boxDimWidth = boxDim * outputScale.sx;\n      const boxDimHeight = boxDim * outputScale.sy;\n      const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n      const patternCtx = pattern.getContext(\"2d\");\n      patternCtx.fillStyle = white;\n      patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n      patternCtx.fillStyle = black;\n      patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n      patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n      ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n      ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n      ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n    }\n    let imageData = null;\n    if (createImageData) {\n      let dataWidth, dataHeight;\n      if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n        dataWidth = bitmap.width;\n        dataHeight = bitmap.height;\n      } else {\n        bitmap = this.#bitmap;\n        if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n          const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n          dataWidth = Math.floor(bitmapWidth * ratio);\n          dataHeight = Math.floor(bitmapHeight * ratio);\n          if (!this.#isSvg) {\n            bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n          }\n        }\n      }\n      const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n      const offscreenCtx = offscreen.getContext(\"2d\", {\n        willReadFrequently: true\n      });\n      offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n      imageData = {\n        width: dataWidth,\n        height: dataHeight,\n        data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n      };\n    }\n    return {\n      canvas,\n      width,\n      height,\n      imageData\n    };\n  }\n  #setDimensions(width, height) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.width = width / parentWidth;\n    this.height = height / parentHeight;\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    } else {\n      this.fixAndSetPosition();\n    }\n    this._initialOptions = null;\n    if (this.#resizeTimeoutId !== null) {\n      clearTimeout(this.#resizeTimeoutId);\n    }\n    const TIME_TO_WAIT = 200;\n    this.#resizeTimeoutId = setTimeout(() => {\n      this.#resizeTimeoutId = null;\n      this.#drawBitmap(width, height);\n    }, TIME_TO_WAIT);\n  }\n  #scaleBitmap(width, height) {\n    const {\n      width: bitmapWidth,\n      height: bitmapHeight\n    } = this.#bitmap;\n    let newWidth = bitmapWidth;\n    let newHeight = bitmapHeight;\n    let bitmap = this.#bitmap;\n    while (newWidth > 2 * width || newHeight > 2 * height) {\n      const prevWidth = newWidth;\n      const prevHeight = newHeight;\n      if (newWidth > 2 * width) {\n        newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n      }\n      if (newHeight > 2 * height) {\n        newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n      }\n      const offscreen = new OffscreenCanvas(newWidth, newHeight);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n      bitmap = offscreen.transferToImageBitmap();\n    }\n    return bitmap;\n  }\n  #drawBitmap(width, height) {\n    const outputScale = new OutputScale();\n    const scaledWidth = Math.ceil(width * outputScale.sx);\n    const scaledHeight = Math.ceil(height * outputScale.sy);\n    const canvas = this.#canvas;\n    if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n      return;\n    }\n    canvas.width = scaledWidth;\n    canvas.height = scaledHeight;\n    const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n    const ctx = canvas.getContext(\"2d\");\n    ctx.filter = this._uiManager.hcmFilter;\n    ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n  }\n  getImageForAltText() {\n    return this.#canvas;\n  }\n  #serializeBitmap(toUrl) {\n    if (toUrl) {\n      if (this.#isSvg) {\n        const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n        if (url) {\n          return url;\n        }\n      }\n      const canvas = document.createElement(\"canvas\");\n      ({\n        width: canvas.width,\n        height: canvas.height\n      } = this.#bitmap);\n      const ctx = canvas.getContext(\"2d\");\n      ctx.drawImage(this.#bitmap, 0, 0);\n      return canvas.toDataURL();\n    }\n    if (this.#isSvg) {\n      const [pageWidth, pageHeight] = this.pageDimensions;\n      const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n      const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n      const offscreen = new OffscreenCanvas(width, height);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n      return offscreen.transferToImageBitmap();\n    }\n    return structuredClone(this.#bitmap);\n  }\n  #createObserver() {\n    if (!this._uiManager._signal) {\n      return;\n    }\n    this.#observer = new ResizeObserver(entries => {\n      const rect = entries[0].contentRect;\n      if (rect.width && rect.height) {\n        this.#setDimensions(rect.width, rect.height);\n      }\n    });\n    this.#observer.observe(this.div);\n    this._uiManager._signal.addEventListener(\"abort\", () => {\n      this.#observer?.disconnect();\n      this.#observer = null;\n    }, {\n      once: true\n    });\n  }\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof StampAnnotationElement) {\n      const {\n        data: {\n          rect,\n          rotation,\n          id,\n          structParent,\n          popupRef\n        },\n        container,\n        parent: {\n          page: {\n            pageNumber\n          }\n        }\n      } = data;\n      const canvas = container.querySelector(\"canvas\");\n      const imageData = uiManager.imageManager.getFromCanvas(container.id, canvas);\n      canvas.remove();\n      const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n      initialData = data = {\n        annotationType: AnnotationEditorType.STAMP,\n        bitmapId: imageData.id,\n        bitmap: imageData.bitmap,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        id,\n        deleted: false,\n        accessibilityData: {\n          decorative: false,\n          altText\n        },\n        isSvg: false,\n        structParent,\n        popupRef\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    const {\n      rect,\n      bitmap,\n      bitmapUrl,\n      bitmapId,\n      isSvg,\n      accessibilityData\n    } = data;\n    if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n      editor.#bitmapId = bitmapId;\n      if (bitmap) {\n        editor.#bitmap = bitmap;\n      }\n    } else {\n      editor.#bitmapUrl = bitmapUrl;\n    }\n    editor.#isSvg = isSvg;\n    const [parentWidth, parentHeight] = editor.pageDimensions;\n    editor.width = (rect[2] - rect[0]) / parentWidth;\n    editor.height = (rect[3] - rect[1]) / parentHeight;\n    editor.annotationElementId = data.id || null;\n    if (accessibilityData) {\n      editor.altTextData = accessibilityData;\n    }\n    editor._initialData = initialData;\n    editor.#hasBeenAddedInUndoStack = !!initialData;\n    return editor;\n  }\n  serialize(isForCopying = false, context = null) {\n    if (this.isEmpty()) {\n      return null;\n    }\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n    const serialized = {\n      annotationType: AnnotationEditorType.STAMP,\n      bitmapId: this.#bitmapId,\n      pageIndex: this.pageIndex,\n      rect: this.getRect(0, 0),\n      rotation: this.rotation,\n      isSvg: this.#isSvg,\n      structTreeParentId: this._structTreeParentId\n    };\n    if (isForCopying) {\n      serialized.bitmapUrl = this.#serializeBitmap(true);\n      serialized.accessibilityData = this.serializeAltText(true);\n      return serialized;\n    }\n    const {\n      decorative,\n      altText\n    } = this.serializeAltText(false);\n    if (!decorative && altText) {\n      serialized.accessibilityData = {\n        type: \"Figure\",\n        alt: altText\n      };\n    }\n    if (this.annotationElementId) {\n      const changes = this.#hasElementChanged(serialized);\n      if (changes.isSame) {\n        return null;\n      }\n      if (changes.isSameAltText) {\n        delete serialized.accessibilityData;\n      } else {\n        serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n      }\n    }\n    serialized.id = this.annotationElementId;\n    if (context === null) {\n      return serialized;\n    }\n    context.stamps ||= new Map();\n    const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n    if (!context.stamps.has(this.#bitmapId)) {\n      context.stamps.set(this.#bitmapId, {\n        area,\n        serialized\n      });\n      serialized.bitmap = this.#serializeBitmap(false);\n    } else if (this.#isSvg) {\n      const prevData = context.stamps.get(this.#bitmapId);\n      if (area > prevData.area) {\n        prevData.area = area;\n        prevData.serialized.bitmap.close();\n        prevData.serialized.bitmap = this.#serializeBitmap(false);\n      }\n    }\n    return serialized;\n  }\n  #hasElementChanged(serialized) {\n    const {\n      rect,\n      pageIndex,\n      accessibilityData: {\n        altText\n      }\n    } = this._initialData;\n    const isSameRect = serialized.rect.every((x, i) => Math.abs(x - rect[i]) < 1);\n    const isSamePageIndex = serialized.pageIndex === pageIndex;\n    const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n    return {\n      isSame: isSameRect && isSamePageIndex && isSameAltText,\n      isSameAltText\n    };\n  }\n  renderAnnotationElement(annotation) {\n    annotation.updateEdited({\n      rect: this.getRect(0, 0)\n    });\n    return null;\n  }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n  #accessibilityManager;\n  #allowClick = false;\n  #annotationLayer = null;\n  #clickAC = null;\n  #editorFocusTimeoutId = null;\n  #editors = new Map();\n  #hadPointerDown = false;\n  #isCleaningUp = false;\n  #isDisabling = false;\n  #textLayer = null;\n  #textSelectionAC = null;\n  #uiManager;\n  static _initialized = false;\n  static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [type._editorType, type]));\n  constructor({\n    uiManager,\n    pageIndex,\n    div,\n    structTreeLayer,\n    accessibilityManager,\n    annotationLayer,\n    drawLayer,\n    textLayer,\n    viewport,\n    l10n\n  }) {\n    const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n    if (!AnnotationEditorLayer._initialized) {\n      AnnotationEditorLayer._initialized = true;\n      for (const editorType of editorTypes) {\n        editorType.initialize(l10n, uiManager);\n      }\n    }\n    uiManager.registerEditorTypes(editorTypes);\n    this.#uiManager = uiManager;\n    this.pageIndex = pageIndex;\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationLayer = annotationLayer;\n    this.viewport = viewport;\n    this.#textLayer = textLayer;\n    this.drawLayer = drawLayer;\n    this._structTree = structTreeLayer;\n    this.#uiManager.addLayer(this);\n  }\n  get isEmpty() {\n    return this.#editors.size === 0;\n  }\n  get isInvisible() {\n    return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n  }\n  updateToolbar(mode) {\n    this.#uiManager.updateToolbar(mode);\n  }\n  updateMode(mode = this.#uiManager.getMode()) {\n    this.#cleanup();\n    switch (mode) {\n      case AnnotationEditorType.NONE:\n        this.disableTextSelection();\n        this.togglePointerEvents(false);\n        this.toggleAnnotationLayerPointerEvents(true);\n        this.disableClick();\n        return;\n      case AnnotationEditorType.INK:\n        this.addInkEditorIfNeeded(false);\n        this.disableTextSelection();\n        this.togglePointerEvents(true);\n        this.disableClick();\n        break;\n      case AnnotationEditorType.HIGHLIGHT:\n        this.enableTextSelection();\n        this.togglePointerEvents(false);\n        this.disableClick();\n        break;\n      default:\n        this.disableTextSelection();\n        this.togglePointerEvents(true);\n        this.enableClick();\n    }\n    this.toggleAnnotationLayerPointerEvents(false);\n    const {\n      classList\n    } = this.div;\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n      classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n    }\n    this.div.hidden = false;\n  }\n  hasTextLayer(textLayer) {\n    return textLayer === this.#textLayer?.div;\n  }\n  addInkEditorIfNeeded(isCommitting) {\n    if (this.#uiManager.getMode() !== AnnotationEditorType.INK) {\n      return;\n    }\n    if (!isCommitting) {\n      for (const editor of this.#editors.values()) {\n        if (editor.isEmpty()) {\n          editor.setInBackground();\n          return;\n        }\n      }\n    }\n    const editor = this.createAndAddNewEditor({\n      offsetX: 0,\n      offsetY: 0\n    }, false);\n    editor.setInBackground();\n  }\n  setEditingState(isEditing) {\n    this.#uiManager.setEditingState(isEditing);\n  }\n  addCommands(params) {\n    this.#uiManager.addCommands(params);\n  }\n  toggleDrawing(enabled = false) {\n    this.div.classList.toggle(\"drawing\", !enabled);\n  }\n  togglePointerEvents(enabled = false) {\n    this.div.classList.toggle(\"disabled\", !enabled);\n  }\n  toggleAnnotationLayerPointerEvents(enabled = false) {\n    this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n  }\n  async enable() {\n    this.div.tabIndex = 0;\n    this.togglePointerEvents(true);\n    const annotationElementIds = new Set();\n    for (const editor of this.#editors.values()) {\n      editor.enableEditing();\n      editor.show(true);\n      if (editor.annotationElementId) {\n        this.#uiManager.removeChangedExistingAnnotation(editor);\n        annotationElementIds.add(editor.annotationElementId);\n      }\n    }\n    if (!this.#annotationLayer) {\n      return;\n    }\n    const editables = this.#annotationLayer.getEditableAnnotations();\n    for (const editable of editables) {\n      editable.hide();\n      if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n        continue;\n      }\n      if (annotationElementIds.has(editable.data.id)) {\n        continue;\n      }\n      const editor = await this.deserialize(editable);\n      if (!editor) {\n        continue;\n      }\n      this.addOrRebuild(editor);\n      editor.enableEditing();\n    }\n  }\n  disable() {\n    this.#isDisabling = true;\n    this.div.tabIndex = -1;\n    this.togglePointerEvents(false);\n    const changedAnnotations = new Map();\n    const resetAnnotations = new Map();\n    for (const editor of this.#editors.values()) {\n      editor.disableEditing();\n      if (!editor.annotationElementId) {\n        continue;\n      }\n      if (editor.serialize() !== null) {\n        changedAnnotations.set(editor.annotationElementId, editor);\n        continue;\n      } else {\n        resetAnnotations.set(editor.annotationElementId, editor);\n      }\n      this.getEditableAnnotation(editor.annotationElementId)?.show();\n      editor.remove();\n    }\n    if (this.#annotationLayer) {\n      const editables = this.#annotationLayer.getEditableAnnotations();\n      for (const editable of editables) {\n        const {\n          id\n        } = editable.data;\n        if (this.#uiManager.isDeletedAnnotationElement(id)) {\n          continue;\n        }\n        let editor = resetAnnotations.get(id);\n        if (editor) {\n          editor.resetAnnotationElement(editable);\n          editor.show(false);\n          editable.show();\n          continue;\n        }\n        editor = changedAnnotations.get(id);\n        if (editor) {\n          this.#uiManager.addChangedExistingAnnotation(editor);\n          if (editor.renderAnnotationElement(editable)) {\n            editor.show(false);\n          }\n        }\n        editable.show();\n      }\n    }\n    this.#cleanup();\n    if (this.isEmpty) {\n      this.div.hidden = true;\n    }\n    const {\n      classList\n    } = this.div;\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n      classList.remove(`${editorType._type}Editing`);\n    }\n    this.disableTextSelection();\n    this.toggleAnnotationLayerPointerEvents(true);\n    this.#isDisabling = false;\n  }\n  getEditableAnnotation(id) {\n    return this.#annotationLayer?.getEditableAnnotation(id) || null;\n  }\n  setActiveEditor(editor) {\n    const currentActive = this.#uiManager.getActive();\n    if (currentActive === editor) {\n      return;\n    }\n    this.#uiManager.setActiveEditor(editor);\n  }\n  enableTextSelection() {\n    this.div.tabIndex = -1;\n    if (this.#textLayer?.div && !this.#textSelectionAC) {\n      this.#textSelectionAC = new AbortController();\n      const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n      this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n        signal\n      });\n      this.#textLayer.div.classList.add(\"highlighting\");\n    }\n  }\n  disableTextSelection() {\n    this.div.tabIndex = 0;\n    if (this.#textLayer?.div && this.#textSelectionAC) {\n      this.#textSelectionAC.abort();\n      this.#textSelectionAC = null;\n      this.#textLayer.div.classList.remove(\"highlighting\");\n    }\n  }\n  #textLayerPointerDown(event) {\n    this.#uiManager.unselectAll();\n    const {\n      target\n    } = event;\n    if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n      const {\n        isMac\n      } = util_FeatureTest.platform;\n      if (event.button !== 0 || event.ctrlKey && isMac) {\n        return;\n      }\n      this.#uiManager.showAllEditors(\"highlight\", true, true);\n      this.#textLayer.div.classList.add(\"free\");\n      this.toggleDrawing();\n      HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n        target: this.#textLayer.div,\n        x: event.x,\n        y: event.y\n      });\n      this.#textLayer.div.addEventListener(\"pointerup\", () => {\n        this.#textLayer.div.classList.remove(\"free\");\n        this.toggleDrawing(true);\n      }, {\n        once: true,\n        signal: this.#uiManager._signal\n      });\n      event.preventDefault();\n    }\n  }\n  enableClick() {\n    if (this.#clickAC) {\n      return;\n    }\n    this.#clickAC = new AbortController();\n    const signal = this.#uiManager.combinedSignal(this.#clickAC);\n    this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n      signal\n    });\n    this.div.addEventListener(\"pointerup\", this.pointerup.bind(this), {\n      signal\n    });\n  }\n  disableClick() {\n    this.#clickAC?.abort();\n    this.#clickAC = null;\n  }\n  attach(editor) {\n    this.#editors.set(editor.id, editor);\n    const {\n      annotationElementId\n    } = editor;\n    if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n      this.#uiManager.removeDeletedAnnotationElement(editor);\n    }\n  }\n  detach(editor) {\n    this.#editors.delete(editor.id);\n    this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n    if (!this.#isDisabling && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor);\n    }\n  }\n  remove(editor) {\n    this.detach(editor);\n    this.#uiManager.removeEditor(editor);\n    editor.div.remove();\n    editor.isAttachedToDOM = false;\n    if (!this.#isCleaningUp) {\n      this.addInkEditorIfNeeded(false);\n    }\n  }\n  changeParent(editor) {\n    if (editor.parent === this) {\n      return;\n    }\n    if (editor.parent && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n      AnnotationEditor.deleteAnnotationElement(editor);\n      editor.annotationElementId = null;\n    }\n    this.attach(editor);\n    editor.parent?.detach(editor);\n    editor.setParent(this);\n    if (editor.div && editor.isAttachedToDOM) {\n      editor.div.remove();\n      this.div.append(editor.div);\n    }\n  }\n  add(editor) {\n    if (editor.parent === this && editor.isAttachedToDOM) {\n      return;\n    }\n    this.changeParent(editor);\n    this.#uiManager.addEditor(editor);\n    this.attach(editor);\n    if (!editor.isAttachedToDOM) {\n      const div = editor.render();\n      this.div.append(div);\n      editor.isAttachedToDOM = true;\n    }\n    editor.fixAndSetPosition();\n    editor.onceAdded();\n    this.#uiManager.addToAnnotationStorage(editor);\n    editor._reportTelemetry(editor.telemetryInitialData);\n  }\n  moveEditorInDOM(editor) {\n    if (!editor.isAttachedToDOM) {\n      return;\n    }\n    const {\n      activeElement\n    } = document;\n    if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n      editor._focusEventsAllowed = false;\n      this.#editorFocusTimeoutId = setTimeout(() => {\n        this.#editorFocusTimeoutId = null;\n        if (!editor.div.contains(document.activeElement)) {\n          editor.div.addEventListener(\"focusin\", () => {\n            editor._focusEventsAllowed = true;\n          }, {\n            once: true,\n            signal: this.#uiManager._signal\n          });\n          activeElement.focus();\n        } else {\n          editor._focusEventsAllowed = true;\n        }\n      }, 0);\n    }\n    editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n  }\n  addOrRebuild(editor) {\n    if (editor.needsToBeRebuilt()) {\n      editor.parent ||= this;\n      editor.rebuild();\n      editor.show();\n    } else {\n      this.add(editor);\n    }\n  }\n  addUndoableEditor(editor) {\n    const cmd = () => editor._uiManager.rebuild(editor);\n    const undo = () => {\n      editor.remove();\n    };\n    this.addCommands({\n      cmd,\n      undo,\n      mustExec: false\n    });\n  }\n  getNextId() {\n    return this.#uiManager.getId();\n  }\n  get #currentEditorType() {\n    return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n  }\n  combinedSignal(ac) {\n    return this.#uiManager.combinedSignal(ac);\n  }\n  #createNewEditor(params) {\n    const editorType = this.#currentEditorType;\n    return editorType ? new editorType.prototype.constructor(params) : null;\n  }\n  canCreateNewEmptyEditor() {\n    return this.#currentEditorType?.canCreateNewEmptyEditor();\n  }\n  pasteEditor(mode, params) {\n    this.#uiManager.updateToolbar(mode);\n    this.#uiManager.updateMode(mode);\n    const {\n      offsetX,\n      offsetY\n    } = this.#getCenterPoint();\n    const id = this.getNextId();\n    const editor = this.#createNewEditor({\n      parent: this,\n      id,\n      x: offsetX,\n      y: offsetY,\n      uiManager: this.#uiManager,\n      isCentered: true,\n      ...params\n    });\n    if (editor) {\n      this.add(editor);\n    }\n  }\n  async deserialize(data) {\n    return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n  }\n  createAndAddNewEditor(event, isCentered, data = {}) {\n    const id = this.getNextId();\n    const editor = this.#createNewEditor({\n      parent: this,\n      id,\n      x: event.offsetX,\n      y: event.offsetY,\n      uiManager: this.#uiManager,\n      isCentered,\n      ...data\n    });\n    if (editor) {\n      this.add(editor);\n    }\n    return editor;\n  }\n  #getCenterPoint() {\n    const {\n      x,\n      y,\n      width,\n      height\n    } = this.div.getBoundingClientRect();\n    const tlX = Math.max(0, x);\n    const tlY = Math.max(0, y);\n    const brX = Math.min(window.innerWidth, x + width);\n    const brY = Math.min(window.innerHeight, y + height);\n    const centerX = (tlX + brX) / 2 - x;\n    const centerY = (tlY + brY) / 2 - y;\n    const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n    return {\n      offsetX,\n      offsetY\n    };\n  }\n  addNewEditor() {\n    this.createAndAddNewEditor(this.#getCenterPoint(), true);\n  }\n  setSelected(editor) {\n    this.#uiManager.setSelected(editor);\n  }\n  toggleSelected(editor) {\n    this.#uiManager.toggleSelected(editor);\n  }\n  isSelected(editor) {\n    return this.#uiManager.isSelected(editor);\n  }\n  unselect(editor) {\n    this.#uiManager.unselect(editor);\n  }\n  pointerup(event) {\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      return;\n    }\n    if (event.target !== this.div) {\n      return;\n    }\n    if (!this.#hadPointerDown) {\n      return;\n    }\n    this.#hadPointerDown = false;\n    if (!this.#allowClick) {\n      this.#allowClick = true;\n      return;\n    }\n    if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n      this.#uiManager.unselectAll();\n      return;\n    }\n    this.createAndAddNewEditor(event, false);\n  }\n  pointerdown(event) {\n    if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n      this.enableTextSelection();\n    }\n    if (this.#hadPointerDown) {\n      this.#hadPointerDown = false;\n      return;\n    }\n    const {\n      isMac\n    } = util_FeatureTest.platform;\n    if (event.button !== 0 || event.ctrlKey && isMac) {\n      return;\n    }\n    if (event.target !== this.div) {\n      return;\n    }\n    this.#hadPointerDown = true;\n    const editor = this.#uiManager.getActive();\n    this.#allowClick = !editor || editor.isEmpty();\n  }\n  findNewParent(editor, x, y) {\n    const layer = this.#uiManager.findParent(x, y);\n    if (layer === null || layer === this) {\n      return false;\n    }\n    layer.changeParent(editor);\n    return true;\n  }\n  destroy() {\n    if (this.#uiManager.getActive()?.parent === this) {\n      this.#uiManager.commitOrRemove();\n      this.#uiManager.setActiveEditor(null);\n    }\n    if (this.#editorFocusTimeoutId) {\n      clearTimeout(this.#editorFocusTimeoutId);\n      this.#editorFocusTimeoutId = null;\n    }\n    for (const editor of this.#editors.values()) {\n      this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n      editor.setParent(null);\n      editor.isAttachedToDOM = false;\n      editor.div.remove();\n    }\n    this.div = null;\n    this.#editors.clear();\n    this.#uiManager.removeLayer(this);\n  }\n  #cleanup() {\n    this.#isCleaningUp = true;\n    for (const editor of this.#editors.values()) {\n      if (editor.isEmpty()) {\n        editor.remove();\n      }\n    }\n    this.#isCleaningUp = false;\n  }\n  render({\n    viewport\n  }) {\n    this.viewport = viewport;\n    setLayerDimensions(this.div, viewport);\n    for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n      this.add(editor);\n      editor.rebuild();\n    }\n    this.updateMode();\n  }\n  update({\n    viewport\n  }) {\n    this.#uiManager.commitOrRemove();\n    this.#cleanup();\n    const oldRotation = this.viewport.rotation;\n    const rotation = viewport.rotation;\n    this.viewport = viewport;\n    setLayerDimensions(this.div, {\n      rotation\n    });\n    if (oldRotation !== rotation) {\n      for (const editor of this.#editors.values()) {\n        editor.rotate(rotation);\n      }\n    }\n    this.addInkEditorIfNeeded(false);\n  }\n  get pageDimensions() {\n    const {\n      pageWidth,\n      pageHeight\n    } = this.viewport.rawDims;\n    return [pageWidth, pageHeight];\n  }\n  get scale() {\n    return this.#uiManager.viewParameters.realScale;\n  }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n  #parent = null;\n  #id = 0;\n  #mapping = new Map();\n  #toUpdate = new Map();\n  constructor({\n    pageIndex\n  }) {\n    this.pageIndex = pageIndex;\n  }\n  setParent(parent) {\n    if (!this.#parent) {\n      this.#parent = parent;\n      return;\n    }\n    if (this.#parent !== parent) {\n      if (this.#mapping.size > 0) {\n        for (const root of this.#mapping.values()) {\n          root.remove();\n          parent.append(root);\n        }\n      }\n      this.#parent = parent;\n    }\n  }\n  static get _svgFactory() {\n    return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n  }\n  static #setBox(element, {\n    x = 0,\n    y = 0,\n    width = 1,\n    height = 1\n  } = {}) {\n    const {\n      style\n    } = element;\n    style.top = `${100 * y}%`;\n    style.left = `${100 * x}%`;\n    style.width = `${100 * width}%`;\n    style.height = `${100 * height}%`;\n  }\n  #createSVG(box) {\n    const svg = DrawLayer._svgFactory.create(1, 1, true);\n    this.#parent.append(svg);\n    svg.setAttribute(\"aria-hidden\", true);\n    DrawLayer.#setBox(svg, box);\n    return svg;\n  }\n  #createClipPath(defs, pathId) {\n    const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n    defs.append(clipPath);\n    const clipPathId = `clip_${pathId}`;\n    clipPath.setAttribute(\"id\", clipPathId);\n    clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n    const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n    clipPath.append(clipPathUse);\n    clipPathUse.setAttribute(\"href\", `#${pathId}`);\n    clipPathUse.classList.add(\"clip\");\n    return clipPathId;\n  }\n  highlight(outlines, color, opacity, isPathUpdatable = false) {\n    const id = this.#id++;\n    const root = this.#createSVG(outlines.box);\n    root.classList.add(\"highlight\");\n    if (outlines.free) {\n      root.classList.add(\"free\");\n    }\n    const defs = DrawLayer._svgFactory.createElement(\"defs\");\n    root.append(defs);\n    const path = DrawLayer._svgFactory.createElement(\"path\");\n    defs.append(path);\n    const pathId = `path_p${this.pageIndex}_${id}`;\n    path.setAttribute(\"id\", pathId);\n    path.setAttribute(\"d\", outlines.toSVGPath());\n    if (isPathUpdatable) {\n      this.#toUpdate.set(id, path);\n    }\n    const clipPathId = this.#createClipPath(defs, pathId);\n    const use = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use);\n    root.setAttribute(\"fill\", color);\n    root.setAttribute(\"fill-opacity\", opacity);\n    use.setAttribute(\"href\", `#${pathId}`);\n    this.#mapping.set(id, root);\n    return {\n      id,\n      clipPathId: `url(#${clipPathId})`\n    };\n  }\n  highlightOutline(outlines) {\n    const id = this.#id++;\n    const root = this.#createSVG(outlines.box);\n    root.classList.add(\"highlightOutline\");\n    const defs = DrawLayer._svgFactory.createElement(\"defs\");\n    root.append(defs);\n    const path = DrawLayer._svgFactory.createElement(\"path\");\n    defs.append(path);\n    const pathId = `path_p${this.pageIndex}_${id}`;\n    path.setAttribute(\"id\", pathId);\n    path.setAttribute(\"d\", outlines.toSVGPath());\n    path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n    let maskId;\n    if (outlines.free) {\n      root.classList.add(\"free\");\n      const mask = DrawLayer._svgFactory.createElement(\"mask\");\n      defs.append(mask);\n      maskId = `mask_p${this.pageIndex}_${id}`;\n      mask.setAttribute(\"id\", maskId);\n      mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n      const rect = DrawLayer._svgFactory.createElement(\"rect\");\n      mask.append(rect);\n      rect.setAttribute(\"width\", \"1\");\n      rect.setAttribute(\"height\", \"1\");\n      rect.setAttribute(\"fill\", \"white\");\n      const use = DrawLayer._svgFactory.createElement(\"use\");\n      mask.append(use);\n      use.setAttribute(\"href\", `#${pathId}`);\n      use.setAttribute(\"stroke\", \"none\");\n      use.setAttribute(\"fill\", \"black\");\n      use.setAttribute(\"fill-rule\", \"nonzero\");\n      use.classList.add(\"mask\");\n    }\n    const use1 = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use1);\n    use1.setAttribute(\"href\", `#${pathId}`);\n    if (maskId) {\n      use1.setAttribute(\"mask\", `url(#${maskId})`);\n    }\n    const use2 = use1.cloneNode();\n    root.append(use2);\n    use1.classList.add(\"mainOutline\");\n    use2.classList.add(\"secondaryOutline\");\n    this.#mapping.set(id, root);\n    return id;\n  }\n  finalizeLine(id, line) {\n    const path = this.#toUpdate.get(id);\n    this.#toUpdate.delete(id);\n    this.updateBox(id, line.box);\n    path.setAttribute(\"d\", line.toSVGPath());\n  }\n  updateLine(id, line) {\n    const root = this.#mapping.get(id);\n    const defs = root.firstChild;\n    const path = defs.firstChild;\n    path.setAttribute(\"d\", line.toSVGPath());\n  }\n  removeFreeHighlight(id) {\n    this.remove(id);\n    this.#toUpdate.delete(id);\n  }\n  updatePath(id, line) {\n    this.#toUpdate.get(id).setAttribute(\"d\", line.toSVGPath());\n  }\n  updateBox(id, box) {\n    DrawLayer.#setBox(this.#mapping.get(id), box);\n  }\n  show(id, visible) {\n    this.#mapping.get(id).classList.toggle(\"hidden\", !visible);\n  }\n  rotate(id, angle) {\n    this.#mapping.get(id).setAttribute(\"data-main-rotation\", angle);\n  }\n  changeColor(id, color) {\n    this.#mapping.get(id).setAttribute(\"fill\", color);\n  }\n  changeOpacity(id, opacity) {\n    this.#mapping.get(id).setAttribute(\"fill-opacity\", opacity);\n  }\n  addClass(id, className) {\n    this.#mapping.get(id).classList.add(className);\n  }\n  removeClass(id, className) {\n    this.#mapping.get(id).classList.remove(className);\n  }\n  getSVGRoot(id) {\n    return this.#mapping.get(id);\n  }\n  remove(id) {\n    if (this.#parent === null) {\n      return;\n    }\n    this.#mapping.get(id).remove();\n    this.#mapping.delete(id);\n  }\n  destroy() {\n    this.#parent = null;\n    for (const root of this.#mapping.values()) {\n      root.remove();\n    }\n    this.#mapping.clear();\n  }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\nconst pdfjsVersion = \"4.7.76\";\nconst pdfjsBuild = \"8b73b828b\";\n\nvar __webpack_exports__AbortException = __webpack_exports__.AbortException;\nvar __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\nvar __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\nvar __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\nvar __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\nvar __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\nvar __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\nvar __webpack_exports__CMapCompressionType = __webpack_exports__.CMapCompressionType;\nvar __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\nvar __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\nvar __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\nvar __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\nvar __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\nvar __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\nvar __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\nvar __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;\nvar __webpack_exports__OPS = __webpack_exports__.OPS;\nvar __webpack_exports__OutputScale = __webpack_exports__.OutputScale;\nvar __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\nvar __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\nvar __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\nvar __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\nvar __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\nvar __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\nvar __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\nvar __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\nvar __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;\nvar __webpack_exports__Util = __webpack_exports__.Util;\nvar __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\nvar __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\nvar __webpack_exports__build = __webpack_exports__.build;\nvar __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\nvar __webpack_exports__fetchData = __webpack_exports__.fetchData;\nvar __webpack_exports__getDocument = __webpack_exports__.getDocument;\nvar __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\nvar __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\nvar __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\nvar __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\nvar __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\nvar __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\nvar __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\nvar __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\nvar __webpack_exports__shadow = __webpack_exports__.shadow;\nvar __webpack_exports__version = __webpack_exports__.version;\nexport { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__CMapCompressionType as CMapCompressionType, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__OutputScale as OutputScale, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__TextLayer as TextLayer, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,mBAAmB,GAAG,EAAE,CAAC;AACtC;AACA;AACA;AACA,SAAS,CAAC,MAAM;AAChB;AACA,UAAU,mBAAmB,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK;AAC3D,WAAW,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE;AACtC,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;AAC/F,aAAa,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7F,aAAa;AACb,YAAY;AACZ,WAAW,CAAC;AACZ,UAAU,GAAG,CAAC;AACd;AACA;AACA,SAAS,CAAC,MAAM;AAChB,UAAU,mBAAmB,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAC;AAClG,UAAU,GAAG,CAAC;AACd;AACA;AACA,IAAI,mBAAmB,GAAG,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnD;AACA;AACA,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,EAAE;AAC3C,EAAE,cAAc,EAAE,sBAAsB,cAAc,CAAC;AACvD,EAAE,qBAAqB,EAAE,sBAAsB,qBAAqB,CAAC;AACrE,EAAE,0BAA0B,EAAE,sBAAsB,0BAA0B,CAAC;AAC/E,EAAE,oBAAoB,EAAE,sBAAsB,oBAAoB,CAAC;AACnE,EAAE,yBAAyB,EAAE,sBAAsB,yBAAyB,CAAC;AAC7E,EAAE,eAAe,EAAE,sBAAsB,eAAe,CAAC;AACzD,EAAE,cAAc,EAAE,sBAAsB,cAAc,CAAC;AACvD,EAAE,mBAAmB,EAAE,sBAAsB,mBAAmB,CAAC;AACjE,EAAE,WAAW,EAAE,sBAAsB,WAAW,CAAC;AACjD,EAAE,aAAa,EAAE,sBAAsB,aAAa,CAAC;AACrD,EAAE,SAAS,EAAE,sBAAsB,SAAS,CAAC;AAC7C,EAAE,WAAW,EAAE,sBAAsB,gBAAgB,CAAC;AACtD,EAAE,mBAAmB,EAAE,sBAAsB,mBAAmB,CAAC;AACjE,EAAE,SAAS,EAAE,sBAAsB,cAAc,CAAC;AAClD,EAAE,mBAAmB,EAAE,sBAAsB,mBAAmB,CAAC;AACjE,EAAE,mBAAmB,EAAE,sBAAsB,mBAAmB,CAAC;AACjE,EAAE,GAAG,EAAE,sBAAsB,GAAG,CAAC;AACjC,EAAE,WAAW,EAAE,sBAAsB,WAAW,CAAC;AACjD,EAAE,qBAAqB,EAAE,sBAAsB,qBAAqB,CAAC;AACrE,EAAE,aAAa,EAAE,sBAAsB,aAAa,CAAC;AACrD,EAAE,SAAS,EAAE,sBAAsB,SAAS,CAAC;AAC7C,EAAE,iBAAiB,EAAE,sBAAsB,iBAAiB,CAAC;AAC7D,EAAE,cAAc,EAAE,sBAAsB,cAAc,CAAC;AACvD,EAAE,aAAa,EAAE,sBAAsB,aAAa,CAAC;AACrD,EAAE,2BAA2B,EAAE,sBAAsB,2BAA2B,CAAC;AACjF,EAAE,SAAS,EAAE,sBAAsB,SAAS,CAAC;AAC7C,EAAE,2BAA2B,EAAE,sBAAsB,2BAA2B,CAAC;AACjF,EAAE,IAAI,EAAE,sBAAsB,IAAI,CAAC;AACnC,EAAE,cAAc,EAAE,sBAAsB,cAAc,CAAC;AACvD,EAAE,QAAQ,EAAE,sBAAsB,QAAQ,CAAC;AAC3C,EAAE,KAAK,EAAE,sBAAsB,KAAK,CAAC;AACrC,EAAE,sBAAsB,EAAE,sBAAsB,sBAAsB,CAAC;AACvE,EAAE,SAAS,EAAE,sBAAsB,SAAS,CAAC;AAC7C,EAAE,WAAW,EAAE,sBAAsB,WAAW,CAAC;AACjD,EAAE,kBAAkB,EAAE,sBAAsB,kBAAkB,CAAC;AAC/D,EAAE,qBAAqB,EAAE,sBAAsB,qBAAqB,CAAC;AACrE,EAAE,kBAAkB,EAAE,sBAAsB,kBAAkB,CAAC;AAC/D,EAAE,YAAY,EAAE,sBAAsB,YAAY,CAAC;AACnD,EAAE,SAAS,EAAE,sBAAsB,SAAS,CAAC;AAC7C,EAAE,aAAa,EAAE,sBAAsB,aAAa,CAAC;AACrD,EAAE,gBAAgB,EAAE,sBAAsB,gBAAgB,CAAC;AAC3D,EAAE,kBAAkB,EAAE,sBAAsB,kBAAkB,CAAC;AAC/D,EAAE,MAAM,EAAE,sBAAsB,MAAM,CAAC;AACvC,EAAE,OAAO,EAAE,sBAAsB,OAAO,CAAC;AACzC,CAAC,CAAC,CAAC;AAGH,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,EAAE,KAAK,kBAAkB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAC1L,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxD,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,WAAW,GAAG,IAAI,CAAC;AAGzB,MAAM,mBAAmB,GAAG;AAC5B,EAAE,GAAG,EAAE,IAAI;AACX,EAAE,OAAO,EAAE,IAAI;AACf,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,IAAI,EAAE,IAAI;AACZ,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,mBAAmB,EAAE,IAAI;AAC3B,EAAE,mBAAmB,EAAE,IAAI;AAC3B,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,MAAM,EAAE,KAAK;AACf,CAAC,CAAC;AACF,MAAM,cAAc,GAAG;AACvB,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,YAAY,EAAE,CAAC;AACjB,EAAE,cAAc,EAAE,CAAC;AACnB,CAAC,CAAC;AACF,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AACxD,MAAM,oBAAoB,GAAG;AAC7B,EAAE,OAAO,EAAE,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,QAAQ,EAAE,CAAC;AACb,EAAE,SAAS,EAAE,CAAC;AACd,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,GAAG,EAAE,EAAE;AACT,CAAC,CAAC;AACF,MAAM,0BAA0B,GAAG;AACnC,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,aAAa,EAAE,EAAE;AACnB,EAAE,cAAc,EAAE,EAAE;AACpB,EAAE,gBAAgB,EAAE,EAAE;AACtB,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,aAAa,EAAE,EAAE;AACnB,EAAE,WAAW,EAAE,EAAE;AACjB,EAAE,eAAe,EAAE,EAAE;AACrB,EAAE,uBAAuB,EAAE,EAAE;AAC7B,EAAE,mBAAmB,EAAE,EAAE;AACzB,EAAE,cAAc,EAAE,EAAE;AACpB,EAAE,kBAAkB,EAAE,EAAE;AACxB,CAAC,CAAC;AACF,MAAM,cAAc,GAAG;AACvB,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,eAAe,EAAE,IAAI;AACvB,EAAE,IAAI,EAAE,IAAI;AACZ,EAAE,kBAAkB,EAAE,IAAI;AAC1B,EAAE,sBAAsB,EAAE,KAAK;AAC/B,EAAE,sBAAsB,EAAE,KAAK;AAC/B,EAAE,QAAQ,EAAE,KAAK;AACjB,EAAE,kBAAkB,EAAE,KAAK;AAC3B,CAAC,CAAC;AACF,MAAM,iBAAiB,GAAG;AAC1B,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,SAAS,EAAE,CAAC;AACd,EAAE,gBAAgB,EAAE,CAAC;AACrB,EAAE,kBAAkB,EAAE,CAAC;AACvB,EAAE,uBAAuB,EAAE,CAAC;AAC5B,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,gBAAgB,EAAE,CAAC;AACrB,EAAE,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC;AACF,MAAM,cAAc,GAAG;AACvB,EAAE,cAAc,EAAE,CAAC;AACnB,EAAE,SAAS,EAAE,CAAC;AACd,EAAE,UAAU,EAAE,CAAC;AACf,CAAC,CAAC;AACF,MAAM,cAAc,GAAG;AACvB,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,QAAQ,EAAE,CAAC;AACb,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,QAAQ,EAAE,CAAC;AACb,EAAE,SAAS,EAAE,CAAC;AACd,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,GAAG,EAAE,EAAE;AACT,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,cAAc,EAAE,EAAE;AACpB,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,WAAW,EAAE,EAAE;AACjB,EAAE,OAAO,EAAE,EAAE;AACb,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,MAAM,EAAE,EAAE;AACZ,CAAC,CAAC;AAsCF,MAAM,yBAAyB,GAAG;AAClC,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,SAAS,EAAE,CAAC;AACd,CAAC,CAAC;AA4BF,MAAM,cAAc,GAAG;AACvB,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,QAAQ,EAAE,CAAC;AACb,EAAE,KAAK,EAAE,CAAC;AACV,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAG;AAC5B,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,MAAM,EAAE,CAAC;AACX,CAAC,CAAC;AACF,MAAM,GAAG,GAAG;AACZ,EAAE,UAAU,EAAE,CAAC;AACf,EAAE,YAAY,EAAE,CAAC;AACjB,EAAE,UAAU,EAAE,CAAC;AACf,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,aAAa,EAAE,CAAC;AAClB,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,kBAAkB,EAAE,CAAC;AACvB,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,SAAS,EAAE,CAAC;AACd,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,OAAO,EAAE,EAAE;AACb,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,OAAO,EAAE,EAAE;AACb,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,WAAW,EAAE,EAAE;AACjB,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,UAAU,EAAE,EAAE;AAChB,EAAE,YAAY,EAAE,EAAE;AAClB,EAAE,eAAe,EAAE,EAAE;AACrB,EAAE,iBAAiB,EAAE,EAAE;AACvB,EAAE,OAAO,EAAE,EAAE;AACb,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,OAAO,EAAE,EAAE;AACb,EAAE,cAAc,EAAE,EAAE;AACpB,EAAE,cAAc,EAAE,EAAE;AACpB,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,UAAU,EAAE,EAAE;AAChB,EAAE,OAAO,EAAE,EAAE;AACb,EAAE,oBAAoB,EAAE,EAAE;AAC1B,EAAE,WAAW,EAAE,EAAE;AACjB,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,kBAAkB,EAAE,EAAE;AACxB,EAAE,aAAa,EAAE,EAAE;AACnB,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,cAAc,EAAE,EAAE;AACpB,EAAE,gBAAgB,EAAE,EAAE;AACtB,EAAE,0BAA0B,EAAE,EAAE;AAChC,EAAE,YAAY,EAAE,EAAE;AAClB,EAAE,qBAAqB,EAAE,EAAE;AAC3B,EAAE,mBAAmB,EAAE,EAAE;AACzB,EAAE,iBAAiB,EAAE,EAAE;AACvB,EAAE,cAAc,EAAE,EAAE;AACpB,EAAE,eAAe,EAAE,EAAE;AACrB,EAAE,YAAY,EAAE,EAAE;AAClB,EAAE,aAAa,EAAE,EAAE;AACnB,EAAE,aAAa,EAAE,EAAE;AACnB,EAAE,WAAW,EAAE,EAAE;AACjB,EAAE,iBAAiB,EAAE,EAAE;AACvB,EAAE,eAAe,EAAE,EAAE;AACrB,EAAE,kBAAkB,EAAE,EAAE;AACxB,EAAE,gBAAgB,EAAE,EAAE;AACtB,EAAE,WAAW,EAAE,EAAE;AACjB,EAAE,gBAAgB,EAAE,EAAE;AACtB,EAAE,cAAc,EAAE,EAAE;AACpB,EAAE,cAAc,EAAE,EAAE;AACpB,EAAE,YAAY,EAAE,EAAE;AAClB,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,cAAc,EAAE,EAAE;AACpB,EAAE,kBAAkB,EAAE,EAAE;AACxB,EAAE,uBAAuB,EAAE,EAAE;AAC7B,EAAE,gBAAgB,EAAE,EAAE;AACtB,EAAE,WAAW,EAAE,EAAE;AACjB,EAAE,SAAS,EAAE,EAAE;AACf,EAAE,qBAAqB,EAAE,EAAE;AAC3B,EAAE,mBAAmB,EAAE,EAAE;AACzB,EAAE,UAAU,EAAE,EAAE;AAChB,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,eAAe,EAAE,EAAE;AACrB,EAAE,aAAa,EAAE,EAAE;AACnB,EAAE,qBAAqB,EAAE,EAAE;AAC3B,EAAE,0BAA0B,EAAE,EAAE;AAChC,EAAE,iBAAiB,EAAE,EAAE;AACvB,EAAE,uBAAuB,EAAE,EAAE;AAC7B,EAAE,4BAA4B,EAAE,EAAE;AAClC,EAAE,uBAAuB,EAAE,EAAE;AAC7B,EAAE,2BAA2B,EAAE,EAAE;AACjC,EAAE,wBAAwB,EAAE,EAAE;AAC9B,EAAE,aAAa,EAAE,EAAE;AACnB,EAAE,oBAAoB,EAAE,EAAE;AAC1B,EAAE,kBAAkB,EAAE,EAAE;AACxB,CAAC,CAAC;AACF,MAAM,iBAAiB,GAAG;AAC1B,EAAE,aAAa,EAAE,CAAC;AAClB,EAAE,kBAAkB,EAAE,CAAC;AACvB,CAAC,CAAC;AACF,IAAI,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC;AACxC,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC/B,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,GAAG;AACH,CAAC;AACD,SAAS,iBAAiB,GAAG;AAC7B,EAAE,OAAO,SAAS,CAAC;AACnB,CAAC;AACD,SAAS,IAAI,CAAC,GAAG,EAAE;AACnB,EAAE,IAAI,SAAS,IAAI,cAAc,CAAC,KAAK,EAAE;AACzC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAChC,GAAG;AACH,CAAC;AACD,SAAS,IAAI,CAAC,GAAG,EAAE;AACnB,EAAE,IAAI,SAAS,IAAI,cAAc,CAAC,QAAQ,EAAE;AAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,GAAG;AACH,CAAC;AACD,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AACD,SAAS,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;AAC3B,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;AACrB,GAAG;AACH,CAAC;AACD,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,EAAE,QAAQ,GAAG,EAAE,QAAQ;AACvB,IAAI,KAAK,OAAO,CAAC;AACjB,IAAI,KAAK,QAAQ,CAAC;AAClB,IAAI,KAAK,MAAM,CAAC;AAChB,IAAI,KAAK,SAAS,CAAC;AACnB,IAAI,KAAK,MAAM;AACf,MAAM,OAAO,IAAI,CAAC;AAClB,IAAI;AACJ,MAAM,OAAO,KAAK,CAAC;AACnB,GAAG;AACH,CAAC;AACD,SAAS,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE;AACrE,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,IAAI;AACN,IAAI,IAAI,OAAO,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC5C,MAAM,IAAI,OAAO,CAAC,kBAAkB,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAChE,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtC,QAAQ,IAAI,IAAI,EAAE,MAAM,IAAI,CAAC,EAAE;AAC/B,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAChC,SAAS;AACT,OAAO;AACP,MAAM,IAAI,OAAO,CAAC,kBAAkB,EAAE;AACtC,QAAQ,IAAI;AACZ,UAAU,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACxC,SAAS,CAAC,MAAM,EAAE;AAClB,OAAO;AACP,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,IAAI,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE;AACvC,MAAM,OAAO,WAAW,CAAC;AACzB,KAAK;AACL,GAAG,CAAC,MAAM,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,GAAG,KAAK,EAAE;AAC3D,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE;AACnC,IAAI,KAAK;AACT,IAAI,UAAU,EAAE,CAAC,eAAe;AAChC,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,QAAQ,EAAE,KAAK;AACnB,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,KAAK,CAAC;AACf,CAAC;AACD,MAAM,aAAa,GAAG,SAAS,oBAAoB,GAAG;AACtD,EAAE,SAAS,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE;AACxC,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,GAAG;AACH,EAAE,aAAa,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;AACxC,EAAE,aAAa,CAAC,WAAW,GAAG,aAAa,CAAC;AAC5C,EAAE,OAAO,aAAa,CAAC;AACvB,CAAC,EAAE,CAAC;AACJ,MAAM,iBAAiB,SAAS,aAAa,CAAC;AAC9C,EAAE,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;AACzB,IAAI,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,GAAG;AACH,CAAC;AACD,MAAM,qBAAqB,SAAS,aAAa,CAAC;AAClD,EAAE,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE;AAC5B,IAAI,KAAK,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,GAAG;AACH,CAAC;AACD,MAAM,mBAAmB,SAAS,aAAa,CAAC;AAChD,EAAE,WAAW,CAAC,GAAG,EAAE;AACnB,IAAI,KAAK,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;AACtC,GAAG;AACH,CAAC;AACD,MAAM,mBAAmB,SAAS,aAAa,CAAC;AAChD,EAAE,WAAW,CAAC,GAAG,EAAE;AACnB,IAAI,KAAK,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;AACtC,GAAG;AACH,CAAC;AACD,MAAM,2BAA2B,SAAS,aAAa,CAAC;AACxD,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE;AAC3B,IAAI,KAAK,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,GAAG;AACH,CAAC;AACD,MAAM,WAAW,SAAS,aAAa,CAAC;AACxC,EAAE,WAAW,CAAC,GAAG,EAAE;AACnB,IAAI,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAC9B,GAAG;AACH,CAAC;AACD,MAAM,cAAc,SAAS,aAAa,CAAC;AAC3C,EAAE,WAAW,CAAC,GAAG,EAAE;AACnB,IAAI,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;AACjC,GAAG;AACH,CAAC;AACD,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE;AAChE,IAAI,WAAW,CAAC,oCAAoC,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC9B,EAAE,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAClC,EAAE,IAAI,MAAM,GAAG,kBAAkB,EAAE;AACnC,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClD,GAAG;AACH,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,kBAAkB,EAAE;AACvD,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAC9D,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACxD,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,WAAW,CAAC,oCAAoC,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC5B,EAAE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AACvC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;AACnC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACxC,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;AACtG,CAAC;AAID,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,EAAE;AAClC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACrB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD,SAAS,cAAc,GAAG;AAC1B,EAAE,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB,EAAE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,eAAe,GAAG;AAC3B,EAAE,IAAI;AACN,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC;AACD,MAAM,gBAAgB,CAAC;AACvB,EAAE,WAAW,cAAc,GAAG;AAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE,WAAW,eAAe,GAAG;AAC/B,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC,CAAC;AAC9D,GAAG;AACH,EAAE,WAAW,0BAA0B,GAAG;AAC1C,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,4BAA4B,EAAE,OAAO,eAAe,KAAK,WAAW,CAAC,CAAC;AAC9F,GAAG;AACH,EAAE,WAAW,QAAQ,GAAG;AACxB,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,OAAO,SAAS,EAAE,QAAQ,KAAK,QAAQ,EAAE;AACrF,MAAM,OAAO,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE;AACtC,QAAQ,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;AACjD,QAAQ,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;AACrD,QAAQ,SAAS,EAAE,OAAO,SAAS,EAAE,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtG,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE;AACpC,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,SAAS,EAAE,KAAK;AACtB,MAAM,SAAS,EAAE,KAAK;AACtB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,WAAW,mBAAmB,GAAG;AACnC,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,qBAAqB,EAAE,UAAU,CAAC,GAAG,EAAE,QAAQ,GAAG,0BAA0B,CAAC,CAAC,CAAC;AACvG,GAAG;AACH,CAAC;AACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvF,MAAM,IAAI,CAAC;AACX,EAAE,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC/B,IAAI,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,OAAO,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE;AACxC,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;AACtB,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAQ,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACzB,OAAO;AACP,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAQ,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACzB,OAAO;AACP,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK,MAAM;AACX,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACvB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACvB,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAQ,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACzB,OAAO;AACP,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAQ,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACzB,OAAO;AACP,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,OAAO,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtN,GAAG;AACH,EAAE,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACpB,GAAG;AACH,EAAE,OAAO,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE;AACrC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3E,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5E,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACpB,GAAG;AACH,EAAE,OAAO,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE;AAC1C,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpK,GAAG;AACH,EAAE,OAAO,gBAAgB,CAAC,CAAC,EAAE;AAC7B,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxH,GAAG;AACH,EAAE,OAAO,6BAA6B,CAAC,CAAC,EAAE;AAC1C,IAAI,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACxD,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACxD,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACxD,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACxD,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrE,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC;AACnC,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC;AACnC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,GAAG;AACH,EAAE,OAAO,aAAa,CAAC,IAAI,EAAE;AAC7B,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE;AAC3B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE;AAC3B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE;AACjC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE;AACtB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE;AACtB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACtC,GAAG;AACH,EAAE,OAAO,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE;AACxE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AACvB,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1E,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1E,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,GAAG;AACH,EAAE,OAAO,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE;AACvE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE;AAC7B,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE;AAChC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AACjF,OAAO;AACP,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrC,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACnB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5F,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5F,GAAG;AACH,EAAE,OAAO,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;AACnE,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9C,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9C,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9C,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9C,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxF,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACrI,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACrI,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,CAAC;AA8CD,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACjC,EAAE,OAAO,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAmBD,IAAI,cAAc,GAAG,IAAI,CAAC;AAC1B,IAAI,gBAAgB,GAAG,IAAI,CAAC;AAC5B,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,EAAE,IAAI,CAAC,cAAc,EAAE;AACvB,IAAI,cAAc,GAAG,0UAA0U,CAAC;AAChW,IAAI,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7G,CAAC;AACD,SAAS,OAAO,GAAG;AACnB,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,EAAE,UAAU,KAAK,UAAU,EAAE;AACjF,IAAI,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC/B,GAAG;AACH,EAAE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACjC,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,EAAE,eAAe,KAAK,UAAU,EAAE;AACtF,IAAI,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAChC,GAAG,MAAM;AACT,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;AAC/C,KAAK;AACL,GAAG;AACH,EAAE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AACD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAC9C,MAAM,aAAa,GAAG;AACtB,EAAE,eAAe,EAAE,CAAC;AACpB,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,kBAAkB,EAAE,CAAC;AACvB,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,SAAS,EAAE,CAAC;AACd,EAAE,SAAS,EAAE,CAAC;AACd,CAAC,CAAC;AAGF;AACA,MAAM,iBAAiB,CAAC;AACxB,EAAE,SAAS,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE;AACjC,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,cAAc,CAAC,GAAG,EAAE;AACtB,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,mBAAmB,CAAC,GAAG,EAAE;AAC3B,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,qBAAqB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE;AAC9E,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,OAAO,CAAC,OAAO,GAAG,KAAK,EAAE,EAAE;AAC7B,CAAC;AACD,MAAM,iBAAiB,CAAC;AACxB,EAAE,UAAU,GAAG,KAAK,CAAC;AACrB,EAAE,WAAW,CAAC;AACd,IAAI,SAAS,GAAG,KAAK;AACrB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,GAAG;AACH,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;AACxB,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;AACnC,MAAM,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,IAAI,OAAO;AACX,MAAM,MAAM;AACZ,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;AACvC,QAAQ,kBAAkB,EAAE,CAAC,IAAI,CAAC,UAAU;AAC5C,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG;AACH,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE;AACzC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAClC,MAAM,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;AACnC,MAAM,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC1C,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5C,GAAG;AACH,EAAE,OAAO,CAAC,gBAAgB,EAAE;AAC5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAClC,MAAM,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AACtC,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,IAAI,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC;AACnC,IAAI,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;AACpC,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,IAAI,WAAW,CAAC,yCAAyC,CAAC,CAAC;AAC3D,GAAG;AACH,CAAC;AACD,MAAM,qBAAqB,CAAC;AAC5B,EAAE,WAAW,CAAC;AACd,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,YAAY,GAAG,IAAI;AACvB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACrC,GAAG;AACH,EAAE,MAAM,KAAK,CAAC;AACd,IAAI,IAAI;AACR,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,MAAM,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AACjG,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC;AAC1E,IAAI,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACtG,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI;AACjE,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,GAAG,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7F,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE;AACnC,IAAI,WAAW,CAAC,sCAAsC,CAAC,CAAC;AACxD,GAAG;AACH,CAAC;AACD,MAAM,2BAA2B,CAAC;AAClC,EAAE,WAAW,CAAC;AACd,IAAI,OAAO,GAAG,IAAI;AAClB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,GAAG;AACH,EAAE,MAAM,KAAK,CAAC;AACd,IAAI,QAAQ;AACZ,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,MAAM,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;AAC1F,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7C,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI;AAChD,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7D,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE;AAClB,IAAI,WAAW,CAAC,sCAAsC,CAAC,CAAC;AACxD,GAAG;AACH,CAAC;AACD,MAAM,cAAc,CAAC;AACrB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,GAAG,KAAK,EAAE;AAChD,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;AACnC,MAAM,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC3C,IAAI,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,cAAc,EAAE;AACzB,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,GAAG,CAAC,YAAY,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,IAAI,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,aAAa,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,MAAM,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,UAAU,CAAC,IAAI,EAAE;AACnB,IAAI,WAAW,CAAC,sCAAsC,CAAC,CAAC;AACxD,GAAG;AACH,CAAC;AAGD;AACA;AACA,MAAM,MAAM,GAAG,4BAA4B,CAAC;AAC5C,MAAM,aAAa,CAAC;AACpB,EAAE,OAAO,GAAG,GAAG,IAAI,CAAC;AACpB,EAAE,OAAO,GAAG,GAAG,IAAI,CAAC;AACpB,EAAE,OAAO,gBAAgB,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAChD,CAAC;AACD,MAAM,gBAAgB,SAAS,iBAAiB,CAAC;AACjD,EAAE,QAAQ,CAAC;AACX,EAAE,OAAO,CAAC;AACV,EAAE,MAAM,CAAC;AACT,EAAE,MAAM,CAAC;AACT,EAAE,SAAS,CAAC;AACZ,EAAE,UAAU,CAAC;AACb,EAAE,GAAG,GAAG,CAAC,CAAC;AACV,EAAE,WAAW,CAAC;AACd,IAAI,KAAK;AACT,IAAI,aAAa,GAAG,UAAU,CAAC,QAAQ;AACvC,GAAG,EAAE;AACL,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,IAAI,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,EAAE,CAAC;AACtC,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,GAAG,EAAE,CAAC;AACzC,GAAG;AACH,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,MAAM,MAAM;AACZ,QAAQ,KAAK;AACb,OAAO,GAAG,GAAG,CAAC;AACd,MAAM,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AAClC,MAAM,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;AAC/B,MAAM,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACrC,MAAM,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AAClC,MAAM,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AACjC,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAChE,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACnC,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACpC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnE,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtB,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,GAAG;AACH,EAAE,aAAa,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACpC,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAClC,OAAO;AACP,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,MAAM,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AACpC,IAAI,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClC,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACjC,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACjC,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,GAAG;AACH,EAAE,UAAU,CAAC,EAAE,EAAE;AACjB,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;AACrC,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACrC,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC1C,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;AAC/B,UAAU,IAAI,CAAC,yDAAyD,CAAC,CAAC;AAC1E,SAAS,MAAM;AACf,UAAU,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,GAAG;AACH,EAAE,SAAS,CAAC,IAAI,EAAE;AAClB,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,OAAO,MAAM,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9D,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3E,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnC,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7D,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACnE,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE;AACjC,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACxC,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC;AAC9B,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC9C,IAAI,IAAI,IAAI,EAAE,GAAG,KAAK,GAAG,EAAE;AAC3B,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,MAAM,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB,MAAM,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;AACxB,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACzB,KAAK,MAAM;AACX,MAAM,IAAI,GAAG;AACb,QAAQ,GAAG;AACX,QAAQ,GAAG,EAAE,MAAM;AACnB,QAAQ,MAAM,EAAE,IAAI;AACpB,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;AAC9B,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxC,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC;AAC1C,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxC,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,OAAO,EAAE;AAC/E,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACnC,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACxB,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;AACvE,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAChE,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,IAAI,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACnC,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACjC,MAAM,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACnC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;AAC/C,OAAO;AACP,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3F,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC;AACpB,GAAG;AACH,EAAE,cAAc,CAAC,GAAG,EAAE;AACtB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAClC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClC,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1D,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACxD,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,mBAAmB,CAAC,GAAG,EAAE;AAC3B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC;AACrD,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,IAAI,MAAM,EAAE,GAAG,CAAC;AACpB,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;AACnC,KAAK,MAAM;AACX,MAAM,GAAG,GAAG,YAAY,CAAC;AACzB,KAAK;AACL,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClC,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC1C,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,qBAAqB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE;AAC9E,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC9C,IAAI,IAAI,IAAI,EAAE,GAAG,KAAK,GAAG,EAAE;AAC3B,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,MAAM,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB,MAAM,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;AACxB,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACzB,KAAK,MAAM;AACX,MAAM,IAAI,GAAG;AACb,QAAQ,GAAG;AACX,QAAQ,GAAG,EAAE,MAAM;AACnB,QAAQ,MAAM,EAAE,IAAI;AACpB,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;AAC9B,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,IAAI,IAAI,MAAM,GAAG,MAAM,EAAE;AACzB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAChC,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK;AACpC,MAAM,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;AACzC,MAAM,MAAM,QAAQ,GAAG,EAAE,GAAG,GAAG,CAAC;AAChC,MAAM,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;AAC5C,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC;AACnB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACnC,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAChD,QAAQ,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC;AAC7C,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACxC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,OAAO;AACP,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACvC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAC/B,OAAO;AACP,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK,CAAC;AACN,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAC3D,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChK,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC;AACpB,GAAG;AACH,EAAE,OAAO,CAAC,OAAO,GAAG,KAAK,EAAE;AAC3B,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;AAC9C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACjD,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAC3B,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACjB,GAAG;AACH,EAAE,wBAAwB,CAAC,MAAM,EAAE;AACnC,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAClF,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACjD,IAAI,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,iDAAiD,CAAC,CAAC;AAC5F,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,kBAAkB,CAAC,MAAM,EAAE;AAC7B,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAClF,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACjD,IAAI,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,sFAAsF,CAAC,CAAC;AACjI,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,aAAa,CAAC,EAAE,EAAE;AACpB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpE,IAAI,MAAM,CAAC,YAAY,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;AAC/D,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,aAAa,CAAC,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE;AAClD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChE,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC5C,IAAI,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvC,GAAG;AACH,EAAE,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AAC5D,IAAI,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAC9F,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE;AACjD,IAAI,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAC9F,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,EAAE;AACjB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,GAAG;AACH,CAAC;AACD,MAAM,gBAAgB,SAAS,iBAAiB,CAAC;AACjD,EAAE,WAAW,CAAC;AACd,IAAI,aAAa,GAAG,UAAU,CAAC,QAAQ;AACvC,IAAI,SAAS,GAAG,KAAK;AACrB,GAAG,EAAE;AACL,IAAI,KAAK,CAAC;AACV,MAAM,SAAS;AACf,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;AACnC,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1D,IAAI,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,CAAC;AACD,eAAe,SAAS,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,EAAE;AAC7C,EAAE,IAAI,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC9C,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtB,MAAM,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,aAAa;AACxB,QAAQ,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;AACtC,MAAM,KAAK,MAAM;AACjB,QAAQ,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,MAAM,KAAK,MAAM;AACjB,QAAQ,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,IAAI,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AACzC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACnC,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;AAChC,IAAI,OAAO,CAAC,kBAAkB,GAAG,MAAM;AACvC,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,cAAc,CAAC,IAAI,EAAE;AACtD,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1D,QAAQ,QAAQ,IAAI;AACpB,UAAU,KAAK,aAAa,CAAC;AAC7B,UAAU,KAAK,MAAM,CAAC;AACtB,UAAU,KAAK,MAAM;AACrB,YAAY,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5C,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,GAAG,CAAC,CAAC;AACL,CAAC;AACD,MAAM,oBAAoB,SAAS,qBAAqB,CAAC;AACzD,EAAE,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE;AACnC,IAAI,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,GAAG,aAAa,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK;AACpF,MAAM,QAAQ,EAAE,IAAI,YAAY,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC;AACxF,MAAM,eAAe;AACrB,KAAK,CAAC,CAAC,CAAC;AACR,GAAG;AACH,CAAC;AACD,MAAM,0BAA0B,SAAS,2BAA2B,CAAC;AACrE,EAAE,UAAU,CAAC,GAAG,EAAE;AAClB,IAAI,OAAO,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,GAAG;AACH,CAAC;AACD,MAAM,aAAa,SAAS,cAAc,CAAC;AAC3C,EAAE,UAAU,CAAC,IAAI,EAAE;AACnB,IAAI,OAAO,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAClD,GAAG;AACH,CAAC;AACD,MAAM,YAAY,CAAC;AACnB,EAAE,WAAW,CAAC;AACd,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,OAAO,GAAG,CAAC;AACf,IAAI,OAAO,GAAG,CAAC;AACf,IAAI,QAAQ,GAAG,KAAK;AACpB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,IAAI,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAClD,IAAI,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAClD,IAAI,IAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAC3C,IAAI,QAAQ,IAAI,GAAG,CAAC;AACpB,IAAI,IAAI,QAAQ,GAAG,CAAC,EAAE;AACtB,MAAM,QAAQ,IAAI,GAAG,CAAC;AACtB,KAAK;AACL,IAAI,QAAQ,QAAQ;AACpB,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,MAAM;AACd,MAAM,KAAK,EAAE;AACb,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,MAAM;AACd,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,MAAM;AACd,MAAM,KAAK,CAAC;AACZ,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,QAAQ,OAAO,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;AAC7F,KAAK;AACL,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC;AACzB,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,aAAa,EAAE,aAAa,CAAC;AACrC,IAAI,IAAI,KAAK,EAAE,MAAM,CAAC;AACtB,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;AACvB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC;AACvE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC;AACvE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAChD,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AACjD,KAAK,MAAM;AACX,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC;AACvE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC;AACvE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAChD,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AACjD,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,aAAa,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,EAAE,aAAa,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC;AACxO,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,MAAM;AACV,MAAM,OAAO;AACb,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE;AACnC,MAAM,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACxC,MAAM,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACzC,MAAM,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACvB,MAAM,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACvB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,KAAK,CAAC;AACR,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK;AACtB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO;AAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO;AAC1B,IAAI,QAAQ,GAAG,KAAK;AACpB,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,OAAO,IAAI,YAAY,CAAC;AAC5B,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,MAAM,KAAK;AACX,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,OAAO;AACb,MAAM,QAAQ;AACd,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE;AAC/B,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,0BAA0B,CAAC,IAAI,EAAE;AACnC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5E,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAChF,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,GAAG;AACH,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;AAC1B,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9D,GAAG;AACH,CAAC;AACD,MAAM,2BAA2B,SAAS,aAAa,CAAC;AACxD,EAAE,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,EAAE;AACnC,IAAI,KAAK,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,GAAG;AACH,CAAC;AACD,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;AACxB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACzC,IAAI,CAAC,EAAE,CAAC;AACR,GAAG;AACH,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;AAC3D,CAAC;AACD,SAAS,SAAS,CAAC,QAAQ,EAAE;AAC7B,EAAE,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC;AACD,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACjC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC/B,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AACD,SAAS,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,cAAc,EAAE;AACtE,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,OAAO,eAAe,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;AACzB,IAAI,IAAI,CAAC,oEAAoE,CAAC,CAAC;AAC/E,IAAI,OAAO,eAAe,CAAC;AAC3B,GAAG;AACH,EAAE,MAAM,KAAK,GAAG,qDAAqD,CAAC;AACtE,EAAE,MAAM,UAAU,GAAG,+BAA+B,CAAC;AACrD,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,EAAE,IAAI,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvH,EAAE,IAAI,iBAAiB,EAAE;AACzB,IAAI,iBAAiB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAI,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACzC,MAAM,IAAI;AACV,QAAQ,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,OAAO,CAAC,MAAM,EAAE;AAChB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,iBAAiB,IAAI,eAAe,CAAC;AAC9C,CAAC;AACD,MAAM,SAAS,CAAC;AAChB,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,EAAE,KAAK,GAAG,EAAE,CAAC;AACb,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,MAAM,IAAI,CAAC,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACpC,GAAG;AACH,EAAE,OAAO,CAAC,IAAI,EAAE;AAChB,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;AACjC,MAAM,IAAI,CAAC,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,MAAM,IAAI;AACV,MAAM,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/B,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACrB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC;AACpB,IAAI,KAAK,MAAM;AACf,MAAM,IAAI;AACV,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;AACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,KAAK,MAAM;AACf,MAAM,IAAI;AACV,MAAM,KAAK;AACX,MAAM,GAAG;AACT,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;AACrB,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,GAAG;AACH,CAAC;AACD,SAAS,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE;AACvC,EAAE,IAAI;AACN,IAAI,MAAM;AACV,MAAM,QAAQ;AACd,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACvD,IAAI,OAAO,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,QAAQ,CAAC;AACzD,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC;AACD,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;AACrB,CAAC;AACD,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,OAAO,CAAC,CAAC;AAClD,CAAC;AACD,IAAI,kBAAkB,CAAC;AACvB,MAAM,aAAa,CAAC;AACpB,EAAE,OAAO,YAAY,CAAC,KAAK,EAAE;AAC7B,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7C,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,kBAAkB,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC;AACzL,IAAI,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1C,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzC,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AACtD,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;AAC1C,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;AAC9C,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1C,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;AACtD,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1C,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;AACtD,IAAI,MAAM,qBAAqB,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACpD,IAAI,IAAI,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9C,IAAI,UAAU,GAAG,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,EAAE,GAAG,UAAU,GAAG,CAAC,CAAC;AACtE,IAAI,IAAI,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AACrD,IAAI,YAAY,GAAG,YAAY,IAAI,CAAC,IAAI,YAAY,IAAI,EAAE,GAAG,YAAY,GAAG,CAAC,CAAC;AAC9E,IAAI,IAAI,qBAAqB,KAAK,GAAG,EAAE;AACvC,MAAM,IAAI,IAAI,UAAU,CAAC;AACzB,MAAM,MAAM,IAAI,YAAY,CAAC;AAC7B,KAAK,MAAM,IAAI,qBAAqB,KAAK,GAAG,EAAE;AAC9C,MAAM,IAAI,IAAI,UAAU,CAAC;AACzB,MAAM,MAAM,IAAI,YAAY,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACtE,GAAG;AACH,CAAC;AACD,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,EAAE,KAAK,GAAG,CAAC;AACX,EAAE,QAAQ,GAAG,CAAC;AACd,CAAC,EAAE;AACH,EAAE,MAAM;AACR,IAAI,KAAK;AACT,IAAI,MAAM;AACV,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/B,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5D,EAAE,OAAO,IAAI,YAAY,CAAC;AAC1B,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,GAAG,CAAC,CAAC;AACL,CAAC;AACD,SAAS,MAAM,CAAC,KAAK,EAAE;AACvB,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC7B,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClD,IAAI,OAAO,CAAC,CAAC,QAAQ,GAAG,QAAQ,KAAK,EAAE,EAAE,CAAC,QAAQ,GAAG,QAAQ,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAC1F,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAChC,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACjC,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,GAAG;AACH,EAAE,IAAI,CAAC,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,CAAC;AACD,SAAS,cAAc,CAAC,MAAM,EAAE;AAChC,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AACnC,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,EAAE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE;AACpC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AAC5B,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AAC9D,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAChB,CAAC;AACD,SAAS,mBAAmB,CAAC,GAAG,EAAE;AAClC,EAAE,MAAM;AACR,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,CAAC;AACL,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;AACzB,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC;AACD,SAAS,0BAA0B,CAAC,GAAG,EAAE;AACzC,EAAE,MAAM;AACR,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,CAAC;AACL,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;AACtC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC;AACD,SAAS,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAE,UAAU,GAAG,IAAI,EAAE;AAChF,EAAE,IAAI,QAAQ,YAAY,YAAY,EAAE;AACxC,IAAI,MAAM;AACV,MAAM,SAAS;AACf,MAAM,UAAU;AAChB,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;AACzB,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,GAAG,CAAC;AACZ,IAAI,MAAM,QAAQ,GAAG,gBAAgB,CAAC,mBAAmB,CAAC;AAC1D,IAAI,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,SAAS,CAAC,EAAE,CAAC;AACpD,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;AAClD,IAAI,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,4BAA4B,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7F,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,4BAA4B,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,GAAG,GAAG,KAAK,CAAC,EAAE;AACpD,MAAM,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC7B,MAAM,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;AAC9B,MAAM,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC9B,KAAK;AACL,GAAG;AACH,EAAE,IAAI,UAAU,EAAE;AAClB,IAAI,GAAG,CAAC,YAAY,CAAC,oBAAoB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC9D,GAAG;AACH,CAAC;AACD,MAAM,WAAW,CAAC;AAClB,EAAE,WAAW,GAAG;AAChB,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;AACzB,IAAI,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1C,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AAC/B,GAAG;AACH,CAAC;AAGD;AACA,MAAM,aAAa,CAAC;AACpB,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,YAAY,GAAG,IAAI,CAAC;AACtB,EAAE,OAAO,CAAC;AACV,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,OAAO,WAAW,GAAG,IAAI,CAAC;AAC5B,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,aAAa,CAAC,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC;AAChD,MAAM,QAAQ,EAAE,qCAAqC;AACrD,MAAM,SAAS,EAAE,sCAAsC;AACvD,MAAM,GAAG,EAAE,gCAAgC;AAC3C,MAAM,KAAK,EAAE,kCAAkC;AAC/C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtE,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACvD,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAChD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;AACnD,IAAI,WAAW,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE;AAC/D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,WAAW,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,YAAY,EAAE;AAC5E,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClE,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAClC,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AAClD,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM;AACZ,QAAQ,KAAK;AACb,OAAO,GAAG,WAAW,CAAC;AACtB,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,KAAK,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5F,MAAM,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC;AACpF,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,IAAI,OAAO,WAAW,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;AACzB,GAAG;AACH,EAAE,OAAO,YAAY,CAAC,CAAC,EAAE;AACzB,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,GAAG;AACH,EAAE,QAAQ,CAAC,CAAC,EAAE;AACd,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC;AAC7C,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,GAAG;AACH,EAAE,SAAS,CAAC,CAAC,EAAE;AACf,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC5C,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACvB,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACxB,GAAG;AACH,EAAE,sBAAsB,CAAC,OAAO,EAAE;AAClC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;AACnD,IAAI,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAClE,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpE,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE;AAC3D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC;AACtC,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,MAAM;AACV,MAAM,UAAU;AAChB,MAAM,UAAU;AAChB,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AACrB,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;AAChC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/E,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,IAAI;AAC1C,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;AAC1B,KAAK,EAAE;AACP,MAAM,MAAM,EAAE,UAAU,CAAC,OAAO;AAChC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAClC,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,MAAM,UAAU,CAAC,OAAO,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;AAC1C,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC5B,GAAG;AACH,EAAE,cAAc,CAAC,WAAW,EAAE;AAC9B,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACpC,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC;AAC9C,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;AACjC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,GAAG;AACH,CAAC;AACD,MAAM,gBAAgB,CAAC;AACvB,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,UAAU,CAAC;AACb,EAAE,WAAW,CAAC,SAAS,EAAE;AACzB,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtE,IAAI,WAAW,CAAC,SAAS,GAAG,aAAa,CAAC;AAC1C,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAChD,IAAI,WAAW,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE;AAC/D,MAAM,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;AACrC,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClE,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAClC,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/B,IAAI,OAAO,WAAW,CAAC;AACvB,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE;AAC9B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AAC7B,MAAM,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;AACnC,MAAM,IAAI,CAAC,GAAG,KAAK,EAAE;AACrB,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAChD,MAAM,IAAI,CAAC,GAAG,KAAK,EAAE;AACrB,QAAQ,KAAK,GAAG,CAAC,CAAC;AAClB,QAAQ,KAAK,GAAG,CAAC,CAAC;AAClB,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,IAAI,KAAK,EAAE;AACjB,QAAQ,IAAI,CAAC,GAAG,KAAK,EAAE;AACvB,UAAU,KAAK,GAAG,CAAC,CAAC;AACpB,SAAS;AACT,OAAO,MAAM,IAAI,CAAC,GAAG,KAAK,EAAE;AAC5B,QAAQ,KAAK,GAAG,CAAC,CAAC;AAClB,OAAO;AACP,KAAK;AACL,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AAC7B,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACpD,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;AACzC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,sCAAsC,CAAC,CAAC;AACxE,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE,mBAAmB,GAAG;AACxB,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC;AACzC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,gCAAgC,CAAC,CAAC,CAAC;AAC5E,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC;AACtC,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,uCAAuC,CAAC,CAAC;AAC/E,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAC3C,IAAI,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE;AAC1D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AAC3C,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AAC5D,KAAK,EAAE;AACP,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA,SAAS,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;AACzC,EAAE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC5B,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,GAAG;AACH,CAAC;AACD,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7F,CAAC;AACD,MAAM,SAAS,CAAC;AAChB,EAAE,GAAG,GAAG,CAAC,CAAC;AACV,EAAE,IAAI,EAAE,GAAG;AACX,IAAI,OAAO,CAAC,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD,GAAG;AACH,CAAC;AACD,MAAM,YAAY,CAAC;AACnB,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;AACtB,EAAE,GAAG,GAAG,CAAC,CAAC;AACV,EAAE,MAAM,GAAG,IAAI,CAAC;AAChB,EAAE,WAAW,mBAAmB,GAAG;AACnC,IAAI,MAAM,GAAG,GAAG,CAAC,oKAAoK,CAAC,CAAC;AACvL,IAAI,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;AACxC,MAAM,kBAAkB,EAAE,IAAI;AAC9B,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAC9B,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AACpB,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM;AAC9C,MAAM,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,MAAM,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChF,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC;AACxD,GAAG;AACH,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;AAC9B,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACvB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE;AACtB,MAAM,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AAC3B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI;AACR,MAAM,IAAI,KAAK;AACf,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACjD,QAAQ,UAAU,EAAE,CAAC;AACrB,QAAQ,KAAK,EAAE,KAAK;AACpB,OAAO,CAAC;AACR,MAAM,IAAI,KAAK,CAAC;AAChB,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACvC,QAAQ,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;AAC3B,QAAQ,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjD,OAAO,MAAM,IAAI,OAAO,YAAY,IAAI,EAAE;AAC1C,QAAQ,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACpC,OAAO,MAAM,IAAI,OAAO,YAAY,IAAI,EAAE;AAC1C,QAAQ,KAAK,GAAG,OAAO,CAAC;AACxB,OAAO;AACP,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE;AAC1C,QAAQ,MAAM,4BAA4B,GAAG,YAAY,CAAC,mBAAmB,CAAC;AAC9E,QAAQ,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;AAC5C,QAAQ,MAAM,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;AACzC,QAAQ,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC9D,UAAU,YAAY,CAAC,MAAM,GAAG,MAAM;AACtC,YAAY,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;AACvC,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC9B,YAAY,OAAO,EAAE,CAAC;AACtB,WAAW,CAAC;AACZ,UAAU,UAAU,CAAC,MAAM,GAAG,YAAY;AAC1C,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AACxD,YAAY,YAAY,CAAC,GAAG,GAAG,CAAC,MAAM,4BAA4B,IAAI,CAAC,EAAE,GAAG,CAAC,mCAAmC,CAAC,GAAG,GAAG,CAAC;AACxH,WAAW,CAAC;AACZ,UAAU,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC;AAC7D,SAAS,CAAC,CAAC;AACX,QAAQ,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACxC,QAAQ,MAAM,YAAY,CAAC;AAC3B,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACrD,OAAO;AACP,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAC1B,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,MAAM,WAAW,CAAC,IAAI,EAAE;AAC1B,IAAI,MAAM;AACV,MAAM,YAAY;AAClB,MAAM,IAAI;AACV,MAAM,IAAI;AACV,MAAM,IAAI;AACV,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACtE,GAAG;AACH,EAAE,MAAM,UAAU,CAAC,GAAG,EAAE;AACxB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,MAAM,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE;AACrC,IAAI,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;AACnC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,MAAM,SAAS,CAAC,EAAE,EAAE;AACtB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;AAC9B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AAC3B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,MAAM,MAAM;AACZ,QAAQ,WAAW;AACnB,OAAO,GAAG,IAAI,CAAC;AACf,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC;AAC9B,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE;AAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;AAC9B,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE;AACtB,MAAM,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AAC3B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACvE,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,IAAI,IAAI,GAAG;AACX,MAAM,MAAM,EAAE,SAAS,CAAC,qBAAqB,EAAE;AAC/C,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/C,MAAM,UAAU,EAAE,CAAC;AACnB,MAAM,KAAK,EAAE,KAAK;AAClB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACnC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,SAAS,CAAC,EAAE,EAAE;AAChB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AACtB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,GAAG;AACH,EAAE,QAAQ,CAAC,EAAE,EAAE;AACf,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;AAC9B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AACzB,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;AAC/B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,MAAM;AACZ,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACjC,MAAM,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACtE,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACtD,MAAM,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAC1C,MAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;AAChD,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,GAAG;AACH,EAAE,SAAS,CAAC,EAAE,EAAE;AAChB,IAAI,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,GAAG;AACH,CAAC;AACD,MAAM,cAAc,CAAC;AACrB,EAAE,SAAS,GAAG,EAAE,CAAC;AACjB,EAAE,OAAO,GAAG,KAAK,CAAC;AAClB,EAAE,QAAQ,CAAC;AACX,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;AACjB,EAAE,WAAW,CAAC,OAAO,GAAG,GAAG,EAAE;AAC7B,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC5B,GAAG;AACH,EAAE,GAAG,CAAC;AACN,IAAI,GAAG;AACP,IAAI,IAAI;AACR,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,IAAI,IAAI,GAAG,GAAG;AACd,IAAI,mBAAmB,GAAG,KAAK;AAC/B,IAAI,QAAQ,GAAG,KAAK;AACpB,GAAG,EAAE;AACL,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,GAAG,EAAE,CAAC;AACZ,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,GAAG;AACT,MAAM,IAAI;AACV,MAAM,IAAI;AACV,MAAM,IAAI;AACV,KAAK,CAAC;AACN,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE;AAC/B,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,OAAO;AACP,MAAM,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACzB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,mBAAmB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE;AAC7E,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;AACxD,OAAO;AACP,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AAC5C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACpC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;AAChC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACxC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM,IAAI;AACV,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvC,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACzB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;AACxB,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;AAC1B,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM;AACZ,QAAQ,GAAG;AACX,QAAQ,IAAI;AACZ,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzC,MAAM,GAAG,EAAE,CAAC;AACZ,MAAM,IAAI,IAAI,CAAC;AACf,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,eAAe,CAAC;AACtB,EAAE,WAAW,CAAC,SAAS,EAAE;AACzB,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC/B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAClC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,CAAC,IAAI,SAAS,EAAE;AAC5D,MAAM,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC9B,QAAQ,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAChD,QAAQ,IAAI,KAAK,IAAI,QAAQ,EAAE;AAC/B,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC3C,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,WAAW,CAAC,CAAC;AACb,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,SAAS,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;AACxC,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE;AAClC,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,WAAW,CAAC,CAAC;AACb,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,UAAU,CAAC,KAAK,EAAE;AACpB,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE;AACtB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;AACvB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;AACvB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;AACxB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3B,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AACpB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACtC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,QAAQ;AACd,MAAM,OAAO,EAAE;AACf,QAAQ,OAAO,GAAG,KAAK;AACvB,QAAQ,IAAI,GAAG,EAAE;AACjB,QAAQ,OAAO,GAAG,IAAI;AACtB,OAAO;AACP,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAC1C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AAC1C,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC;AAC9B,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;AAC7B,KAAK;AACL,GAAG;AACH,CAAC;AACD,MAAM,YAAY,CAAC;AACnB,EAAE,OAAO,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrE,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AAC3B,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,EAAE;AACjB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE;AAC/D,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK;AACL,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;AAC5C,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C,QAAQ,OAAO,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrD,OAAO;AACP,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,UAAU,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;AACrC,GAAG;AACH,CAAC;AACD,MAAM,yBAAyB,CAAC;AAChC,EAAE,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;AAC3C,EAAE,aAAa,GAAG,IAAI,CAAC;AACvB,EAAE,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;AAC1B,EAAE,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AACzB,EAAE,eAAe,GAAG,IAAI,CAAC;AACzB,EAAE,kBAAkB,GAAG,IAAI,CAAC;AAC5B,EAAE,2BAA2B,GAAG,IAAI,CAAC;AACrC,EAAE,eAAe,GAAG,IAAI,cAAc,EAAE,CAAC;AACzC,EAAE,YAAY,GAAG,IAAI,CAAC;AACtB,EAAE,iBAAiB,GAAG,CAAC,CAAC;AACxB,EAAE,6BAA6B,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5C,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAC1B,EAAE,YAAY,GAAG,IAAI,CAAC;AACtB,EAAE,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC,EAAE,8BAA8B,GAAG,KAAK,CAAC;AACzC,EAAE,sBAAsB,GAAG,KAAK,CAAC;AACjC,EAAE,gCAAgC,GAAG,KAAK,CAAC;AAC3C,EAAE,cAAc,GAAG,IAAI,CAAC;AACxB,EAAE,4BAA4B,GAAG,IAAI,CAAC;AACtC,EAAE,eAAe,GAAG,IAAI,CAAC;AACzB,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAC1B,EAAE,qBAAqB,GAAG,KAAK,CAAC;AAChC,EAAE,iBAAiB,GAAG,IAAI,CAAC;AAC3B,EAAE,UAAU,GAAG,IAAI,SAAS,EAAE,CAAC;AAC/B,EAAE,UAAU,GAAG,KAAK,CAAC;AACrB,EAAE,UAAU,GAAG,KAAK,CAAC;AACrB,EAAE,kBAAkB,GAAG,IAAI,CAAC;AAC5B,EAAE,kBAAkB,GAAG,IAAI,CAAC;AAC5B,EAAE,yBAAyB,GAAG,IAAI,CAAC;AACnC,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC;AACpC,EAAE,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;AAC/B,EAAE,iBAAiB,GAAG,IAAI,CAAC;AAC3B,EAAE,WAAW,GAAG,IAAI,CAAC;AACrB,EAAE,cAAc,GAAG,IAAI,CAAC;AACxB,EAAE,eAAe,GAAG;AACpB,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,iBAAiB,EAAE,KAAK;AAC5B,IAAI,eAAe,EAAE,KAAK;AAC1B,GAAG,CAAC;AACJ,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,EAAE,qBAAqB,GAAG,IAAI,CAAC;AAC/B,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,qBAAqB,GAAG,IAAI,CAAC;AAC/B,EAAE,OAAO,eAAe,GAAG,CAAC,CAAC;AAC7B,EAAE,OAAO,aAAa,GAAG,EAAE,CAAC;AAC5B,EAAE,WAAW,gBAAgB,GAAG;AAChC,IAAI,MAAM,KAAK,GAAG,yBAAyB,CAAC,SAAS,CAAC;AACtD,IAAI,MAAM,YAAY,GAAG,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACjK,IAAI,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE;AACrC,MAAM,MAAM,EAAE,EAAE;AAChB,KAAK,KAAK;AACV,MAAM,IAAI,EAAE,YAAY,gBAAgB,EAAE;AAC1C,QAAQ,MAAM;AACd,UAAU,IAAI;AACd,SAAS,GAAG,EAAE,CAAC;AACf,QAAQ,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,CAAC;AACpD,OAAO;AACP,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AACvC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE;AAC7G,MAAM,OAAO,EAAE,gBAAgB;AAC/B,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE;AAC/C,MAAM,OAAO,EAAE,gBAAgB;AAC/B,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE;AACzG,MAAM,OAAO,EAAE,gBAAgB;AAC/B,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE;AAC/M,MAAM,OAAO,EAAE,gBAAgB;AAC/B,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,wBAAwB,EAAE;AACjE,MAAM,OAAO,EAAE,CAAC,IAAI,EAAE;AACtB,QAAQ,MAAM,EAAE,EAAE;AAClB,OAAO,KAAK,EAAE,EAAE,YAAY,iBAAiB,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc;AACtG,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,wBAAwB,EAAE;AACzD,MAAM,OAAO,EAAE,CAAC,IAAI,EAAE;AACtB,QAAQ,MAAM,EAAE,EAAE;AAClB,OAAO,KAAK,EAAE,EAAE,YAAY,iBAAiB,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;AAClG,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,wBAAwB,EAAE;AACxH,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACvB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EAAE,KAAK,CAAC,wBAAwB,EAAE;AACpF,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACrB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC,wBAAwB,EAAE;AAC3E,MAAM,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,KAAK,CAAC,wBAAwB,EAAE;AACtF,MAAM,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,wBAAwB,EAAE;AACrE,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACvB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAAE,KAAK,CAAC,wBAAwB,EAAE;AAChF,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;AACrB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,wBAAwB,EAAE;AACzE,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;AACtB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EAAE,KAAK,CAAC,wBAAwB,EAAE;AACpF,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AACpB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACV,GAAG;AACH,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,SAAS,EAAE;AACvM,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC/D,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAC1C,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC9B,IAAI,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnE,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACjE,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnE,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACzE,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnE,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,CAAC,GAAG,CAAC,8BAA8B,EAAE,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE;AAChG,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACjC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACpC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/B,IAAI,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,iBAAiB,CAAC;AAC5D,IAAI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC;AACpD,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAClC,IAAI,IAAI,CAAC,gBAAgB,GAAG,eAAe,IAAI,IAAI,CAAC;AACpD,IAAI,IAAI,CAAC,8BAA8B,GAAG,6BAA6B,CAAC;AACxE,IAAI,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;AACxD,IAAI,IAAI,CAAC,gCAAgC,GAAG,+BAA+B,CAAC;AAC5E,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,IAAI,CAAC;AACxC,IAAI,IAAI,CAAC,cAAc,GAAG;AAC1B,MAAM,SAAS,EAAE,aAAa,CAAC,gBAAgB;AAC/C,MAAM,QAAQ,EAAE,CAAC;AACjB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAChC,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,qBAAqB,EAAE,OAAO,EAAE,CAAC;AAC1C,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACtC,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACjC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;AAClD,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AAC7B,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC;AACpC,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAClC,IAAI,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC3C,MAAM,YAAY,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AACtD,MAAM,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;AAC/C,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACpC,MAAM,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/C,MAAM,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACxC,KAAK;AACL,GAAG;AACH,EAAE,cAAc,CAAC,EAAE,EAAE;AACrB,IAAI,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,iBAAiB,GAAG;AAC1B,IAAI,OAAO,IAAI,CAAC,sBAAsB,CAAC;AACvC,GAAG;AACH,EAAE,IAAI,4BAA4B,GAAG;AACrC,IAAI,OAAO,IAAI,CAAC,gCAAgC,CAAC;AACjD,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,CAAC;AAC7J,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC;AAClF,GAAG;AACH,EAAE,IAAI,eAAe,GAAG;AACxB,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACrK,GAAG;AACH,EAAE,IAAI,mBAAmB,GAAG;AAC5B,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1I,GAAG;AACH,EAAE,2BAA2B,CAAC,WAAW,EAAE;AAC3C,IAAI,IAAI,CAAC,yBAAyB,GAAG,WAAW,CAAC;AACjD,GAAG;AACH,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE;AACzC,IAAI,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,6BAA6B,EAAE,QAAQ,EAAE;AAC/D,MAAM,IAAI,EAAE,IAAI;AAChB,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE;AACtD,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,IAAI;AACV,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE;AAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC7C,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,IAAI;AACV,MAAM,KAAK;AACX,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,eAAe,CAAC;AAClB,IAAI,IAAI;AACR,IAAI,KAAK;AACT,GAAG,EAAE;AACL,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,iCAAiC;AAC5C,QAAQ,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;AACtD,QAAQ,MAAM;AACd,KAAK;AACL,GAAG;AACH,EAAE,cAAc,CAAC;AACjB,IAAI,UAAU;AACd,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,iBAAiB,GAAG,UAAU,GAAG,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;AACnB,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;AAClD,MAAM,MAAM;AACZ,QAAQ,CAAC,EAAE,MAAM;AACjB,QAAQ,CAAC,EAAE,MAAM;AACjB,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;AAC5C,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,MAAM,EAAE;AACrF,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,iBAAiB,CAAC,KAAK,GAAG,KAAK,EAAE;AACnC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACzD,GAAG;AACH,EAAE,gBAAgB,CAAC,MAAM,EAAE;AAC3B,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvC,GAAG;AACH,EAAE,mBAAmB,CAAC,MAAM,EAAE;AAC9B,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1C,GAAG;AACH,EAAE,eAAe,CAAC;AAClB,IAAI,KAAK;AACT,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK,GAAG,aAAa,CAAC,gBAAgB,CAAC;AAC3E,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACjD,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;AAC/B,KAAK;AACL,GAAG;AACH,EAAE,kBAAkB,CAAC;AACrB,IAAI,aAAa;AACjB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,aAAa,CAAC;AACjD,GAAG;AACH,EAAE,6BAA6B,CAAC;AAChC,IAAI,UAAU;AACd,GAAG,EAAE;AACL,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC;AAC1F,GAAG;AACH,EAAE,qBAAqB,CAAC,SAAS,EAAE;AACnC,IAAI,MAAM;AACV,MAAM,YAAY;AAClB,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AAC9C,MAAM,OAAO,YAAY,CAAC;AAC1B,KAAK;AACL,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;AAClD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AACzC,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,kBAAkB,CAAC,gBAAgB,GAAG,EAAE,EAAE;AAC5C,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC9C,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,WAAW,EAAE;AAC7C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,UAAU;AAChB,MAAM,YAAY;AAClB,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,KAAK,GAAG,SAAS,CAAC;AAClB,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;AACtC,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;AACxE,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1D,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;AACtB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;AACxD,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,IAAI,CAAC;AAChE,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,MAAM,KAAK,EAAE,qBAAqB,CAAC;AACnC,QAAQ,CAAC,EAAE,CAAC;AACZ,QAAQ,CAAC,EAAE,CAAC;AACZ,OAAO,EAAE,KAAK,EAAE;AAChB,QAAQ,gBAAgB;AACxB,QAAQ,KAAK;AACb,QAAQ,UAAU;AAClB,QAAQ,YAAY;AACpB,QAAQ,SAAS;AACjB,QAAQ,WAAW;AACnB,QAAQ,IAAI;AACZ,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrD,OAAO;AACP,KAAK,CAAC;AACN,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClE,MAAM,OAAO;AACb,KAAK;AACL,IAAI,QAAQ,EAAE,CAAC;AACf,GAAG;AACH,EAAE,wBAAwB,GAAG;AAC7B,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC9C,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,WAAW,EAAE;AAC7C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;AACxE,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1D,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC;AAC5E,GAAG;AACH,EAAE,sBAAsB,CAAC,MAAM,EAAE;AACjC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AACjG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC1D,KAAK;AACL,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC9C,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,WAAW,EAAE;AAC7C,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAClC,QAAQ,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACtC,QAAQ,IAAI,CAAC,qBAAqB,CAAC;AACnC,UAAU,eAAe,EAAE,KAAK;AAChC,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,UAAU;AAChB,KAAK,GAAG,SAAS,CAAC;AAClB,IAAI,IAAI,UAAU,KAAK,IAAI,CAAC,iBAAiB,EAAE;AAC/C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;AACxE,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAClC,QAAQ,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACtC,QAAQ,IAAI,CAAC,qBAAqB,CAAC;AACnC,UAAU,eAAe,EAAE,KAAK;AAChC,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;AACxC,IAAI,IAAI,CAAC,qBAAqB,CAAC;AAC/B,MAAM,eAAe,EAAE,IAAI;AAC3B,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,IAAI,EAAE;AACnG,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,SAAS,EAAE;AACvD,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC;AACrD,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AACvH,MAAM,WAAW,EAAE,aAAa,EAAE,CAAC;AACnC,MAAM,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;AACvC,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI;AAC7B,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACtD,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;AACnB,QAAQ,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE;AACpC,UAAU,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AAC5C,SAAS;AACT,OAAO,CAAC;AACR,MAAM,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE;AACtD,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,MAAM,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE;AACjD,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH,EAAE,YAAY,CAAC,gBAAgB,GAAG,EAAE,EAAE;AACtC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,SAAS,EAAE;AACvD,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAChD,KAAK,MAAM,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACpD,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACtC,KAAK;AACL,GAAG;AACH,EAAE,qBAAqB,GAAG;AAC1B,IAAI,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnF,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AACjD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7D,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,mBAAmB,GAAG;AACxB,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAChC,IAAI,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACpC,MAAM,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACzC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,aAAa;AACnB,KAAK,GAAG,QAAQ,CAAC;AACjB,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAChD,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC9C,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC1D,QAAQ,MAAM,CAAC,mBAAmB,GAAG,KAAK,CAAC;AAC3C,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAClC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACpE,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACnC,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM;AACxD,MAAM,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC5C,KAAK,EAAE;AACP,MAAM,IAAI,EAAE,IAAI;AAChB,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC9B,GAAG;AACH,EAAE,mBAAmB,GAAG;AACxB,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACjC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAC;AACpD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAChE,IAAI,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAChE,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,sBAAsB,GAAG;AAC3B,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC;AACrC,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACnC,GAAG;AACH,EAAE,sBAAsB,GAAG;AAC3B,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;AAC9C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1D,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,yBAAyB,GAAG;AAC9B,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;AAC/B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,GAAG;AACH,EAAE,wBAAwB,GAAG;AAC7B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAChC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpE,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/B,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAClC,GAAG;AACH,EAAE,mBAAmB,GAAG;AACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACrC,GAAG;AACH,EAAE,QAAQ,CAAC,KAAK,EAAE;AAClB,IAAI,KAAK,MAAM;AACf,MAAM,IAAI;AACV,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;AACnC,MAAM,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,QAAQ,IAAI,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE;AACvD,UAAU,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;AACjD,UAAU,KAAK,CAAC,cAAc,EAAE,CAAC;AACjC,UAAU,OAAO;AACjB,SAAS;AACT,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;AACjD,MAAM,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,QAAQ,IAAI,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5D,UAAU,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACpD,UAAU,KAAK,CAAC,cAAc,EAAE,CAAC;AACjC,UAAU,OAAO;AACjB,SAAS;AACT,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC;AACzC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAChD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChD,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjC,OAAO;AACP,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9E,GAAG;AACH,EAAE,GAAG,CAAC,KAAK,EAAE;AACb,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,GAAG;AACH,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE;AACrB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,MAAM;AACV,MAAM,aAAa;AACnB,KAAK,GAAG,KAAK,CAAC;AACd,IAAI,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE;AAC5C,MAAM,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,QAAQ,IAAI,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5D,UAAU,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACpD,UAAU,OAAO;AACjB,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,IAAI,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI;AACR,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,KAAK,CAAC,OAAO,EAAE,EAAE;AACjB,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AACpC,IAAI,IAAI;AACR,MAAM,MAAM,UAAU,GAAG,EAAE,CAAC;AAC5B,MAAM,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE;AACjC,QAAQ,MAAM,kBAAkB,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,kBAAkB,EAAE;AACjC,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC5C,OAAO;AACP,MAAM,MAAM,GAAG,GAAG,MAAM;AACxB,QAAQ,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;AACzC,UAAU,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACxC,OAAO,CAAC;AACR,MAAM,MAAM,IAAI,GAAG,MAAM;AACzB,QAAQ,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;AACzC,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC;AAC1B,SAAS;AACT,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,WAAW,CAAC;AACvB,QAAQ,GAAG;AACX,QAAQ,IAAI;AACZ,QAAQ,QAAQ,EAAE,IAAI;AACtB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,OAAO,EAAE,EAAE;AACjB,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,KAAK;AACL,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,EAAE;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACvD,MAAM,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AACpF,MAAM,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnE,KAAK;AACL,GAAG;AACH,EAAE,KAAK,CAAC,KAAK,EAAE;AACf,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACtD,MAAM,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAClC,MAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACtC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AAC3C,QAAQ,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AAC1C,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,eAAe,CAAC;AAClB,IAAI,IAAI;AACR,GAAG,EAAE;AACL,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,MAAM,CAAC;AAClB,MAAM,KAAK,MAAM,CAAC;AAClB,MAAM,KAAK,QAAQ,CAAC;AACpB,MAAM,KAAK,WAAW;AACtB,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,QAAQ,MAAM;AACd,MAAM,KAAK,oBAAoB;AAC/B,QAAQ,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAChD,QAAQ,MAAM;AACd,KAAK;AACL,GAAG;AACH,EAAE,qBAAqB,CAAC,OAAO,EAAE;AACjC,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;AAC3G,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,+BAA+B,EAAE;AAC/D,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;AAC7D,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,SAAS,IAAI,OAAO,CAAC,iBAAiB,KAAK,KAAK,EAAE;AAChG,QAAQ,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,0BAA0B,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACpF,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,iBAAiB,CAAC,OAAO,EAAE;AAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,+BAA+B,EAAE;AAC7D,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,OAAO;AACb,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,eAAe,CAAC,SAAS,EAAE;AAC7B,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACpC,MAAM,IAAI,CAAC,qBAAqB,CAAC;AACjC,QAAQ,SAAS,EAAE,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,IAAI;AAC3D,QAAQ,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAQ,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE;AACrE,QAAQ,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE;AACrE,QAAQ,iBAAiB,EAAE,KAAK;AAChC,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACjC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACvC,MAAM,IAAI,CAAC,qBAAqB,CAAC;AACjC,QAAQ,SAAS,EAAE,KAAK;AACxB,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACpC,KAAK;AACL,GAAG;AACH,EAAE,mBAAmB,CAAC,KAAK,EAAE;AAC7B,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC9B,IAAI,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AAChD,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;AACnE,KAAK;AACL,GAAG;AACH,EAAE,KAAK,GAAG;AACV,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,QAAQ,CAAC,SAAS,EAAE;AACtB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC1C,GAAG;AACH,EAAE,IAAI,gBAAgB,GAAG;AACzB,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAClC,GAAG;AACH,EAAE,QAAQ,CAAC,KAAK,EAAE;AAClB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAChD,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;AACtB,KAAK;AACL,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,cAAc,GAAG,KAAK,EAAE;AAChE,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AAC7B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACpC,MAAM,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;AAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACvC,QAAQ,OAAO;AACf,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACzD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,IAAI,KAAK,oBAAoB,CAAC,IAAI,EAAE;AAC5C,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAClC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;AAC3C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;AAClD,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,IAAI,cAAc,EAAE;AAC1B,QAAQ,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACxC,OAAO;AACP,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;AAC3C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AACpD,MAAM,IAAI,MAAM,CAAC,mBAAmB,KAAK,MAAM,EAAE;AACjD,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,eAAe,EAAE,CAAC;AACjC,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC1B,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;AACzC,GAAG;AACH,EAAE,wBAAwB,GAAG;AAC7B,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE;AACrD,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;AACvC,KAAK;AACL,GAAG;AACH,EAAE,aAAa,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;AAC7B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,EAAE;AAC1D,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,IAAI;AACV,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;AAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,0BAA0B,CAAC,MAAM;AAC5C,QAAQ,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;AACzC,QAAQ,OAAO;AACf,MAAM,KAAK,0BAA0B,CAAC,uBAAuB;AAC7D,QAAQ,IAAI,CAAC,yBAAyB,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3D,QAAQ,MAAM;AACd,MAAM,KAAK,0BAA0B,CAAC,kBAAkB;AACxD,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE;AACnD,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,OAAO,EAAE;AACnB,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE;AAClB,cAAc,IAAI,EAAE,WAAW;AAC/B,cAAc,MAAM,EAAE,mBAAmB;AACzC,aAAa;AACb,WAAW;AACX,SAAS,CAAC,CAAC;AACX,QAAQ,CAAC,IAAI,CAAC,cAAc,KAAK,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAChD,QAAQ,MAAM;AACd,KAAK;AACL,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAChD,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AAChD,MAAM,UAAU,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClD,KAAK;AACL,GAAG;AACH,EAAE,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,EAAE;AACtD,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AACpD,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE;AACtC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,OAAO;AACP,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC;AAClG,IAAI,IAAI,KAAK,KAAK,OAAO,EAAE;AAC3B,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACzF,KAAK;AACL,GAAG;AACH,EAAE,aAAa,CAAC,QAAQ,GAAG,KAAK,EAAE;AAClC,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AACtC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC/B,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;AAClD,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,KAAK,CAAC,YAAY,EAAE,CAAC;AAC7B,OAAO,MAAM;AACb,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;AAC5B,OAAO;AACP,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACtD,KAAK;AACL,GAAG;AACH,EAAE,MAAM,UAAU,GAAG;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC7B,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC1B,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;AACpD,QAAQ,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACtC,OAAO;AACP,MAAM,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AACtD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;AACxB,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC9B,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;AACpD,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,OAAO;AACP,MAAM,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AACtD,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;AACzB,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,UAAU,CAAC,SAAS,EAAE;AACxB,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AACpD,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;AAC1C,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,OAAO;AACP,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,SAAS,CAAC,EAAE,EAAE;AAChB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpC,GAAG;AACH,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,YAAY,CAAC,MAAM,EAAE;AACvB,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACrD,MAAM,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC7C,QAAQ,YAAY,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AACxD,OAAO;AACP,MAAM,IAAI,CAAC,4BAA4B,GAAG,UAAU,CAAC,MAAM;AAC3D,QAAQ,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;AACjD,OAAO,EAAE,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;AAC5G,MAAM,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACjD,KAAK;AACL,GAAG;AACH,EAAE,2BAA2B,CAAC,MAAM,EAAE;AACtC,IAAI,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACvE,IAAI,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC9C,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B,GAAG;AACH,EAAE,0BAA0B,CAAC,mBAAmB,EAAE;AAClD,IAAI,OAAO,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACvE,GAAG;AACH,EAAE,8BAA8B,CAAC,MAAM,EAAE;AACzC,IAAI,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC1E,IAAI,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC;AACjD,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AAC3B,GAAG;AACH,EAAE,iBAAiB,CAAC,MAAM,EAAE;AAC5B,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACxD,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH,EAAE,eAAe,CAAC,MAAM,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;AACvC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;AAChC,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACxD,KAAK;AACL,GAAG;AACH,EAAE,IAAI,mBAAmB,GAAG;AAC5B,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC;AAClB,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACxC,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,QAAQ,CAAC,MAAM,EAAE;AACnB,IAAI,IAAI,IAAI,CAAC,mBAAmB,KAAK,MAAM,EAAE;AAC7C,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACxD,KAAK;AACL,GAAG;AACH,EAAE,cAAc,CAAC,MAAM,EAAE;AACzB,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC3C,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC3C,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;AACxB,MAAM,IAAI,CAAC,qBAAqB,CAAC;AACjC,QAAQ,iBAAiB,EAAE,IAAI,CAAC,YAAY;AAC5C,OAAO,CAAC,CAAC;AACT,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,qBAAqB,CAAC;AAC/B,MAAM,iBAAiB,EAAE,IAAI;AAC7B,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC5C,MAAM,IAAI,EAAE,KAAK,MAAM,EAAE;AACzB,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;AACtB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,qBAAqB,CAAC;AAC/B,MAAM,iBAAiB,EAAE,IAAI;AAC7B,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,IAAI,mBAAmB,GAAG;AAC5B,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AACvD,GAAG;AACH,EAAE,QAAQ,CAAC,MAAM,EAAE;AACnB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,qBAAqB,CAAC;AAC/B,MAAM,iBAAiB,EAAE,IAAI,CAAC,YAAY;AAC1C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,IAAI,cAAc,GAAG;AACvB,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;AACvF,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAChC,IAAI,IAAI,CAAC,qBAAqB,CAAC;AAC/B,MAAM,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE;AACnE,MAAM,kBAAkB,EAAE,IAAI;AAC9B,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC9B,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAChC,IAAI,IAAI,CAAC,qBAAqB,CAAC;AAC/B,MAAM,kBAAkB,EAAE,IAAI;AAC9B,MAAM,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE;AACnE,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC9B,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,qBAAqB,CAAC;AAC/B,MAAM,kBAAkB,EAAE,IAAI;AAC9B,MAAM,kBAAkB,EAAE,KAAK;AAC/B,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC9B,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE;AACrC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE;AACrC,MAAM,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE;AACtD,QAAQ,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;AAChC,OAAO;AACP,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC/C,IAAI,MAAM,GAAG,GAAG,MAAM;AACtB,MAAM,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AACpC,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;AACxB,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,GAAG,MAAM;AACvB,MAAM,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACvC,OAAO;AACP,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG;AACT,MAAM,IAAI;AACV,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC;AACzC,GAAG;AACH,EAAE,qBAAqB,GAAG;AAC1B,IAAI,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC;AACnD,GAAG;AACH,EAAE,cAAc,CAAC,OAAO,EAAE;AAC1B,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAChD,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAClC,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;AAC5B,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,CAAC,qBAAqB,CAAC;AAC/B,MAAM,iBAAiB,EAAE,IAAI,CAAC,YAAY;AAC1C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAChD,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;AACnD,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5B,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;AAC1C,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,IAAI,EAAE;AACpD,QAAQ,OAAO;AACf,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAChD,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,qBAAqB,CAAC;AAC/B,MAAM,iBAAiB,EAAE,KAAK;AAC9B,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE;AACnD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/C,IAAI,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC/C,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACpC,MAAM,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,MAAM;AAClD,MAAM,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACxC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtD,MAAM,IAAI,CAAC,WAAW,CAAC;AACvB,QAAQ,GAAG,EAAE,MAAM;AACnB,UAAU,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AACxC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AACjD,cAAc,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACrD,aAAa;AACb,WAAW;AACX,SAAS;AACT,QAAQ,IAAI,EAAE,MAAM;AACpB,UAAU,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AACxC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AACjD,cAAc,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;AACvD,aAAa;AACb,WAAW;AACX,SAAS;AACT,QAAQ,QAAQ,EAAE,KAAK;AACvB,OAAO,CAAC,CAAC;AACT,KAAK,EAAE,YAAY,CAAC,CAAC;AACrB,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,KAAK;AACL,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;AACtC,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAChD,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE;AACxC,QAAQ,MAAM,EAAE,MAAM,CAAC,CAAC;AACxB,QAAQ,MAAM,EAAE,MAAM,CAAC,CAAC;AACxB,QAAQ,cAAc,EAAE,MAAM,CAAC,SAAS;AACxC,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,YAAY,EAAE,CAAC,CAAC;AACxB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAChC,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACtC,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACjC,IAAI,IAAI,sBAAsB,GAAG,KAAK,CAAC;AACvC,IAAI,KAAK,MAAM,CAAC;AAChB,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,SAAS;AACf,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,EAAE;AACtB,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AACrB,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AACrB,MAAM,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC;AACrC,MAAM,sBAAsB,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,IAAI,SAAS,KAAK,KAAK,CAAC,cAAc,CAAC;AAChH,KAAK;AACL,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACjC,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,KAAK;AAC9C,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AAC3C,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACtD,QAAQ,IAAI,MAAM,EAAE;AACpB,UAAU,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AACvC,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,SAAS;AACT,OAAO;AACP,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG,EAAE,MAAM;AACjB,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE;AAC5B,UAAU,IAAI;AACd,UAAU,IAAI;AACd,UAAU,YAAY;AACtB,SAAS,CAAC,IAAI,GAAG,EAAE;AACnB,UAAU,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AACjD,SAAS;AACT,OAAO;AACP,MAAM,IAAI,EAAE,MAAM;AAClB,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE;AAC5B,UAAU,MAAM;AAChB,UAAU,MAAM;AAChB,UAAU,cAAc;AACxB,SAAS,CAAC,IAAI,GAAG,EAAE;AACnB,UAAU,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AACvD,SAAS;AACT,OAAO;AACP,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE;AAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE;AACvD,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1B,KAAK;AACL,GAAG;AACH,EAAE,OAAO,CAAC,MAAM,EAAE;AAClB,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE;AAChC,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACrD,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACpC,QAAQ,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACpC,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC5C,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;AACzB,OAAO;AACP,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACzC,KAAK;AACL,GAAG;AACH,EAAE,IAAI,wBAAwB,GAAG;AACjC,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,uBAAuB,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC;AACjJ,GAAG;AACH,EAAE,QAAQ,CAAC,MAAM,EAAE;AACnB,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,MAAM,CAAC;AACzC,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;AAC9B,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE,iBAAiB,CAAC,SAAS,EAAE;AAC/B,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC9C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC5D,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,EAAE;AAChF,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,KAAK;AACL,IAAI,MAAM;AACV,MAAM,CAAC,EAAE,MAAM;AACf,MAAM,CAAC,EAAE,MAAM;AACf,MAAM,KAAK,EAAE,WAAW;AACxB,MAAM,MAAM,EAAE,YAAY;AAC1B,KAAK,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAC1C,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,QAAQ,SAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC;AACxD,MAAM,KAAK,IAAI;AACf,QAAQ,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACnC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI,YAAY;AACxC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,WAAW;AAC/C,UAAU,KAAK,EAAE,CAAC,GAAG,YAAY;AACjC,UAAU,MAAM,EAAE,CAAC,GAAG,WAAW;AACjC,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM;AACd,MAAM,KAAK,KAAK;AAChB,QAAQ,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACnC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,WAAW;AAC/C,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,YAAY;AAChD,UAAU,KAAK,EAAE,CAAC,GAAG,WAAW;AAChC,UAAU,MAAM,EAAE,CAAC,GAAG,YAAY;AAClC,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM;AACd,MAAM,KAAK,KAAK;AAChB,QAAQ,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACnC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,YAAY;AAChD,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW;AACvC,UAAU,KAAK,EAAE,CAAC,GAAG,YAAY;AACjC,UAAU,MAAM,EAAE,CAAC,GAAG,WAAW;AACjC,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACnC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW;AACvC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI,YAAY;AACxC,UAAU,KAAK,EAAE,CAAC,GAAG,WAAW;AAChC,UAAU,MAAM,EAAE,CAAC,GAAG,YAAY;AAClC,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM;AACd,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC5D,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5C,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE;AAC3B,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,KAAK,MAAM;AACjB,QAAQ,CAAC;AACT,QAAQ,CAAC;AACT,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE;AACnC,QAAQ,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;AACzC,UAAU,SAAS;AACnB,SAAS;AACT,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACjD,OAAO;AACP,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7C,GAAG;AACH,EAAE,4BAA4B,CAAC;AAC/B,IAAI,mBAAmB;AACvB,IAAI,EAAE;AACN,GAAG,EAAE;AACL,IAAI,CAAC,IAAI,CAAC,2BAA2B,KAAK,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAClF,GAAG;AACH,EAAE,+BAA+B,CAAC;AAClC,IAAI,mBAAmB;AACvB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAClE,GAAG;AACH,EAAE,uBAAuB,CAAC,UAAU,EAAE;AACtC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,2BAA2B,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/E,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AAC7E,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC/C,GAAG;AACH,CAAC;AAGD;AACA,MAAM,OAAO,CAAC;AACd,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,kBAAkB,GAAG,KAAK,CAAC;AAC7B,EAAE,cAAc,GAAG,IAAI,CAAC;AACxB,EAAE,eAAe,GAAG,IAAI,CAAC;AACzB,EAAE,sBAAsB,GAAG,IAAI,CAAC;AAChC,EAAE,uBAAuB,GAAG,KAAK,CAAC;AAClC,EAAE,MAAM,GAAG,IAAI,CAAC;AAChB,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,YAAY,GAAG,IAAI,CAAC;AACtB,EAAE,mBAAmB,GAAG,IAAI,CAAC;AAC7B,EAAE,kBAAkB,GAAG,KAAK,CAAC;AAC7B,EAAE,OAAO,cAAc,GAAG,IAAI,CAAC;AAC/B,EAAE,OAAO,YAAY,GAAG,IAAI,CAAC;AAC7B,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;AAClE,IAAI,OAAO,CAAC,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC;AAC7C,MAAM,KAAK,EAAE,8CAA8C;AAC3D,MAAM,OAAO,EAAE,gDAAgD;AAC/D,MAAM,MAAM,EAAE,kDAAkD;AAChE,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,UAAU,CAAC,WAAW,EAAE;AACjC,IAAI,OAAO,CAAC,YAAY,KAAK,WAAW,CAAC;AACzC,GAAG;AACH,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC3E,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAClC,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACjC,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC3E,KAAK,MAAM;AACX,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;AACjF,KAAK;AACL,IAAI,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC;AAC9B,IAAI,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAC5C,IAAI,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC;AAC3B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;AACnD,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE;AAC3D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE;AAC9E,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,OAAO,GAAG,KAAK,IAAI;AAC7B,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;AAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxD,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACnC,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACtC,UAAU,MAAM,EAAE,iDAAiD;AACnE,UAAU,IAAI,EAAE;AAChB,YAAY,KAAK,EAAE,IAAI,CAAC,MAAM;AAC9B,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO;AACP,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/C,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,IAAI;AACjD,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AAC7D,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AAC5C,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC;AACvB,OAAO;AACP,KAAK,EAAE;AACP,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AAC3B,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,QAAQ,IAAI,SAAS,CAAC;AAC3G,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC9B,MAAM,YAAY,EAAE,IAAI,CAAC,uBAAuB;AAChD,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;AACzC,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACjC,MAAM,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACtD,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACjC,MAAM,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;AAC3D,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AAC1B,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC;AAC7B,GAAG;AACH,EAAE,MAAM,cAAc,CAAC,WAAW,EAAE;AACpC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACpC,IAAI,IAAI,CAAC,mBAAmB,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;AAC9H,MAAM,gBAAgB,EAAE,WAAW;AACnC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,GAAG;AACH,EAAE,kBAAkB,CAAC,UAAU,GAAG,KAAK,EAAE;AACzC,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnD,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACzB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChE,MAAM,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC;AACzC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;AACxD,GAAG;AACH,EAAE,SAAS,CAAC,YAAY,EAAE;AAC1B,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;AACxD,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACzC,KAAK;AACL,IAAI,OAAO;AACX,MAAM,OAAO;AACb,MAAM,UAAU,EAAE,IAAI,CAAC,kBAAkB;AACzC,MAAM,WAAW,EAAE,IAAI,CAAC,YAAY;AACpC,MAAM,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;AAClD,KAAK,CAAC;AACN,GAAG;AACH,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ;AAC5B,MAAM,UAAU,EAAE,IAAI,CAAC,kBAAkB;AACzC,KAAK,CAAC;AACN,GAAG;AACH,EAAE,IAAI,IAAI,CAAC;AACX,IAAI,OAAO;AACX,IAAI,UAAU;AACd,IAAI,WAAW;AACf,IAAI,kBAAkB;AACtB,IAAI,MAAM,GAAG,KAAK;AAClB,GAAG,EAAE;AACL,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACtC,MAAM,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,kBAAkB,KAAK,UAAU,EAAE;AAC7E,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC9B,MAAM,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,GAAG;AACH,EAAE,MAAM,CAAC,OAAO,GAAG,KAAK,EAAE;AAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACjD,MAAM,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAChD,MAAM,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC;AAC5C,GAAG;AACH,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAClC,MAAM,MAAM,EAAE,mDAAmD;AACjE,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,IAAI,CAAC,MAAM;AAC1B,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,GAAG;AACH,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;AACvC,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACjC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvD,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;AAChF,QAAQ,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAC/C,QAAQ,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE;AAC/C,UAAU,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;AACjD,YAAY,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;AACpC,YAAY,MAAM;AAClB,WAAW;AACX,SAAS;AACT,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;AACvC,QAAQ,OAAO;AACf,OAAO;AACP,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACtD,QAAQ,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;AACvC,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;AACtF,QAAQ,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAC/C,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;AACvC,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,IAAI,CAAC,eAAe,GAAG,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACtE,MAAM,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AACpC,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC9C,MAAM,OAAO,CAAC,EAAE,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACxC,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;AACrD,MAAM,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AAC7C,QAAQ,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AAC3C,OAAO,EAAE;AACT,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC,CAAC;AACT,MAAM,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;AAClD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC,MAAM;AACvD,UAAU,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AAC7C,UAAU,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrD,UAAU,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACxC,YAAY,MAAM,EAAE,kBAAkB;AACtC,WAAW,CAAC,CAAC;AACb,SAAS,EAAE,qBAAqB,CAAC,CAAC;AAClC,OAAO,EAAE;AACT,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,MAAM,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM;AAClD,QAAQ,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACzC,UAAU,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACpD,UAAU,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvD,OAAO,EAAE;AACT,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,0CAA0C,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC7I,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAC7B,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;AACtD,IAAI,OAAO,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAC1D,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA;AACA;AACA,MAAM,gBAAgB,CAAC;AACvB,EAAE,kBAAkB,GAAG,IAAI,CAAC;AAC5B,EAAE,eAAe,GAAG,IAAI,CAAC;AACzB,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,SAAS,GAAG,KAAK,CAAC;AACpB,EAAE,gBAAgB,GAAG,KAAK,CAAC;AAC3B,EAAE,YAAY,GAAG,IAAI,CAAC;AACtB,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAC1B,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,mBAAmB,GAAG,EAAE,CAAC;AAC3B,EAAE,eAAe,GAAG,KAAK,CAAC;AAC1B,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAC1B,EAAE,UAAU,GAAG,KAAK,CAAC;AACrB,EAAE,aAAa,GAAG,KAAK,CAAC;AACxB,EAAE,4BAA4B,GAAG,KAAK,CAAC;AACvC,EAAE,iBAAiB,GAAG,IAAI,CAAC;AAC3B,EAAE,UAAU,GAAG,CAAC,CAAC;AACjB,EAAE,UAAU,GAAG,CAAC,CAAC;AACjB,EAAE,kBAAkB,GAAG,IAAI,CAAC;AAC5B,EAAE,YAAY,GAAG,IAAI,CAAC;AACtB,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,EAAE,YAAY,GAAG,IAAI,CAAC;AACtB,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,mBAAmB,GAAG,IAAI,CAAC;AAC7B,EAAE,OAAO,YAAY,GAAG,IAAI,CAAC;AAC7B,EAAE,OAAO,YAAY,GAAG,IAAI,CAAC;AAC7B,EAAE,YAAY,GAAG,KAAK,CAAC;AACvB,EAAE,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC;AACvC,EAAE,OAAO,gBAAgB,GAAG,CAAC,CAAC,CAAC;AAC/B,EAAE,OAAO,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;AAC5C,EAAE,OAAO,OAAO,GAAG,CAAC,CAAC;AACrB,EAAE,OAAO,iBAAiB,GAAG,IAAI,CAAC;AAClC,EAAE,WAAW,uBAAuB,GAAG;AACvC,IAAI,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAClE,IAAI,MAAM,KAAK,GAAG,yBAAyB,CAAC,eAAe,CAAC;AAC5D,IAAI,MAAM,GAAG,GAAG,yBAAyB,CAAC,aAAa,CAAC;AACxD,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,yBAAyB,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE;AACjH,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACvB,KAAK,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE;AAC5D,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACrB,KAAK,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE;AACnD,MAAM,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,KAAK,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,MAAM,EAAE;AAC9D,MAAM,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpB,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE;AAC7C,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACvB,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAAE,MAAM,EAAE;AACxD,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;AACrB,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE;AACjD,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;AACtB,KAAK,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE;AAC5D,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AACpB,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,GAAG;AACH,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AACpC,IAAI,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACpC,IAAI,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;AACjD,IAAI,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACpB,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC;AAC3C,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACpC,IAAI,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AACtC,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;AAC5D,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACpC,IAAI,MAAM;AACV,MAAM,QAAQ;AACd,MAAM,OAAO,EAAE;AACf,QAAQ,SAAS;AACjB,QAAQ,UAAU;AAClB,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,OAAO;AACP,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,IAAI,GAAG,CAAC;AACzF,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAClD,IAAI,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC;AAClC,IAAI,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC;AACnC,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACzB,GAAG;AACH,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AACzD,GAAG;AACH,EAAE,WAAW,iBAAiB,GAAG;AACjC,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1F,GAAG;AACH,EAAE,OAAO,uBAAuB,CAAC,MAAM,EAAE;AACzC,IAAI,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;AACtC,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;AACnC,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM;AAC3B,MAAM,SAAS,EAAE,MAAM,CAAC,UAAU;AAClC,KAAK,CAAC,CAAC;AACP,IAAI,UAAU,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAChE,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAC9B,IAAI,UAAU,CAAC,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;AAC7D,GAAG;AACH,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE;AAC/C,IAAI,gBAAgB,CAAC,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC;AACpD,MAAM,OAAO,EAAE,+BAA+B;AAC9C,MAAM,SAAS,EAAE,iCAAiC;AAClD,MAAM,QAAQ,EAAE,gCAAgC;AAChD,MAAM,WAAW,EAAE,mCAAmC;AACtD,MAAM,WAAW,EAAE,mCAAmC;AACtD,MAAM,YAAY,EAAE,oCAAoC;AACxD,MAAM,UAAU,EAAE,kCAAkC;AACpD,MAAM,UAAU,EAAE,kCAAkC;AACpD,KAAK,CAAC,CAAC;AACP,IAAI,gBAAgB,CAAC,YAAY,KAAK,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,oCAAoC,EAAE,yCAAyC,EAAE,0CAA0C,EAAE,8CAA8C,EAAE,gDAAgD,EAAE,kDAAkD,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,8DAA8D,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1d,IAAI,IAAI,OAAO,EAAE,OAAO,EAAE;AAC1B,MAAM,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE;AACzC,QAAQ,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,OAAO;AACP,KAAK;AACL,IAAI,IAAI,gBAAgB,CAAC,gBAAgB,KAAK,CAAC,CAAC,EAAE;AAClD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC7D,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC;AACnG,GAAG;AACH,EAAE,OAAO,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;AAC9C,EAAE,WAAW,yBAAyB,GAAG;AACzC,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,OAAO,wBAAwB,CAAC,IAAI,EAAE;AACxC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE;AAC7B,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,kBAAkB,GAAG;AAC3B,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC;AAC7B,GAAG;AACH,EAAE,IAAI,YAAY,CAAC,KAAK,EAAE;AAC1B,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC9B,IAAI,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACnD,GAAG;AACH,EAAE,IAAI,cAAc,GAAG;AACvB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AACxD,IAAI,QAAQ,IAAI,CAAC,cAAc;AAC/B,MAAM,KAAK,EAAE;AACb,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;AAC5D,QAAQ,MAAM;AACd,MAAM,KAAK,GAAG;AACd,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,QAAQ,MAAM;AACd,MAAM,KAAK,GAAG;AACd,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;AAC5D,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,QAAQ,MAAM;AACd,KAAK;AACL,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,GAAG;AACH,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;AACxC,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AACzC,GAAG;AACH,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE;AACzB,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACxC,MAAM,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAClD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,EAAE;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACpC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACnC,KAAK;AACL,GAAG;AACH,EAAE,QAAQ,CAAC,KAAK,EAAE;AAClB,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;AACvC,IAAI,IAAI,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE;AAC3C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACxB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAClC,GAAG;AACH,EAAE,sBAAsB,GAAG;AAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAClD,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC;AAC/B,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,GAAG;AACH,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACxB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,GAAG;AACH,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AAClB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;AACxB,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;AAC5B,MAAM,KAAK,EAAE,SAAS;AACtB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;AACf,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/C,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC;AAC/B,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,YAAY,CAAC;AAChC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/E,MAAM,MAAM;AACZ,QAAQ,CAAC;AACT,QAAQ,CAAC;AACT,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;AAC3C,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACjD,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrC,OAAO;AACP,KAAK;AACL,IAAI,IAAI;AACR,MAAM,CAAC;AACP,MAAM,CAAC;AACP,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;AAC5B,MAAM,KAAK,EAAE,SAAS;AACtB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AACnH,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,MAAM;AACV,MAAM,gBAAgB;AACtB,KAAK,GAAG,gBAAgB,CAAC;AACzB,IAAI,MAAM,CAAC,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAC7C,IAAI,MAAM,CAAC,GAAG,gBAAgB,GAAG,YAAY,CAAC;AAC9C,IAAI,QAAQ,IAAI,CAAC,QAAQ;AACzB,MAAM,KAAK,EAAE;AACb,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM;AACN,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,KAAK;AACL,GAAG;AACH,EAAE,IAAI,gBAAgB,GAAG;AACzB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC9C,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AACxD,IAAI,IAAI;AACR,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,KAAK,IAAI,SAAS,CAAC;AACvB,IAAI,MAAM,IAAI,UAAU,CAAC;AACzB,IAAI,CAAC,IAAI,SAAS,CAAC;AACnB,IAAI,CAAC,IAAI,UAAU,CAAC;AACpB,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC/B,MAAM,QAAQ,QAAQ;AACtB,QAAQ,KAAK,CAAC;AACd,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,UAAU,MAAM;AAChB,QAAQ,KAAK,EAAE;AACf,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,UAAU,MAAM;AAChB,QAAQ,KAAK,GAAG;AAChB,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,UAAU,MAAM;AAChB,QAAQ,KAAK,GAAG;AAChB,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,UAAU,MAAM;AAChB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;AAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC;AAC7B,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACjB,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,GAAG;AACH,EAAE,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;AACnC,IAAI,QAAQ,KAAK;AACjB,MAAM,KAAK,EAAE;AACb,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,MAAM;AACN,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,KAAK;AACL,GAAG;AACH,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE;AAChC,IAAI,OAAO,gBAAgB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACpE,GAAG;AACH,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE;AAChC,IAAI,OAAO,gBAAgB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1E,GAAG;AACH,EAAE,kBAAkB,CAAC,QAAQ,EAAE;AAC/B,IAAI,QAAQ,QAAQ;AACpB,MAAM,KAAK,EAAE;AACb,QAAQ;AACR,UAAU,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC9D,UAAU,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,UAAU,EAAE,UAAU,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;AACzE,SAAS;AACT,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,MAAM,KAAK,GAAG;AACd,QAAQ;AACR,UAAU,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC9D,UAAU,OAAO,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,EAAE,CAAC,UAAU,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;AACzE,SAAS;AACT,MAAM;AACN,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC;AACpD,GAAG;AACH,EAAE,IAAI,cAAc,GAAG;AACvB,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;AAC/E,GAAG;AACH,EAAE,IAAI,gBAAgB,GAAG;AACzB,IAAI,MAAM;AACV,MAAM,WAAW;AACjB,MAAM,cAAc,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;AAC7C,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,OAAO,CAAC,SAAS,GAAG,WAAW,EAAE,UAAU,GAAG,WAAW,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;AACzB,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAChC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACjB,IAAI,MAAM;AACV,MAAM,MAAM;AACZ,MAAM,KAAK;AACX,KAAK,GAAG,KAAK,CAAC;AACd,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7C,IAAI,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzE,IAAI,IAAI,YAAY,IAAI,aAAa,EAAE;AACvC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,MAAM,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,aAAa,EAAE;AAClD,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,KAAK;AACL,GAAG;AACH,EAAE,qBAAqB,GAAG;AAC1B,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AACtN,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAC3C,IAAI,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;AAChC,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChD,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACpC,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACzC,MAAM,GAAG,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AAClD,MAAM,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AACrF,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,MAAM,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE;AACzD,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE;AACnC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE;AACtD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC;AAC7C,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC9B,IAAI,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;AACrC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAI,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AACtF,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE;AAC1D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;AACpC,IAAI,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACxG,IAAI,MAAM,iBAAiB,GAAG,MAAM;AACpC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;AACjB,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC5C,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,MAAM,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;AACzC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;AACvD,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;AAC1C,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1E,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,EAAE;AAC5D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,EAAE;AACvD,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE;AACjE,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAChC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;AAClC,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU,IAAI,SAAS,KAAK,WAAW,EAAE;AACpG,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG,EAAE,MAAM;AACjB,QAAQ,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC9B,QAAQ,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAChC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AACtB,QAAQ,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAClE,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AACvE,QAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACjC,OAAO;AACP,MAAM,IAAI,EAAE,MAAM;AAClB,QAAQ,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;AAChC,QAAQ,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;AAClC,QAAQ,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;AACxB,QAAQ,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;AACxB,QAAQ,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAClE,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,UAAU,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;AAC3E,QAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACjC,OAAO;AACP,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE;AACnC,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;AACpC,IAAI,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,GAAG,WAAW,CAAC;AAC7D,IAAI,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,GAAG,YAAY,CAAC;AAC/D,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AACrD,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClE,IAAI,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5H,IAAI,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3E,IAAI,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3I,IAAI,IAAI,QAAQ,CAAC;AACjB,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,YAAY,GAAG,KAAK,CAAC;AAC7B,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,SAAS;AACpB,QAAQ,UAAU,GAAG,IAAI,CAAC;AAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,QAAQ,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM;AACd,MAAM,KAAK,WAAW;AACtB,QAAQ,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,QAAQ,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAQ,MAAM;AACd,MAAM,KAAK,UAAU;AACrB,QAAQ,UAAU,GAAG,IAAI,CAAC;AAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,QAAQ,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM;AACd,MAAM,KAAK,aAAa;AACxB,QAAQ,YAAY,GAAG,IAAI,CAAC;AAC5B,QAAQ,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,QAAQ,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAQ,MAAM;AACd,MAAM,KAAK,aAAa;AACxB,QAAQ,UAAU,GAAG,IAAI,CAAC;AAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,QAAQ,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM;AACd,MAAM,KAAK,cAAc;AACzB,QAAQ,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,QAAQ,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAQ,MAAM;AACd,MAAM,KAAK,YAAY;AACvB,QAAQ,UAAU,GAAG,IAAI,CAAC;AAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,QAAQ,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM;AACd,MAAM,KAAK,YAAY;AACvB,QAAQ,YAAY,GAAG,IAAI,CAAC;AAC5B,QAAQ,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,QAAQ,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAQ,MAAM;AACd,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACpD,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC/D,IAAI,IAAI,mBAAmB,GAAG,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC;AACvD,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;AACnB,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AAC1F,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,WAAW,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC;AAC9E,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1D,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE,SAAS,GAAG,WAAW,CAAC,CAAC;AAC9N,KAAK,MAAM,IAAI,YAAY,EAAE;AAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAC5G,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;AAC9G,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;AAClD,IAAI,mBAAmB,GAAG,MAAM,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AACtE,IAAI,MAAM,IAAI,GAAG,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACpD,IAAI,MAAM,IAAI,GAAG,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAClB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAClB,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,MAAM,cAAc,GAAG;AACzB,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;AACjD,MAAM,OAAO,IAAI,CAAC,YAAY,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAChD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;AAChD,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC;AAC7B,GAAG;AACH,EAAE,iBAAiB,GAAG;AACtB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;AAC/B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC7B,GAAG;AACH,EAAE,YAAY,CAAC,SAAS,EAAE;AAC1B,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC;AAClD,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACvC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACjC,KAAK;AACL,GAAG;AACH,EAAE,mBAAmB,GAAG;AACxB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;AAC5C,GAAG;AACH,EAAE,MAAM,gBAAgB,GAAG;AAC3B,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACnD,MAAM,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAChC,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC/B,GAAG;AACH,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACxB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,cAAc,GAAG;AACvB,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AACtC,GAAG;AACH,EAAE,MAAM,iBAAiB,CAAC,IAAI,EAAE;AAChC,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,gBAAgB,CAAC,YAAY,EAAE;AACjC,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;AAClD,GAAG;AACH,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AACvD,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC;AAC7C,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;AAC/E,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAChD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9B,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,IAAI,CAAC,cAAc,GAAG,GAAG,KAAK,CAAC,EAAE;AACzC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,YAAY,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,WAAW,GAAG,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,KAAK;AACL,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAClD,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AAChD,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC;AACpB,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE;AACtD,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;AAC7B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACpC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACtC,GAAG;AACH,EAAE,qBAAqB,CAAC,KAAK,EAAE;AAC/B,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE;AAC7E,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACvC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACpC,KAAK;AACL,GAAG;AACH,EAAE,iBAAiB,CAAC,KAAK,EAAE;AAC3B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;AACvC,IAAI,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;AACrC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACtD,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvC,MAAM,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;AACtC,MAAM,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;AACtC,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI;AACvC,QAAQ,MAAM;AACd,UAAU,OAAO,EAAE,CAAC;AACpB,UAAU,OAAO,EAAE,CAAC;AACpB,SAAS,GAAG,CAAC,CAAC;AACd,QAAQ,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACpD,OAAO,CAAC;AACR,MAAM,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,EAAE;AAClE,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,MAAM;AACpC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;AACjB,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5C,OAAO;AACP,MAAM,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACnC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE;AAC7C,QAAQ,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC1C,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,EAAE;AAC5D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,EAAE;AACvD,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAChC,MAAM,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAM;AAC9C,MAAM,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACpC,MAAM,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;AACzC,KAAK,EAAE,CAAC,CAAC,CAAC;AACV,GAAG;AACH,EAAE,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE;AACtC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,GAAG;AACH,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5C,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AACnC,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AACxD,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;AAChD,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;AAC9B,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;AACjC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC;AAClC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACzC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AAC5C,IAAI,QAAQ,QAAQ;AACpB,MAAM,KAAK,CAAC;AACZ,QAAQ,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAC3I,MAAM,KAAK,EAAE;AACb,QAAQ,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;AAC3I,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAC3I,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAC3I,MAAM;AACN,QAAQ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC5C,KAAK;AACL,GAAG;AACH,EAAE,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE;AAC3C,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;AAClC,IAAI,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AAC3B,IAAI,QAAQ,IAAI,CAAC,QAAQ;AACzB,MAAM,KAAK,CAAC;AACZ,QAAQ,OAAO,CAAC,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACpD,MAAM,KAAK,EAAE;AACb,QAAQ,OAAO,CAAC,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACpD,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,CAAC,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACpD,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,CAAC,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACpD,MAAM;AACN,QAAQ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC5C,KAAK;AACL,GAAG;AACH,EAAE,SAAS,GAAG,EAAE;AAChB,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC/B,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;AAC9B,GAAG;AACH,EAAE,uBAAuB,GAAG;AAC5B,IAAI,OAAO,IAAI,CAAC,4BAA4B,CAAC;AAC7C,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACpC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;AAC1C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAClE,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpE,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9B,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE;AACnB,EAAE,gBAAgB,GAAG;AACrB,IAAI,OAAO;AACX,MAAM,EAAE,EAAE,IAAI,CAAC,mBAAmB;AAClC,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,IAAI,EAAE;AACjD,KAAK,CAAC;AACN,GAAG;AACH,EAAE,SAAS,CAAC,YAAY,GAAG,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE;AAClD,IAAI,WAAW,CAAC,gCAAgC,CAAC,CAAC;AAClD,GAAG;AACH,EAAE,aAAa,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;AACpD,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAClD,MAAM,MAAM;AACZ,MAAM,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE;AAC5B,MAAM,SAAS;AACf,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpC,IAAI,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACvD,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;AAC1D,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACvF,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC7B,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AAC9B,IAAI,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACrC,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AACxC,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,IAAI,eAAe,GAAG;AACxB,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,CAAC;AACrF,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACzB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAChC,MAAM,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACjC,MAAM,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE;AAC9D,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,OAAO;AACP,MAAM,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnD,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL,GAAG;AACH,EAAE,IAAI,eAAe,GAAG;AACxB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,EAAE;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACjF,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,gBAAgB,GAAG;AAC5B,MAAM,MAAM,EAAE,IAAI,CAAC,CAAC;AACpB,MAAM,MAAM,EAAE,IAAI,CAAC,CAAC;AACpB,MAAM,UAAU,EAAE,IAAI,CAAC,KAAK;AAC5B,MAAM,WAAW,EAAE,IAAI,CAAC,MAAM;AAC9B,KAAK,CAAC;AACN,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAChD,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAC7C,MAAM,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9C,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAC3D,QAAQ,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC/C,QAAQ,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,mBAAmB,EAAE;AAC7D,UAAU,MAAM;AAChB,SAAS,CAAC,CAAC;AACX,QAAQ,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE;AACvD,UAAU,MAAM;AAChB,SAAS,CAAC,CAAC;AACX,QAAQ,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AAC3E,UAAU,MAAM;AAChB,SAAS,CAAC,CAAC;AACX,QAAQ,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,OAAO;AACP,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;AAC1B,IAAI,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;AAChC,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;AACzB,QAAQ,MAAM;AACd,OAAO;AACP,MAAM,aAAa,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzH,IAAI,IAAI,iBAAiB,KAAK,aAAa,EAAE;AAC7C,MAAM,IAAI,iBAAiB,GAAG,aAAa,EAAE;AAC7C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE;AACpE,UAAU,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AACjE,SAAS;AACT,OAAO,MAAM,IAAI,iBAAiB,GAAG,aAAa,EAAE;AACpD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;AACpE,UAAU,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC3E,SAAS;AACT,OAAO;AACP,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,MAAM,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AACpC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9C,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAC3D,QAAQ,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;AAC7C,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;AACvC,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,KAAK,CAAC,wBAAwB,EAAE,CAAC;AACrC,GAAG;AACH,EAAE,eAAe,CAAC,KAAK,EAAE;AACzB,IAAI,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,IAAI,IAAI,CAAC,4BAA4B,IAAI,KAAK,CAAC,aAAa,EAAE,UAAU,KAAK,IAAI,CAAC,YAAY,EAAE;AACpG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,KAAK;AACL,GAAG;AACH,EAAE,aAAa,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,4BAA4B,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7E,GAAG;AACH,EAAE,mBAAmB,CAAC,KAAK,EAAE;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE;AAC5C,MAAM,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL,GAAG;AACH,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AAC5C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACvD,MAAM,SAAS,EAAE,CAAC;AAClB,MAAM,SAAS,EAAE,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAC9C,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC/B,MAAM,MAAM;AACZ,QAAQ,MAAM;AACd,QAAQ,MAAM;AACd,QAAQ,UAAU;AAClB,QAAQ,WAAW;AACnB,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAChC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1E,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACnC,KAAK;AACL,GAAG;AACH,EAAE,yBAAyB,GAAG;AAC9B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACrB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,MAAM;AACvC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAC5D,UAAU,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;AACpC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;AAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACjD,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACpD,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7C,QAAQ,aAAa,EAAE,IAAI;AAC3B,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;AAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC9B,EAAE,cAAc,GAAG,EAAE;AACrB,EAAE,aAAa,GAAG,EAAE;AACpB,EAAE,eAAe,GAAG,EAAE;AACtB,EAAE,kBAAkB,GAAG;AACvB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC;AACpB,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACpC,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACxC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACxC,KAAK;AACL,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE;AAChC,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACjC,IAAI,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;AACvC,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACjB,IAAI,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AACpC,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1B,GAAG;AACH,EAAE,WAAW,QAAQ,GAAG;AACxB,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,OAAO,uBAAuB,GAAG;AACnC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,IAAI,oBAAoB,GAAG;AAC7B,IAAI,OAAO;AACX,MAAM,MAAM,EAAE,OAAO;AACrB,KAAK,CAAC;AACN,GAAG;AACH,EAAE,IAAI,kBAAkB,GAAG;AAC3B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE;AAC3C,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,IAAI,CAAC,kBAAkB,KAAK,IAAI,GAAG,EAAE,CAAC;AAC5C,MAAM,MAAM;AACZ,QAAQ,MAAM;AACd,OAAO,GAAG,IAAI,CAAC;AACf,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxD,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,OAAO;AACP,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;AACjC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/C,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,EAAE;AAChD,UAAU,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACzC,SAAS;AACT,OAAO,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AAC7C,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC;AAClC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE;AAC1D,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,OAAO,EAAE;AACf,QAAQ,IAAI,EAAE,SAAS;AACvB,QAAQ,IAAI;AACZ,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAC9B,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;AAClB,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;AAClB,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,GAAG;AACH,EAAE,uBAAuB,CAAC,UAAU,EAAE;AACtC,IAAI,IAAI,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAC3E,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAClE,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5C,KAAK,MAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC9C,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC;AAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAClE,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,sBAAsB,CAAC,UAAU,EAAE;AACrC,IAAI,MAAM;AACV,MAAM,UAAU;AAChB,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC;AAC7B,IAAI,IAAI,UAAU,EAAE,QAAQ,KAAK,KAAK,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AAC9F,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;AAC1B,KAAK;AACL,GAAG;AACH,CAAC;AACD,MAAM,UAAU,SAAS,gBAAgB,CAAC;AAC1C,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAClB,IAAI,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1D,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACnC,GAAG;AACH,CAAC;AAGD,MAAM,IAAI,GAAG,UAAU,CAAC;AACxB,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC;AACxB,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC;AAC9C,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC;AAC9C,GAAG;AACH,EAAE,MAAM,CAAC,KAAK,EAAE;AAChB,IAAI,IAAI,IAAI,EAAE,MAAM,CAAC;AACrB,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9C,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzC,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE;AAC1B,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;AAChC,SAAS,MAAM;AACf,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;AACtC,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACvC,SAAS;AACT,OAAO;AACP,KAAK,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;AAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC9E,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,CAAC;AACpC,IAAI,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC;AAChD,IAAI,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;AACpE,IAAI,IAAI,EAAE,GAAG,CAAC;AACd,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE;AACpB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACnB,IAAI,MAAM,EAAE,GAAG,UAAU;AACzB,MAAM,EAAE,GAAG,UAAU,CAAC;AACtB,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ;AAChC,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;AAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,QAAQ,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC1D,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAClC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC1D,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjB,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAClC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC;AACjC,OAAO,MAAM;AACb,QAAQ,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC1D,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAClC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC1D,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjB,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAClC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC;AACjC,OAAO;AACP,KAAK;AACL,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,IAAI,QAAQ,UAAU;AACtB,MAAM,KAAK,CAAC;AACZ,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,MAAM,KAAK,CAAC;AACZ,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,MAAM,KAAK,CAAC;AACZ,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AACpC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC1D,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAClC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC1D,QAAQ,IAAI,WAAW,GAAG,CAAC,EAAE;AAC7B,UAAU,EAAE,IAAI,EAAE,CAAC;AACnB,SAAS,MAAM;AACf,UAAU,EAAE,IAAI,EAAE,CAAC;AACnB,SAAS;AACT,KAAK;AACL,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACjB,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACjB,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE;AACpB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACnB,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACnB,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC9D,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,UAAU,GAAG,SAAS,MAAM,EAAE,CAAC;AAChG,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACnB,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC9D,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,UAAU,GAAG,SAAS,MAAM,EAAE,CAAC;AAChG,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACnB,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/F,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;AACxC,EAAE,GAAG,EAAE,IAAI;AACX,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,QAAQ,EAAE,SAAS;AACrB,CAAC,CAAC,CAAC;AACH,MAAM,iBAAiB,CAAC;AACxB,EAAE,SAAS,GAAG,KAAK,CAAC;AACpB,EAAE,YAAY,GAAG,IAAI,CAAC;AACtB,EAAE,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACnC,GAAG;AACH,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE;AAC9B,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,MAAM,OAAO,YAAY,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,WAAW,CAAC,GAAG,EAAE;AACnB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClC,GAAG;AACH,EAAE,MAAM,CAAC,GAAG,EAAE;AACd,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AAClC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,UAAU,EAAE;AACvD,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AAClD,QAAQ,IAAI,KAAK,YAAY,gBAAgB,EAAE;AAC/C,UAAU,OAAO;AACjB,SAAS;AACT,OAAO;AACP,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACpC,KAAK;AACL,GAAG;AACH,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE;AACvB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvC,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC;AACzB,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AAC3B,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxD,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;AAChC,UAAU,QAAQ,GAAG,IAAI,CAAC;AAC1B,UAAU,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAC3B,SAAS;AACT,OAAO;AACP,KAAK,MAAM;AACX,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,KAAK,YAAY,gBAAgB,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,UAAU,EAAE;AAC5F,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvD,KAAK;AACL,GAAG;AACH,EAAE,GAAG,CAAC,GAAG,EAAE;AACX,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClC,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;AACxE,GAAG;AACH,EAAE,MAAM,CAAC,GAAG,EAAE;AACd,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAClD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG;AACH,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9B,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACzB,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,MAAM,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;AACpD,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC7B,MAAM,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,UAAU,EAAE;AACtD,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AAClC,MAAM,OAAO,iBAAiB,CAAC;AAC/B,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE;AACzB,MAAM,IAAI,GAAG,IAAI,cAAc,EAAE;AACjC,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC;AAC1B,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC5C,MAAM,MAAM,UAAU,GAAG,GAAG,YAAY,gBAAgB,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC;AAC/F,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAQ,SAAS,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;AAC1C,OAAO;AACP,KAAK;AACL,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;AACxC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE;AAC1B,UAAU,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG;AAC1B,MAAM,GAAG;AACT,MAAM,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE;AAC5B,MAAM,QAAQ;AACd,KAAK,GAAG,iBAAiB,CAAC;AAC1B,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB,IAAI,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AACnC,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AAChD,MAAM,IAAI,EAAE,KAAK,YAAY,gBAAgB,CAAC,EAAE;AAChD,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAC;AACnD,MAAM,IAAI,CAAC,WAAW,EAAE;AACxB,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM;AACZ,QAAQ,IAAI;AACZ,OAAO,GAAG,WAAW,CAAC;AACtB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACnC,QAAQ,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;AACzE,OAAO;AACP,MAAM,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;AAC5C,MAAM,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAC5D,QAAQ,IAAI,GAAG,KAAK,MAAM,EAAE;AAC5B,UAAU,SAAS;AACnB,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,UAAU,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;AAC/B,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACjC,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACrC,OAAO;AACP,KAAK;AACL,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,YAAY,EAAE;AAC/C,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,OAAO,IAAI,CAAC,YAAY,CAAC;AAC/B,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AAChD,MAAM,IAAI,EAAE,KAAK,YAAY,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE;AACpG,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,YAAY,GAAG;AAC/B,MAAM,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC;AACvB,MAAM,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACzB,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD,MAAM,sBAAsB,SAAS,iBAAiB,CAAC;AACvD,EAAE,aAAa,CAAC;AAChB,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,MAAM;AACV,MAAM,GAAG;AACT,MAAM,IAAI;AACV,MAAM,QAAQ;AACd,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG;AAClD,MAAM,QAAQ;AACd,KAAK,GAAG,IAAI,CAAC,CAAC;AACd,IAAI,IAAI,CAAC,aAAa,GAAG;AACzB,MAAM,GAAG,EAAE,KAAK;AAChB,MAAM,IAAI;AACV,MAAM,QAAQ;AACd,KAAK,CAAC;AACN,GAAG;AACH,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,WAAW,CAAC,8CAA8C,CAAC,CAAC;AAChE,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE;AACvC,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE;AACpB,MAAM,IAAI,EAAE,EAAE;AACd,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AAGD;AACA,MAAM,UAAU,CAAC;AACjB,EAAE,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3B,EAAE,WAAW,CAAC;AACd,IAAI,aAAa,GAAG,UAAU,CAAC,QAAQ;AACvC,IAAI,YAAY,GAAG,IAAI;AACvB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;AACnC,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;AACrC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC9B,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,iBAAiB,CAAC,cAAc,EAAE;AACpC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,oBAAoB,CAAC,cAAc,EAAE;AACvC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,UAAU,CAAC,IAAI,EAAE;AACnB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAChE,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/F,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC/C,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE,KAAK,GAAG;AACV,IAAI,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE;AACvD,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AACjC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC9B,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;AACjC,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,KAAK;AACL,GAAG;AACH,EAAE,MAAM,cAAc,CAAC;AACvB,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,YAAY;AAChB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,mEAAmE,CAAC,CAAC;AACvG,IAAI,IAAI,IAAI,CAAC,yBAAyB,EAAE;AACxC,MAAM,MAAM;AACZ,QAAQ,UAAU;AAClB,QAAQ,GAAG;AACX,QAAQ,KAAK;AACb,OAAO,GAAG,IAAI,CAAC;AACf,MAAM,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5D,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACvC,MAAM,IAAI;AACV,QAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC9B,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC1C,QAAQ,YAAY,GAAG,IAAI,CAAC,CAAC;AAC7B,OAAO,CAAC,MAAM;AACd,QAAQ,IAAI,CAAC,CAAC,yBAAyB,EAAE,IAAI,CAAC,YAAY,CAAC,oDAAoD,CAAC,CAAC,CAAC;AAClH,QAAQ,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAC5C,OAAO;AACP,MAAM,OAAO;AACb,KAAK;AACL,IAAI,WAAW,CAAC,+DAA+D,CAAC,CAAC;AACjF,GAAG;AACH,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE;AACnB,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACnE,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,MAAM,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,yBAAyB,EAAE;AACxC,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACzD,MAAM,IAAI,cAAc,EAAE;AAC1B,QAAQ,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAC/C,QAAQ,IAAI;AACZ,UAAU,MAAM,cAAc,CAAC,MAAM,CAAC;AACtC,SAAS,CAAC,OAAO,EAAE,EAAE;AACrB,UAAU,IAAI,CAAC,CAAC,qBAAqB,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,UAAU,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACtC,UAAU,MAAM,EAAE,CAAC;AACnB,SAAS;AACT,OAAO;AACP,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC3C,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5B,MAAM,IAAI,IAAI,CAAC,0BAA0B,EAAE;AAC3C,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI;AACnC,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClD,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH,EAAE,IAAI,yBAAyB,GAAG;AAClC,IAAI,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;AAC7C,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,2BAA2B,EAAE,QAAQ,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,IAAI,0BAA0B,GAAG;AACnC,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC;AAC1B,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,KAAK,MAAM,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,OAAO,SAAS,EAAE,SAAS,KAAK,QAAQ,IAAI,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;AAC3J,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,4BAA4B,EAAE,SAAS,CAAC,CAAC;AACjE,GAAG;AACH,EAAE,qBAAqB,CAAC,QAAQ,EAAE;AAClC,IAAI,SAAS,eAAe,GAAG;AAC/B,MAAM,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,2CAA2C,CAAC,CAAC;AACzE,MAAM,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1B,MAAM,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACpE,QAAQ,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC;AACrD,QAAQ,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC7C,OAAO;AACP,KAAK;AACL,IAAI,MAAM;AACV,MAAM,eAAe;AACrB,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,QAAQ,EAAE,eAAe;AAC/B,MAAM,QAAQ;AACd,KAAK,CAAC;AACN,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,GAAG,sEAAsE,CAAC,CAAC;AAC/lD,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;AACnD,GAAG;AACH,EAAE,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE;AACvC,IAAI,SAAS,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE;AACjC,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AACvJ,KAAK;AACL,IAAI,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AACrD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAClD,MAAM,OAAO,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;AACd,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1D,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AACrB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;AACnB,IAAI,SAAS,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE;AACzC,MAAM,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE;AACzB,QAAQ,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAC7C,QAAQ,QAAQ,EAAE,CAAC;AACnB,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,GAAG,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;AAChC,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/B,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACjC,QAAQ,QAAQ,EAAE,CAAC;AACnB,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AACrE,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;AAClC,IAAI,MAAM,cAAc,GAAG,GAAG,CAAC;AAC/B,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACrF,IAAI,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACnC,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC;AAClC,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AACpD,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAChE,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACtE,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE;AACnC,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,cAAc,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9E,KAAK;AACL,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1E,IAAI,MAAM,GAAG,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,IAAI,MAAM,IAAI,GAAG,CAAC,yBAAyB,EAAE,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3E,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AACpC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAChD,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACpC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;AAC3C,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE;AAC1D,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACxD,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AACnC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACpC,IAAI,WAAW,CAAC,cAAc,EAAE,MAAM;AACtC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;AACnB,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;AACzB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC,cAAc,EAAE;AAC9B,IAAI,eAAe,GAAG,KAAK;AAC3B,IAAI,WAAW,GAAG,IAAI;AACtB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9C,IAAI,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE;AACpC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe,KAAK,IAAI,CAAC;AACpD,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACpC,GAAG;AACH,EAAE,oBAAoB,GAAG;AACzB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC5C,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,cAAc,CAAC;AACvB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3B,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpE,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,GAAG;AAClB,QAAQ,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU;AAC3C,OAAO,CAAC;AACR,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AACxC,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACjE,OAAO;AACP,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjF,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;AAC9B,IAAI,OAAO,cAAc,CAAC;AAC1B,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC5C,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACnE,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3B,MAAM,IAAI,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,KAAK,MAAM;AACX,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/D,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AACxC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACzE,OAAO;AACP,MAAM,IAAI,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1F,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE;AACpC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;AACtD,MAAM,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI;AACR,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;AAC9D,KAAK,CAAC,OAAO,EAAE,EAAE;AACjB,MAAM,IAAI,CAAC,CAAC,wCAAwC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnD,MAAM,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AACpE,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG;AAC/C,MAAM,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;AACvB,QAAQ,KAAK,aAAa,CAAC,eAAe;AAC1C,UAAU;AACV,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,YAAY,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,aAAa,CAAC,OAAO;AAClC,UAAU;AACV,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,YAAY,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,aAAa,CAAC,OAAO;AAClC,UAAU;AACV,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,YAAY,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,aAAa,CAAC,kBAAkB;AAC7C,UAAU;AACV,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,YAAY,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,aAAa,CAAC,OAAO;AAClC,UAAU,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,UAAU,MAAM;AAChB,QAAQ,KAAK,aAAa,CAAC,IAAI;AAC/B,UAAU,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3C,UAAU,MAAM;AAChB,QAAQ,KAAK,aAAa,CAAC,KAAK;AAChC,UAAU,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,oDAAoD,CAAC,CAAC;AAC9F,UAAU,MAAM;AAChB,QAAQ,KAAK,aAAa,CAAC,SAAS;AACpC,UAAU;AACV,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,YAAY,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,aAAa,CAAC,SAAS;AACpC,UAAU;AACV,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,YAAY,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,WAAW;AACX,UAAU,MAAM;AAChB,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;AAC5E,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC7B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACzD,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AAGD;AACA;AACA,IAAI,QAAQ,EAAE;AACd,EAAE,IAAI,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AAClD,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC;AACxB,EAAE,MAAM,YAAY,GAAG,YAAY;AACnC,IAAI,MAAM,EAAE,GAAG,MAAM,8BAA8B,IAAI,CAAC;AACxD,MAAM,IAAI,GAAG,MAAM,8BAA8B,MAAM,CAAC;AACxD,MAAM,KAAK,GAAG,MAAM,8BAA8B,OAAO,CAAC;AAC1D,MAAM,GAAG,GAAG,MAAM,8BAA8B,KAAK,CAAC,CAAC;AACvD,IAAI,IAAI,MAAM,EAAE,MAAM,CAAC;AACvB,IAAI,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AAClC,MAAM,EAAE;AACR,MAAM,IAAI;AACV,MAAM,KAAK;AACX,MAAM,GAAG;AACT,MAAM,MAAM;AACZ,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC,CAAC;AACR,GAAG,CAAC;AACJ,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI;AAC7B,IAAI,UAAU,GAAG,GAAG,CAAC;AACrB,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC;AAChC,GAAG,EAAE,MAAM,IAAI;AACf,IAAI,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3B,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC;AAChC,GAAG,CAAC,CAAC;AACL,CAAC;AACD,MAAM,YAAY,CAAC;AACnB,EAAE,WAAW,OAAO,GAAG;AACvB,IAAI,OAAO,iBAAiB,CAAC,OAAO,CAAC;AACrC,GAAG;AACH,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE;AACnB,IAAI,OAAO,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,GAAG;AACH,CAAC;AACD,MAAM,oBAAoB,GAAG,UAAU,GAAG,EAAE;AAC5C,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC;AACF,MAAM,iBAAiB,SAAS,iBAAiB,CAAC,EAAE;AACpD,MAAM,iBAAiB,SAAS,iBAAiB,CAAC;AAClD,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9C,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9C,GAAG;AACH,CAAC;AACD,MAAM,qBAAqB,SAAS,qBAAqB,CAAC;AAC1D,EAAE,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE;AACnC,IAAI,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK;AACnD,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,eAAe;AACrB,KAAK,CAAC,CAAC,CAAC;AACR,GAAG;AACH,CAAC;AACD,MAAM,2BAA2B,SAAS,2BAA2B,CAAC;AACtE,EAAE,UAAU,CAAC,GAAG,EAAE;AAClB,IAAI,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG;AACH,CAAC;AAGD;AACA;AACA,MAAM,QAAQ,GAAG;AACjB,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,MAAM,EAAE,QAAQ;AAClB,EAAE,OAAO,EAAE,SAAS;AACpB,CAAC,CAAC;AACF,SAAS,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE;AACrC,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO;AACX,GAAG;AACH,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAC9B,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/C,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnB,CAAC;AACD,MAAM,kBAAkB,CAAC;AACzB,EAAE,UAAU,GAAG;AACf,IAAI,WAAW,CAAC,sCAAsC,CAAC,CAAC;AACxD,GAAG;AACH,CAAC;AACD,MAAM,yBAAyB,SAAS,kBAAkB,CAAC;AAC3D,EAAE,WAAW,CAAC,EAAE,EAAE;AAClB,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,GAAG;AACH,EAAE,eAAe,CAAC,GAAG,EAAE;AACvB,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;AAChC,MAAM,IAAI,GAAG,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;AACxC,MAAM,IAAI,GAAG,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9G,KAAK;AACL,IAAI,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC5C,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,QAAQ,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE;AACpE,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpH,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChE,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACjF,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;AACvC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxE,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;AACzB,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnE,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACvB,QAAQ,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,OAAO;AACP,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,MAAM,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACtD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;AACpB,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/C,MAAM,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACtC,KAAK,MAAM;AACX,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,CAAC;AACD,SAAS,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC7D,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;AAC/B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI;AACzB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC7B,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AACvC,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,GAAG,CAAC;AACb,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,GAAG,CAAC;AACb,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AACvC,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,GAAG,CAAC;AACb,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,GAAG,CAAC;AACb,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AACvC,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,GAAG,CAAC;AACb,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,GAAG,CAAC;AACb,GAAG;AACH,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;AAC7D,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;AACjE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;AAC7D,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;AACjE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;AAC7D,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;AACjE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;AAChB,IAAI,OAAO;AACX,GAAG;AACH,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC;AACxB,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AACxB,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACzB,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC;AACxB,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AACxB,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACzB,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC;AACxB,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AACxB,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACzB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1B,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;AACrC,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;AAChB,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAClD,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAClC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAClC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAClC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,CAAC;AACZ,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AAClB,QAAQ,CAAC,GAAG,CAAC,CAAC;AACd,OAAO,MAAM,IAAI,EAAE,KAAK,EAAE,EAAE;AAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC;AACd,OAAO,MAAM;AACb,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AACjC,OAAO;AACP,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAClC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAClC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;AAChB,MAAM,CAAC,GAAG,CAAC,CAAC;AACZ,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,CAAC,GAAG,CAAC,CAAC;AACZ,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5B,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7C,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAClC,IAAI,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,QAAQ,CAAC,GAAG,CAAC,CAAC;AACd,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACxB,QAAQ,CAAC,GAAG,CAAC,CAAC;AACd,OAAO;AACP,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACvB,KAAK;AACL,GAAG;AACH,CAAC;AACD,SAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AAC3C,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AACZ,EAAE,QAAQ,MAAM,CAAC,IAAI;AACrB,IAAI,KAAK,SAAS;AAClB,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACnD,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AAC9D,MAAM,MAAM,IAAI,GAAG,cAAc,GAAG,CAAC,CAAC;AACtC,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AACjC,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;AACnC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;AAC5C,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;AAC1H,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;AACpK,SAAS;AACT,OAAO;AACP,MAAM,MAAM;AACZ,IAAI,KAAK,WAAW;AACpB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAClD,QAAQ,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9F,OAAO;AACP,MAAM,MAAM;AACZ,IAAI;AACJ,MAAM,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACxC,GAAG;AACH,CAAC;AACD,MAAM,kBAAkB,SAAS,kBAAkB,CAAC;AACpD,EAAE,WAAW,CAAC,EAAE,EAAE;AAClB,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,GAAG;AACH,EAAE,iBAAiB,CAAC,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE;AACpE,IAAI,MAAM,cAAc,GAAG,GAAG,CAAC;AAC/B,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAClC,IAAI,MAAM,WAAW,GAAG,CAAC,CAAC;AAC1B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AAC7D,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AAC9D,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACnH,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACrH,IAAI,MAAM,MAAM,GAAG,WAAW,GAAG,KAAK,CAAC;AACvC,IAAI,MAAM,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC;AACzC,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,MAAM,OAAO,EAAE,CAAC,OAAO;AACvB,MAAM,OAAO,EAAE,CAAC,OAAO;AACvB,MAAM,MAAM,EAAE,CAAC,GAAG,MAAM;AACxB,MAAM,MAAM,EAAE,CAAC,GAAG,MAAM;AACxB,KAAK,CAAC;AACN,IAAI,MAAM,WAAW,GAAG,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC;AAChD,IAAI,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC;AAClD,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAClF,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;AACrC,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvD,IAAI,IAAI,eAAe,EAAE;AACzB,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;AAC9B,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAQ,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAQ,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3B,OAAO;AACP,KAAK;AACL,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxC,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACxD,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AACpC,IAAI,OAAO;AACX,MAAM,MAAM;AACZ,MAAM,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM;AAC7C,MAAM,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM;AAC7C,MAAM,MAAM;AACZ,MAAM,MAAM;AACZ,KAAK,CAAC;AACN,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC5C,IAAI,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,KAAK,CAAC;AACd,IAAI,IAAI,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE;AACvC,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3E,KAAK,MAAM;AACX,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACtE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACvB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5E,QAAQ,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,OAAO;AACP,KAAK;AACL,IAAI,MAAM,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;AAChJ,IAAI,IAAI,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE;AACvC,MAAM,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACvB,QAAQ,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,OAAO;AACP,KAAK;AACL,IAAI,GAAG,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAClF,IAAI,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC5E,IAAI,OAAO,GAAG,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACzE,GAAG;AACH,CAAC;AACD,MAAM,mBAAmB,SAAS,kBAAkB,CAAC;AACrD,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,SAAS,CAAC;AACrB,GAAG;AACH,CAAC;AACD,SAAS,iBAAiB,CAAC,EAAE,EAAE;AAC/B,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AACf,IAAI,KAAK,aAAa;AACtB,MAAM,OAAO,IAAI,yBAAyB,CAAC,EAAE,CAAC,CAAC;AAC/C,IAAI,KAAK,MAAM;AACf,MAAM,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,KAAK,OAAO;AAChB,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;AACvC,GAAG;AACH,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AACD,MAAM,SAAS,GAAG;AAClB,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,SAAS,EAAE,CAAC;AACd,CAAC,CAAC;AACF,MAAM,aAAa,CAAC;AACpB,EAAE,OAAO,gBAAgB,GAAG,IAAI,CAAC;AACjC,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,aAAa,EAAE;AACpE,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACnB,IAAI,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;AACvD,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACvC,GAAG;AACH,EAAE,mBAAmB,CAAC,KAAK,EAAE;AAC7B,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM,YAAY;AAClB,MAAM,SAAS;AACf,MAAM,UAAU;AAChB,MAAM,KAAK;AACX,MAAM,qBAAqB;AAC3B,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,IAAI;AACR,MAAM,KAAK;AACX,MAAM,KAAK;AACX,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,IAAI,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC;AACtC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACtB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AAC3B,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxE,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClF,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAI,IAAI,WAAW,GAAG,KAAK;AAC3B,MAAM,YAAY,GAAG,MAAM;AAC3B,MAAM,kBAAkB,GAAG,KAAK;AAChC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;AAC1D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;AAC1D,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;AAC3D,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;AAC7D,IAAI,IAAI,WAAW,IAAI,YAAY,EAAE;AACrC,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,KAAK,MAAM;AACX,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,WAAW,IAAI,aAAa,EAAE;AACtC,MAAM,YAAY,GAAG,KAAK,CAAC;AAC3B,KAAK,MAAM;AACX,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAC1F,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAC5F,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACtF,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;AACrC,IAAI,MAAM,QAAQ,GAAG,qBAAqB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACxE,IAAI,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AAC3C,IAAI,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACpE,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AACzD,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5C,IAAI,QAAQ,CAAC,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/D,IAAI,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC/C,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC1B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;AACrB,IAAI,IAAI,kBAAkB,IAAI,gBAAgB,EAAE;AAChD,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,MAAM,IAAI,kBAAkB,EAAE;AAC9B,QAAQ,WAAW,GAAG,KAAK,CAAC;AAC5B,OAAO;AACP,MAAM,IAAI,gBAAgB,EAAE;AAC5B,QAAQ,YAAY,GAAG,KAAK,CAAC;AAC7B,OAAO;AACP,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAC7F,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAC/F,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AAC/B,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AAC/B,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5F,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACzC,MAAM,MAAM,EAAE,GAAG,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACpE,MAAM,MAAM,EAAE,GAAG,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACnE,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;AACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;AACtC,UAAU,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3F,SAAS;AACT,OAAO;AACP,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,UAAU,CAAC,MAAM;AACjC,QAAQ,MAAM,EAAE,KAAK,CAAC,KAAK;AAC3B,QAAQ,MAAM,EAAE,KAAK,CAAC,KAAK;AAC3B,QAAQ,OAAO,EAAE,EAAE;AACnB,QAAQ,OAAO,EAAE,EAAE;AACnB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,OAAO;AACX,MAAM,MAAM,EAAE,SAAS,CAAC,MAAM;AAC9B,MAAM,MAAM,EAAE,IAAI,CAAC,KAAK;AACxB,MAAM,MAAM,EAAE,IAAI,CAAC,KAAK;AACxB,MAAM,OAAO,EAAE,EAAE;AACjB,MAAM,OAAO,EAAE,EAAE;AACjB,KAAK,CAAC;AACN,GAAG;AACH,EAAE,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE;AAC/C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;AAC7E,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;AACvC,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE;AACzB,MAAM,IAAI,GAAG,OAAO,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO;AACX,MAAM,KAAK;AACX,MAAM,IAAI;AACV,KAAK,CAAC;AACN,GAAG;AACH,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACrC,IAAI,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC;AAC9B,IAAI,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC;AAC/B,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACrD,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3F,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;AACpB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;AACvB,GAAG;AACH,EAAE,8BAA8B,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE;AAC7D,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG;AAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AACjC,IAAI,QAAQ,SAAS;AACrB,MAAM,KAAK,SAAS,CAAC,OAAO;AAC5B,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAC7B,QAAQ,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;AAC1C,QAAQ,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;AAC9C,QAAQ,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;AAC1C,QAAQ,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;AAC9C,QAAQ,MAAM;AACd,MAAM,KAAK,SAAS,CAAC,SAAS;AAC9B,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,QAAQ,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC;AACrC,QAAQ,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC;AACvC,QAAQ,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC;AACrC,QAAQ,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC;AACvC,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,MAAM,IAAI,WAAW,CAAC,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACtE,KAAK;AACL,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC5C,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC;AACzB,IAAI,IAAI,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE;AACvC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;AAC3D,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACvB,QAAQ,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,OAAO;AACP,KAAK;AACL,IAAI,MAAM,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACnE,IAAI,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;AAC1C,IAAI,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACpG,IAAI,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACtG,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/E,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACpC,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,CAAC;AAaD,SAAS,0BAA0B,CAAC;AACpC,EAAE,GAAG;AACL,EAAE,MAAM,GAAG,CAAC;AACZ,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,aAAa,GAAG,UAAU;AAC5B,EAAE,aAAa,GAAG,KAAK;AACvB,CAAC,EAAE;AACH,EAAE,MAAM,KAAK,GAAG,gBAAgB,CAAC,cAAc,GAAG,UAAU,GAAG,UAAU,CAAC;AAC1E,EAAE,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,aAAa,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACpG,EAAE,MAAM,aAAa,GAAG,KAAK,IAAI,CAAC,CAAC;AACnC,EAAE,MAAM,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC;AACnC,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;AAC/B,EAAE,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC;AAClB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,IAAI,KAAK,MAAM,GAAG,GAAG,MAAM,GAAG,aAAa,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE;AACrE,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AAC1D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AACrE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AACpE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AACnE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;AAClE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AACjE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;AAChE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC;AAC/D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,UAAU,GAAG,WAAW,CAAC;AAC9D,KAAK;AACL,IAAI,IAAI,cAAc,KAAK,CAAC,EAAE;AAC9B,MAAM,SAAS;AACf,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC;AAC1D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;AAC7C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,WAAW,CAAC;AACrE,KAAK;AACL,GAAG;AACH,EAAE,OAAO;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,GAAG,CAAC;AACJ,CAAC;AAyDD;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,SAAS,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE;AAC/C,EAAE,IAAI,GAAG,CAAC,gBAAgB,EAAE;AAC5B,IAAI,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AACjE,GAAG;AACH,EAAE,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC;AAChC,EAAE,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAC;AACtC,EAAE,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC;AACpC,EAAE,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;AAClC,EAAE,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC,SAAS,CAAC;AAC1C,EAAE,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC,SAAS,CAAC;AAC1C,EAAE,GAAG,CAAC,sBAAsB,GAAG,GAAG,CAAC,YAAY,CAAC;AAChD,EAAE,GAAG,CAAC,wBAAwB,GAAG,GAAG,CAAC,cAAc,CAAC;AACpD,EAAE,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC;AAChC,EAAE,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC;AACpC,EAAE,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC;AACpC,EAAE,GAAG,CAAC,uBAAuB,GAAG,GAAG,CAAC,aAAa,CAAC;AAClD,EAAE,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC;AAChC,EAAE,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC,SAAS,CAAC;AAC1C,EAAE,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC,SAAS,CAAC;AAC1C,EAAE,GAAG,CAAC,gBAAgB,GAAG,MAAM;AAC/B,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC;AAClC,IAAI,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC;AACxC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC;AACtC,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;AACpC,IAAI,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,mBAAmB,CAAC;AAC5C,IAAI,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,mBAAmB,CAAC;AAC5C,IAAI,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC;AAClD,IAAI,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,wBAAwB,CAAC;AACtD,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC;AAClC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC;AACtC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC;AACtC,IAAI,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,uBAAuB,CAAC;AACpD,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC;AAClC,IAAI,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,mBAAmB,CAAC;AAC5C,IAAI,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,mBAAmB,CAAC;AAC5C,IAAI,OAAO,GAAG,CAAC,gBAAgB,CAAC;AAChC,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,IAAI,GAAG,SAAS,OAAO,GAAG;AAChC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;AACnB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,OAAO,GAAG,SAAS,UAAU,GAAG;AACtC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;AACtB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,SAAS,GAAG,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9C,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,KAAK,GAAG,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACtC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,SAAS,GAAG,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1D,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,YAAY,GAAG,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChE,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,cAAc,GAAG,SAAS,iBAAiB,GAAG;AACpD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;AAC7B,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACpC,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,SAAS,CAAC,KAAK,EAAE;AACzC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,IAAI,GAAG,SAAS,SAAS,CAAC,IAAI,EAAE;AACtC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC/B,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC/B,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9D,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;AAC5C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,SAAS,GAAG,YAAY;AAC9B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;AACxB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/B,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,SAAS,GAAG,YAAY;AAC9B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;AACxB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/B,GAAG,CAAC;AACJ,CAAC;AACD,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC,aAAa,EAAE;AAC7B,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACvC,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC/B,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3D,KAAK,MAAM;AACX,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7D,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,WAAW,CAAC;AACvB,GAAG;AACH,EAAE,MAAM,CAAC,EAAE,EAAE;AACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,KAAK,GAAG;AACV,IAAI,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AACjC,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACzC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9C,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,CAAC;AACD,SAAS,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AACnG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACxD,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1B,IAAI,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;AAC/B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;AAC/B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AACzC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AACzC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACnE,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACzE,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACzC,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1B,IAAI,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;AAC/B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;AAC/B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AACzC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AACzC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACnE,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACzE,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACzC,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5E,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;AAC1C,CAAC;AACD,SAAS,iBAAiB,CAAC,OAAO,EAAE;AACpC,EAAE,MAAM;AACR,IAAI,KAAK;AACT,IAAI,MAAM;AACV,GAAG,GAAG,OAAO,CAAC;AACd,EAAE,IAAI,KAAK,GAAG,mBAAmB,IAAI,MAAM,GAAG,mBAAmB,EAAE;AACnE,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACtC,EAAE,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxF,EAAE,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;AAC3B,EAAE,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACf,EAAE,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC;AAC9C,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,EAAE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;AACnC,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC;AACnB,IAAI,OAAO,IAAI,GAAG,CAAC,EAAE;AACrB,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;AAC1C,MAAM,IAAI,KAAK,CAAC,CAAC;AACjB,KAAK;AACL,GAAG;AACH,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,GAAG,GAAG,CAAC,CAAC;AACV,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACvB,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClB,IAAI,EAAE,KAAK,CAAC;AACZ,GAAG;AACH,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE;AACrC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,MAAM,EAAE,KAAK,CAAC;AACd,KAAK;AACL,IAAI,GAAG,EAAE,CAAC;AACV,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACvB,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClB,IAAI,EAAE,KAAK,CAAC;AACZ,GAAG;AACH,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/B,IAAI,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC;AACvB,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;AACpB,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5C,MAAM,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrC,MAAM,EAAE,KAAK,CAAC;AACd,KAAK;AACL,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAChC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACtF,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAQ,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1C,QAAQ,EAAE,KAAK,CAAC;AAChB,OAAO;AACP,MAAM,GAAG,EAAE,CAAC;AACZ,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5C,MAAM,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,MAAM,EAAE,KAAK,CAAC;AACd,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,sBAAsB,EAAE;AACxC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH,EAAE,GAAG,GAAG,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;AAChC,EAAE,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;AAClB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACvB,IAAI,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB,IAAI,EAAE,KAAK,CAAC;AACZ,GAAG;AACH,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE;AACrC,MAAM,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,MAAM,EAAE,KAAK,CAAC;AACd,KAAK;AACL,IAAI,GAAG,EAAE,CAAC;AACV,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACvB,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACvB,IAAI,EAAE,KAAK,CAAC;AACZ,GAAG;AACH,EAAE,IAAI,KAAK,GAAG,sBAAsB,EAAE;AACtC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxE,EAAE,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;AAC5B,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AACvB,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1B,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAClC,MAAM,CAAC,EAAE,CAAC;AACV,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE;AACnB,MAAM,SAAS;AACf,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;AAC/B,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC;AACjB,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,IAAI,GAAG;AACP,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/B,MAAM,GAAG;AACT,QAAQ,CAAC,IAAI,IAAI,CAAC;AAClB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAC3B,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACjC,QAAQ,IAAI,GAAG,EAAE,CAAC;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,OAAO,MAAM;AACb,QAAQ,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AAC3C,OAAO;AACP,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACtB,QAAQ,EAAE,KAAK,CAAC;AAChB,OAAO;AACP,KAAK,QAAQ,EAAE,KAAK,CAAC,EAAE;AACvB,IAAI,EAAE,CAAC,CAAC;AACR,GAAG;AACH,EAAE,IAAI,GAAG,IAAI,CAAC;AACd,EAAE,MAAM,GAAG,IAAI,CAAC;AAChB,EAAE,MAAM,WAAW,GAAG,UAAU,CAAC,EAAE;AACnC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACb,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACpC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;AAClB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AAChB,GAAG,CAAC;AACJ,EAAE,OAAO,WAAW,CAAC;AACrB,CAAC;AACD,MAAM,gBAAgB,CAAC;AACvB,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC7B,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC;AACtC,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC;AAC3C,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,CAAC;AACpD,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,IAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AACjC,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AAC/B,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,KAAK,GAAG;AACV,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACzC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;AACxB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,GAAG;AACH,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE;AACpC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,GAAG;AACH,EAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE;AACpC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACpD,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC7D,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAClE,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,GAAG;AACH,EAAE,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE;AAC7C,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,GAAG;AACH,EAAE,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;AAC3E,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/E,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC1C,GAAG;AACH,EAAE,kBAAkB,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE;AACjE,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,IAAI,IAAI,QAAQ,KAAK,QAAQ,CAAC,MAAM,EAAE;AACtC,MAAM,IAAI,CAAC,SAAS,EAAE;AACtB,QAAQ,WAAW,CAAC,6CAA6C,CAAC,CAAC;AACnE,OAAO;AACP,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACvD,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACvD,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;AAC3B,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;AAC3B,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;AAC3B,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;AAC3B,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC9E,IAAI,IAAI,CAAC,sBAAsB,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;AAClC,GAAG;AACH,EAAE,sBAAsB,CAAC,GAAG,EAAE;AAC9B,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACvB,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;AACzB,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;AACzB,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAClB,GAAG;AACH,EAAE,yBAAyB,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE;AACxE,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AACtF,GAAG;AACH,CAAC;AACD,SAAS,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE;AAC1C,EAAE,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,OAAO,YAAY,SAAS,EAAE;AACxE,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,IAAI,OAAO;AACX,GAAG;AACH,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;AAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1B,EAAE,MAAM,kBAAkB,GAAG,MAAM,GAAG,iBAAiB,CAAC;AACxD,EAAE,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,kBAAkB,IAAI,iBAAiB,CAAC;AACvE,EAAE,MAAM,WAAW,GAAG,kBAAkB,KAAK,CAAC,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;AAC7E,EAAE,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACrE,EAAE,IAAI,MAAM,GAAG,CAAC;AAChB,IAAI,OAAO,CAAC;AACZ,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;AAC3B,EAAE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;AACjC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,gBAAgB,CAAC;AAC9C,EAAE,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,EAAE;AACtD,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;AACrC,IAAI,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;AACzE,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3C,IAAI,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC;AAC7B,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,cAAc,GAAG,UAAU,GAAG,UAAU,CAAC;AAC5E,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AACtC,MAAM,eAAe,GAAG,CAAC,GAAG,UAAU,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAChF,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAC3C,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,MAAM,IAAI,GAAG,OAAO,GAAG,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AACrE,QAAQ,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC;AACrB,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC;AACxB,QAAQ,OAAO,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE;AACzC,UAAU,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAClC,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC;AAC5D,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC;AAC3D,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC;AAC3D,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC;AAC3D,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AAC1D,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AAC1D,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AAC1D,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AAC1D,SAAS;AACT,QAAQ,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AAC9B,UAAU,IAAI,IAAI,KAAK,CAAC,EAAE;AAC1B,YAAY,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACpC,YAAY,IAAI,GAAG,GAAG,CAAC;AACvB,WAAW;AACX,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAC7D,UAAU,IAAI,KAAK,CAAC,CAAC;AACrB,SAAS;AACT,OAAO;AACP,MAAM,OAAO,OAAO,GAAG,gBAAgB,EAAE;AACzC,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAC9B,OAAO;AACP,MAAM,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC;AAC/D,KAAK;AACL,GAAG,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EAAE;AACzD,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,gBAAgB,GAAG,KAAK,GAAG,iBAAiB,GAAG,CAAC,CAAC;AACrD,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAChE,MAAM,MAAM,IAAI,gBAAgB,CAAC;AACjC,MAAM,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,MAAM,CAAC,IAAI,iBAAiB,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,WAAW,EAAE;AACzB,MAAM,gBAAgB,GAAG,KAAK,GAAG,kBAAkB,GAAG,CAAC,CAAC;AACxD,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAChE,MAAM,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,GAAG,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,SAAS,EAAE;AACxD,IAAI,eAAe,GAAG,iBAAiB,CAAC;AACxC,IAAI,gBAAgB,GAAG,KAAK,GAAG,eAAe,CAAC;AAC/C,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AACtC,MAAM,IAAI,CAAC,IAAI,UAAU,EAAE;AAC3B,QAAQ,eAAe,GAAG,kBAAkB,CAAC;AAC7C,QAAQ,gBAAgB,GAAG,KAAK,GAAG,eAAe,CAAC;AACnD,OAAO;AACP,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,KAAK,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,GAAG;AACvC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC;AAC9B,OAAO;AACP,MAAM,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC;AAC/D,KAAK;AACL,GAAG,MAAM;AACT,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvD,GAAG;AACH,CAAC;AACD,SAAS,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE;AAC1C,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,IAAI,OAAO;AACX,GAAG;AACH,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;AAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1B,EAAE,MAAM,kBAAkB,GAAG,MAAM,GAAG,iBAAiB,CAAC;AACxD,EAAE,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,kBAAkB,IAAI,iBAAiB,CAAC;AACvE,EAAE,MAAM,WAAW,GAAG,kBAAkB,KAAK,CAAC,GAAG,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;AAC7E,EAAE,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACrE,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;AAC3B,EAAE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;AACjC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AACxC,IAAI,MAAM,eAAe,GAAG,CAAC,GAAG,UAAU,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AACpF,IAAI,CAAC;AACL,MAAM,MAAM;AACZ,KAAK,GAAG,0BAA0B,CAAC;AACnC,MAAM,GAAG;AACT,MAAM,MAAM;AACZ,MAAM,IAAI;AACV,MAAM,KAAK;AACX,MAAM,MAAM,EAAE,eAAe;AAC7B,MAAM,aAAa,EAAE,CAAC;AACtB,KAAK,CAAC,EAAE;AACR,IAAI,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC;AAC7D,GAAG;AACH,CAAC;AACD,SAAS,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE;AAC1C,EAAE,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC7K,EAAE,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AACrC,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE;AAC3C,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC9C,KAAK;AACL,GAAG;AACH,EAAE,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,EAAE;AAC3C,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AACjD,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;AACtD,GAAG;AACH,CAAC;AACD,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,EAAE,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AAC9C,EAAE,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC3B,EAAE,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;AACtB,EAAE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;AACpB,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;AACvB,EAAE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;AACzB,EAAE,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC;AACtB,EAAE,GAAG,CAAC,wBAAwB,GAAG,aAAa,CAAC;AAC/C,EAAE,GAAG,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAC/B,EAAE,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE;AACrC,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACxB,IAAI,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,IAAI,MAAM;AACV,MAAM,MAAM;AACZ,KAAK,GAAG,GAAG,CAAC;AACZ,IAAI,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,EAAE,EAAE;AAC5C,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1B,KAAK;AACL,GAAG;AACH,CAAC;AACD,SAAS,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE;AAC1D,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;AAC9D,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,gBAAgB,IAAI,CAAC,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC;AACvG,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;AAC5D,CAAC;AACD,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpD,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACrD,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE;AACzE,IAAI,qBAAqB;AACzB,IAAI,kBAAkB,GAAG,IAAI;AAC7B,GAAG,EAAE,mBAAmB,EAAE,UAAU,EAAE;AACtC,IAAI,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;AACzB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvF,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC/B,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACpB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACvC,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACvC,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AACjC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B,IAAI,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,IAAI,EAAE,CAAC;AACvD,IAAI,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;AACvD,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;AACpC,IAAI,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AACnD,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,IAAI,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AAC3C,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;AACvC,GAAG;AACH,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE;AACnC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrF,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG;AACH,EAAE,YAAY,CAAC;AACf,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,YAAY,GAAG,KAAK;AACxB,IAAI,UAAU,GAAG,IAAI;AACrB,GAAG,EAAE;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACxC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1C,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9C,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,UAAU,IAAI,SAAS,CAAC;AACjD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,cAAc,CAAC;AACxC,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5F,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC;AACnC,MAAM,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC;AACxD,MAAM,IAAI,CAAC,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AACvC,MAAM,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;AACxC,IAAI,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,mBAAmB,CAAC,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,EAAE;AAClF,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;AAC7C,IAAI,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,IAAI,IAAI,CAAC,GAAG,iBAAiB,IAAI,CAAC,CAAC;AACnC,IAAI,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;AAC1C,IAAI,IAAI,YAAY,KAAK,CAAC,EAAE;AAC5B,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL,IAAI,MAAM,eAAe,GAAG,YAAY,GAAG,CAAC,GAAG,eAAe,IAAI,OAAO,gBAAgB,KAAK,UAAU,CAAC;AACzG,IAAI,MAAM,OAAO,GAAG,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,CAAC,CAAC;AACtE,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,OAAO,IAAI,EAAE;AACjB,MAAM,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,OAAO,CAAC,cAAc,EAAE;AACjE,QAAQ,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC7C,QAAQ,OAAO,CAAC,CAAC;AACjB,OAAO;AACP,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACxB,MAAM,IAAI,IAAI,KAAK,GAAG,CAAC,UAAU,EAAE;AACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,OAAO,MAAM;AACb,QAAQ,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;AAC7C,UAAU,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC;AACzE,UAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACvC,YAAY,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACrD,YAAY,OAAO,CAAC,CAAC;AACrB,WAAW;AACX,SAAS;AACT,OAAO;AACP,MAAM,CAAC,EAAE,CAAC;AACV,MAAM,IAAI,CAAC,KAAK,YAAY,EAAE;AAC9B,QAAQ,OAAO,CAAC,CAAC;AACjB,OAAO;AACP,MAAM,IAAI,eAAe,IAAI,EAAE,KAAK,GAAG,eAAe,EAAE;AACxD,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE;AAClC,UAAU,gBAAgB,EAAE,CAAC;AAC7B,UAAU,OAAO,CAAC,CAAC;AACnB,SAAS;AACT,QAAQ,KAAK,GAAG,CAAC,CAAC;AAClB,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,oBAAoB,GAAG;AACzB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AACvD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACvB,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAChC,MAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;AACnC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACpC,KAAK;AACL,GAAG;AACH,EAAE,UAAU,GAAG;AACf,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAChC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAChC,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE;AACzD,MAAM,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;AAC3C,QAAQ,IAAI,OAAO,iBAAiB,KAAK,WAAW,IAAI,MAAM,YAAY,iBAAiB,EAAE;AAC7F,UAAU,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,SAAS;AACT,OAAO;AACP,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAClH,MAAM,IAAI,WAAW,KAAK,MAAM,EAAE;AAClC,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5C,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;AACtC,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,WAAW,CAAC,GAAG,EAAE,gBAAgB,EAAE;AACrC,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAC5B,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC9B,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvF,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxF,IAAI,IAAI,UAAU,GAAG,KAAK;AAC1B,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,IAAI,IAAI,WAAW,GAAG,WAAW,CAAC;AAClC,IAAI,IAAI,SAAS,EAAE,MAAM,CAAC;AAC1B,IAAI,OAAO,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE;AACnF,MAAM,IAAI,QAAQ,GAAG,UAAU;AAC/B,QAAQ,SAAS,GAAG,WAAW,CAAC;AAChC,MAAM,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE;AAC5C,QAAQ,QAAQ,GAAG,UAAU,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AACzG,QAAQ,UAAU,IAAI,UAAU,GAAG,QAAQ,CAAC;AAC5C,OAAO;AACP,MAAM,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE;AAC9C,QAAQ,SAAS,GAAG,WAAW,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC7G,QAAQ,WAAW,IAAI,WAAW,GAAG,SAAS,CAAC;AAC/C,OAAO;AACP,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClF,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;AACjC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACtF,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;AAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,WAAW,GAAG,WAAW,KAAK,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAC5E,KAAK;AACL,IAAI,OAAO;AACX,MAAM,GAAG;AACT,MAAM,UAAU;AAChB,MAAM,WAAW;AACjB,KAAK,CAAC;AACN,GAAG;AACH,EAAE,iBAAiB,CAAC,GAAG,EAAE;AACzB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,GAAG,CAAC;AACZ,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7C,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACnD,IAAI,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACtD,IAAI,IAAI,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;AAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE;AACnD,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAC9G,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClD,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,QAAQ,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACnD,OAAO;AACP,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9C,MAAM,IAAI,WAAW,IAAI,CAAC,aAAa,EAAE;AACzC,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7G,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7G,QAAQ,OAAO;AACf,UAAU,MAAM,EAAE,WAAW;AAC7B,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB,SAAS,CAAC;AACV,OAAO;AACP,MAAM,MAAM,GAAG,WAAW,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9E,MAAM,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9F,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1E,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;AAC1G,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAC5F,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACvC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC;AACzB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC;AACzB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AAC1C,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;AACxF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;AAC1B,MAAM,IAAI,KAAK,IAAI,aAAa,EAAE;AAClC,QAAQ,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpC,OAAO;AACP,KAAK;AACL,IAAI,OAAO,CAAC,qBAAqB,GAAG,wBAAwB,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;AAC5G,IAAI,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACtG,IAAI,OAAO,CAAC,wBAAwB,GAAG,WAAW,CAAC;AACnD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1G,IAAI,OAAO,CAAC,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAC5G,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1C,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE;AACjC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO;AACX,MAAM,MAAM,EAAE,UAAU,CAAC,MAAM;AAC/B,MAAM,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,MAAM,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,KAAK,CAAC;AACN,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC1C,MAAM,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/B,GAAG;AACH,EAAE,UAAU,CAAC,KAAK,EAAE;AACpB,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC,GAAG;AACH,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE;AAChC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE;AACvC,MAAM,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACjC,MAAM,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC;AACrC,KAAK;AACL,GAAG;AACH,EAAE,kBAAkB,CAAC,MAAM,EAAE,EAAE;AAC/B,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE;AAC1B,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AACvC,MAAM,QAAQ,GAAG;AACjB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACnC,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACjC,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAClC,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpC,UAAU,MAAM;AAChB,QAAQ,KAAK,GAAG;AAChB,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACzC,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAClC,UAAU,MAAM;AAChB,QAAQ,KAAK,MAAM;AACnB,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3C,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;AACzC,UAAU,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;AACvC,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,CAAC,GAAG,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACpD,UAAU,MAAM;AAChB,QAAQ,KAAK,OAAO;AACpB,UAAU,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACnE,UAAU,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAChC,UAAU,IAAI,CAAC,eAAe,EAAE,CAAC;AACjC,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5F,UAAU,MAAM;AAChB,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACzC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE;AAClD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5B,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,WAAW,EAAE;AACzD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,MAAM,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAC7C,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/C,IAAI,MAAM,OAAO,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;AACrD,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1F,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC;AACjC,IAAI,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC;AACrC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAChE,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACzC,IAAI,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3B,MAAM,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;AAChC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;AACjC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,GAAG;AACH,EAAE,OAAO,CAAC,QAAQ,EAAE;AACpB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvE,KAAK,MAAM;AACX,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAC3C,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5E,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACvB,GAAG;AACH,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC/C,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrC,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrC,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;AAClD,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;AACnD,IAAI,IAAI,UAAU,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE;AAC/C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3L,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AACf,IAAI,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;AACxB,IAAI,GAAG,CAAC,wBAAwB,GAAG,aAAa,CAAC;AACjD,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AAClB,GAAG;AACH,EAAE,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE;AAC9I,IAAI,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;AACpC,IAAI,IAAI,KAAK,GAAG,YAAY,GAAG,WAAW,CAAC;AAC3C,IAAI,IAAI,KAAK,GAAG,YAAY,GAAG,WAAW,CAAC;AAC3C,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE;AAC5G,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACrF,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC,QAAQ,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAClD,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACzC,UAAU,GAAG,CAAC,wBAAwB,GAAG,kBAAkB,CAAC;AAC5D,UAAU,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC;AACzD,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,UAAU,GAAG,CAAC,wBAAwB,GAAG,aAAa,CAAC;AACvD,SAAS;AACT,QAAQ,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,QAAQ,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;AAC1B,OAAO,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;AACvB,QAAQ,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;AAChC,QAAQ,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,QAAQ,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/C,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAQ,OAAO,CAAC,wBAAwB,GAAG,kBAAkB,CAAC;AAC9D,QAAQ,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC3D,QAAQ,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACtD,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1B,OAAO;AACP,KAAK;AACL,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;AACpB,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;AAC7B,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,OAAO,KAAK,OAAO,IAAI,WAAW,EAAE;AAC5C,MAAM,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AACvE,KAAK,MAAM,IAAI,OAAO,KAAK,YAAY,EAAE;AACzC,MAAM,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAC5E,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;AAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACzD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,IAAI,QAAQ,CAAC,wBAAwB,GAAG,gBAAgB,CAAC;AACzD,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3G,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAChD,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC/B,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1D,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC3C,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5B,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;AACpC,QAAQ,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AAC3B,OAAO;AACP,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAC7B,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9B,MAAM,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AAC7C,KAAK;AACL,GAAG;AACH,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AAC3C,GAAG;AACH,EAAE,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;AACnC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;AACrB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACpB,IAAI,IAAI,MAAM,EAAE,MAAM,CAAC;AACvB,IAAI,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACtD,IAAI,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7I,IAAI,MAAM,eAAe,GAAG,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACrE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACzD,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACxB,QAAQ,KAAK,GAAG,CAAC,SAAS;AAC1B,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,UAAU,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,UAAU,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACnC,UAAU,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAC/B,UAAU,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;AAChC,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,UAAU,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;AAC3C,YAAY,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/B,WAAW,MAAM;AACjB,YAAY,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9B,YAAY,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/B,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9B,WAAW;AACX,UAAU,IAAI,CAAC,eAAe,EAAE;AAChC,YAAY,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvE,WAAW;AACX,UAAU,GAAG,CAAC,SAAS,EAAE,CAAC;AAC1B,UAAU,MAAM;AAChB,QAAQ,KAAK,GAAG,CAAC,MAAM;AACvB,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,UAAU,IAAI,CAAC,eAAe,EAAE;AAChC,YAAY,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,GAAG,CAAC,MAAM;AACvB,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,UAAU,IAAI,CAAC,eAAe,EAAE;AAChC,YAAY,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,GAAG,CAAC,OAAO;AACxB,UAAU,MAAM,GAAG,CAAC,CAAC;AACrB,UAAU,MAAM,GAAG,CAAC,CAAC;AACrB,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,UAAU,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,UAAU,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;AACjJ,UAAU,CAAC,IAAI,CAAC,CAAC;AACjB,UAAU,MAAM;AAChB,QAAQ,KAAK,GAAG,CAAC,QAAQ;AACzB,UAAU,MAAM,GAAG,CAAC,CAAC;AACrB,UAAU,MAAM,GAAG,CAAC,CAAC;AACrB,UAAU,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClF,UAAU,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;AACjJ,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,UAAU,CAAC,IAAI,CAAC,CAAC;AACjB,UAAU,MAAM;AAChB,QAAQ,KAAK,GAAG,CAAC,QAAQ;AACzB,UAAU,MAAM,GAAG,CAAC,CAAC;AACrB,UAAU,MAAM,GAAG,CAAC,CAAC;AACrB,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,UAAU,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,UAAU,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;AAC7H,UAAU,CAAC,IAAI,CAAC,CAAC;AACjB,UAAU,MAAM;AAChB,QAAQ,KAAK,GAAG,CAAC,SAAS;AAC1B,UAAU,GAAG,CAAC,SAAS,EAAE,CAAC;AAC1B,UAAU,MAAM;AAChB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,eAAe,EAAE;AACzB,MAAM,OAAO,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;AACzB,GAAG;AACH,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,EAAE;AAC7B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACjD,IAAI,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAC/C,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,MAAM,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,EAAE,UAAU,EAAE;AACtE,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;AACnB,QAAQ,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,0BAA0B,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9G,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACrC,QAAQ,GAAG,CAAC,OAAO,EAAE,CAAC;AACtB,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,OAAO;AACP,KAAK;AACL,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC;AACjE,KAAK;AACL,IAAI,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7C,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,GAAG;AACH,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE;AAC3B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7C,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACnD,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC;AAC5B,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AACjB,MAAM,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,0BAA0B,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtG,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC;AAC/D,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,SAAS,KAAK,IAAI,EAAE;AACnD,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;AAC9B,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AACnC,OAAO,MAAM;AACb,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;AACnB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAClC,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,GAAG;AACH,EAAE,UAAU,GAAG;AACf,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,GAAG;AACH,EAAE,iBAAiB,GAAG;AACtB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACnC,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;AAC/B,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,eAAe,CAAC;AAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACxC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC;AACtB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AACf,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;AACpB,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC9B,MAAM,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AAClB,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AACf,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;AACpB,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC;AACjC,GAAG;AACH,EAAE,cAAc,CAAC,OAAO,EAAE;AAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;AACvC,GAAG;AACH,EAAE,cAAc,CAAC,OAAO,EAAE;AAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;AACvC,GAAG;AACH,EAAE,SAAS,CAAC,KAAK,EAAE;AACnB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;AAC1C,GAAG;AACH,EAAE,UAAU,CAAC,OAAO,EAAE;AACtB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC;AACpC,GAAG;AACH,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE;AAC7B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACrD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,oBAAoB,CAAC;AACpE,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AACpE,MAAM,IAAI,CAAC,+BAA+B,GAAG,WAAW,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE;AAClB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC;AACnB,MAAM,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;AACjC,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;AAChC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AACjC,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE;AAC7B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC;AACpD,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AACzF,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;AACvB,MAAM,IAAI,GAAG,KAAK,CAAC;AACnB,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE;AAC7B,MAAM,IAAI,GAAG,MAAM,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACxD,IAAI,IAAI,eAAe,GAAG,IAAI,CAAC;AAC/B,IAAI,IAAI,IAAI,GAAG,aAAa,EAAE;AAC9B,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,KAAK,MAAM,IAAI,IAAI,GAAG,aAAa,EAAE;AACrC,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,GAAG,eAAe,CAAC;AACxD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzE,GAAG;AACH,EAAE,oBAAoB,CAAC,IAAI,EAAE;AAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC1C,GAAG;AACH,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AACjC,GAAG;AACH,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACjB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,GAAG;AACH,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE;AAC/C,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC9B,IAAI,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;AACxD,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;AAC9D,IAAI,MAAM,cAAc,GAAG,iBAAiB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC;AAClF,IAAI,MAAM,cAAc,GAAG,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AACtF,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACjE,IAAI,IAAI,SAAS,CAAC;AAClB,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,cAAc,IAAI,WAAW,EAAE;AAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,WAAW,EAAE;AAC7C,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AACjB,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC;AACtB,MAAM,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC/B,MAAM,IAAI,gBAAgB,EAAE;AAC5B,QAAQ,GAAG,CAAC,YAAY,CAAC,GAAG,gBAAgB,CAAC,CAAC;AAC9C,OAAO;AACP,MAAM,IAAI,cAAc,KAAK,iBAAiB,CAAC,IAAI,IAAI,cAAc,KAAK,iBAAiB,CAAC,WAAW,EAAE;AACzG,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;AACnB,OAAO;AACP,MAAM,IAAI,cAAc,KAAK,iBAAiB,CAAC,MAAM,IAAI,cAAc,KAAK,iBAAiB,CAAC,WAAW,EAAE;AAC3G,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;AACrB,OAAO;AACP,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;AACpB,KAAK,MAAM;AACX,MAAM,IAAI,cAAc,KAAK,iBAAiB,CAAC,IAAI,IAAI,cAAc,KAAK,iBAAiB,CAAC,WAAW,EAAE;AACzG,QAAQ,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,OAAO;AACP,MAAM,IAAI,cAAc,KAAK,iBAAiB,CAAC,MAAM,IAAI,cAAc,KAAK,iBAAiB,CAAC,WAAW,EAAE;AAC3G,QAAQ,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,OAAO;AACP,KAAK;AACL,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,KAAK,EAAE,CAAC;AACjD,MAAM,KAAK,CAAC,IAAI,CAAC;AACjB,QAAQ,SAAS,EAAE,mBAAmB,CAAC,GAAG,CAAC;AAC3C,QAAQ,CAAC;AACT,QAAQ,CAAC;AACT,QAAQ,QAAQ;AAChB,QAAQ,SAAS;AACjB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH,EAAE,IAAI,uBAAuB,GAAG;AAChC,IAAI,MAAM;AACV,MAAM,OAAO,EAAE,GAAG;AAClB,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,yBAAyB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACzE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACtB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7B,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;AACrD,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;AACxC,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE,QAAQ,CAAC,MAAM,EAAE;AACnB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC9B,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,MAAM,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACtC,IAAI,IAAI,QAAQ,KAAK,CAAC,EAAE;AACxB,MAAM,OAAO,SAAS,CAAC;AACvB,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAChD,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AAC5C,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AAC5C,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAChD,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC;AAC1D,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACvC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACnC,IAAI,MAAM,UAAU,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,IAAI,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AACjD,IAAI,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACjI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AACf,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3D,IAAI,IAAI,aAAa,GAAG,CAAC,EAAE;AAC3B,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK,MAAM;AACX,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,gBAAgB,CAAC;AACzB,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE;AAC7B,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AACjB,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,0BAA0B,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9G,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;AACpB,MAAM,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AACtC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC;AAC1C,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE;AACxC,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC;AAC5F,MAAM,IAAI,cAAc,KAAK,iBAAiB,CAAC,MAAM,IAAI,cAAc,KAAK,iBAAiB,CAAC,WAAW,EAAE;AAC3G,QAAQ,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/C,OAAO;AACP,KAAK,MAAM;AACX,MAAM,SAAS,IAAI,KAAK,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,aAAa,KAAK,GAAG,EAAE;AAC/B,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAC9C,MAAM,SAAS,IAAI,aAAa,CAAC;AACjC,KAAK;AACL,IAAI,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AAC9B,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACjC,MAAM,MAAM,KAAK,GAAG,EAAE,CAAC;AACvB,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB,MAAM,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAClC,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClC,QAAQ,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;AAC7B,OAAO;AACP,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,iBAAiB,GAAG,UAAU,CAAC;AAC1D,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;AACpB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,MAAM,OAAO,SAAS,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,MAAM,CAAC,CAAC;AACR,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE;AACvC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,CAAC,IAAI,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;AAClD,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,IAAI,aAAa,GAAG,KAAK,CAAC;AAChC,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,GAAG,CAAC,IAAI,WAAW,CAAC;AACtE,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;AACvC,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,MAAM,IAAI,OAAO,EAAE,OAAO,CAAC;AAC3B,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC9B,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC;AACzD,QAAQ,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,iBAAiB,CAAC;AACnF,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;AAClD,QAAQ,KAAK,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC9C,QAAQ,OAAO,GAAG,EAAE,GAAG,aAAa,CAAC;AACrC,QAAQ,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,aAAa,CAAC;AAC3C,OAAO,MAAM;AACb,QAAQ,OAAO,GAAG,CAAC,GAAG,aAAa,CAAC;AACpC,QAAQ,OAAO,GAAG,CAAC,CAAC;AACpB,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG,CAAC,EAAE;AACvC,QAAQ,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,aAAa,CAAC;AACjG,QAAQ,IAAI,KAAK,GAAG,aAAa,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACnE,UAAU,MAAM,eAAe,GAAG,KAAK,GAAG,aAAa,CAAC;AACxD,UAAU,aAAa,GAAG,IAAI,CAAC;AAC/B,UAAU,GAAG,CAAC,IAAI,EAAE,CAAC;AACrB,UAAU,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AACxC,UAAU,OAAO,IAAI,eAAe,CAAC;AACrC,SAAS,MAAM,IAAI,KAAK,KAAK,aAAa,EAAE;AAC5C,UAAU,OAAO,IAAI,CAAC,KAAK,GAAG,aAAa,IAAI,IAAI,GAAG,QAAQ,GAAG,aAAa,CAAC;AAC/E,SAAS;AACT,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;AACvE,QAAQ,IAAI,cAAc,IAAI,CAAC,MAAM,EAAE;AACvC,UAAU,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACpD,SAAS,MAAM;AACf,UAAU,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACxE,UAAU,IAAI,MAAM,EAAE;AACtB,YAAY,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC;AACvF,YAAY,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC;AACvF,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAC5F,WAAW;AACX,SAAS;AACT,OAAO;AACP,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,iBAAiB,GAAG,OAAO,GAAG,aAAa,GAAG,KAAK,GAAG,iBAAiB,GAAG,OAAO,GAAG,aAAa,CAAC;AAC7I,MAAM,CAAC,IAAI,SAAS,CAAC;AACrB,MAAM,IAAI,aAAa,EAAE;AACzB,QAAQ,GAAG,CAAC,OAAO,EAAE,CAAC;AACtB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;AAClC,KAAK;AACL,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,IAAI,OAAO,SAAS,CAAC;AACrB,GAAG;AACH,EAAE,aAAa,CAAC,MAAM,EAAE;AACxB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC9B,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACtC,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAChD,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AAC5C,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AAC5C,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC;AAC1D,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,oBAAoB,CAAC;AAClE,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACvC,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,SAAS,CAAC;AACtF,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC;AACvC,IAAI,IAAI,eAAe,IAAI,QAAQ,KAAK,CAAC,EAAE;AAC3C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AAC3C,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AACf,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACxC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACzC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE;AACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,aAAa,GAAG,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;AAC7D,QAAQ,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AAC7C,QAAQ,OAAO,CAAC,CAAC,IAAI,aAAa,GAAG,UAAU,CAAC;AAChD,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,GAAG,CAAC,IAAI,WAAW,CAAC;AACtE,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC3E,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB,QAAQ,IAAI,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC5E,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;AAC/B,QAAQ,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACrC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;AACpB,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtC,QAAQ,GAAG,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;AACvB,OAAO;AACP,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC5E,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC;AAClD,MAAM,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9B,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,UAAU,CAAC;AACtC,KAAK;AACL,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AAClB,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,GAAG;AACH,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;AACjC,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,iBAAiB,CAAC,EAAE,EAAE;AACxB,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,eAAe,EAAE;AACnC,MAAM,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChF,MAAM,MAAM,qBAAqB,GAAG;AACpC,QAAQ,oBAAoB,EAAE,GAAG,IAAI,IAAI,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACjI,UAAU,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;AAC3D,UAAU,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;AACrD,SAAS,CAAC;AACV,OAAO,CAAC;AACR,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,qBAAqB,EAAE,aAAa,CAAC,CAAC;AAC7F,KAAK,MAAM;AACX,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACjE,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,GAAG;AACH,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjF,GAAG;AACH,EAAE,oBAAoB,GAAG;AACzB,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC;AACpE,GAAG;AACH,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AACrC,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC;AAChE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AACrC,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE;AACpC,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACxC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/C,KAAK,MAAM;AACX,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5C,IAAI,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,0BAA0B,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrG,IAAI,MAAM,GAAG,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;AAChD,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,MAAM;AACZ,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;AACrB,MAAM,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3F,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AAClD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC;AAC3D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,WAAW,CAAC,kCAAkC,CAAC,CAAC;AACpD,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,WAAW,CAAC,gCAAgC,CAAC,CAAC;AAClD,GAAG;AACH,EAAE,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE;AACtC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrD,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACzE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAClB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,KAAK;AACL,GAAG;AACH,EAAE,mBAAmB,GAAG;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;AACvD,GAAG;AACH,EAAE,UAAU,CAAC,KAAK,EAAE;AACpB,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AACtC,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;AAChC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACzB,MAAM,IAAI,CAAC,oCAAoC,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;AACxB,MAAM,IAAI,CAAC,gCAAgC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;AAC7D,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE;AACtB,MAAM,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACrB,MAAM,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9F,IAAI,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnF,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;AACnE,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AACzE,IAAI,IAAI,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9C,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,MAAM,OAAO,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAC1F,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC;AAC3C,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AAC3C,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC,CAAC;AAC5C,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3B,QAAQ,MAAM,EAAE,aAAa,CAAC,MAAM;AACpC,QAAQ,OAAO,EAAE,QAAQ;AACzB,QAAQ,OAAO;AACf,QAAQ,OAAO;AACf,QAAQ,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;AACpC,QAAQ,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;AACtC,QAAQ,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI;AACpD,QAAQ,qBAAqB,EAAE,IAAI;AACnC,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;AACxB,KAAK;AACL,IAAI,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;AACxB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,GAAG;AACH,EAAE,QAAQ,CAAC,KAAK,EAAE;AAClB,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;AAC9B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AACtC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACnB,IAAI,IAAI,CAAC,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC;AAC3C,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC7C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACzB,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,CAAC;AAC3C,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;AAC1H,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7B,KAAK;AACL,GAAG;AACH,EAAE,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE;AAC7D,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChC,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,IAAI,YAAY,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACpD,QAAQ,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;AACtC,QAAQ,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,QAAQ,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,QAAQ,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACxB,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AACzB,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,6BAA6B,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnG,QAAQ,MAAM;AACd,UAAU,aAAa;AACvB,SAAS,GAAG,IAAI,CAAC;AACjB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,CAAC;AACjF,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AACrF,QAAQ,MAAM;AACd,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAClC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;AAClD,QAAQ,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;AAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AACzE,QAAQ,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,OAAO,MAAM;AACb,QAAQ,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;AAC7B,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvF,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAChD,MAAM,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC5C,MAAM,OAAO,IAAI,CAAC,gBAAgB,CAAC;AACnC,KAAK;AACL,GAAG;AACH,EAAE,qBAAqB,CAAC,GAAG,EAAE;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxC,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AACtB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AACvC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;AACxC,QAAQ,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAChD,OAAO;AACP,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC1B,QAAQ,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAQ,OAAO;AACf,OAAO;AACP,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC7C,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;AACnC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AACf,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1D,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;AACpF,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AACf,IAAI,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACtD,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC7C,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AACzG,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC3D,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrH,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxD,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,0BAA0B,CAAC,MAAM,EAAE;AACrC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7C,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACnD,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAChC,MAAM,MAAM;AACZ,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,QAAQ,SAAS;AACjB,OAAO,GAAG,KAAK,CAAC;AAChB,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACpF,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACzC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;AACrB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9C,MAAM,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACvC,MAAM,OAAO,CAAC,wBAAwB,GAAG,WAAW,CAAC;AACrD,MAAM,OAAO,CAAC,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,0BAA0B,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAC1I,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AACxB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AACjB,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAClC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM,wBAAwB,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzF,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,iBAAiB,CAAC,KAAK,EAAE;AAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,IAAI,CAAC,iCAAiC,CAAC,CAAC;AAC9C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC1C,GAAG;AACH,EAAE,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;AAC5D,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,IAAI,CAAC,iCAAiC,CAAC,CAAC;AAC9C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAChC,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAClC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC3D,MAAM,GAAG,CAAC,IAAI,CAAC;AACf,QAAQ,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,QAAQ,CAAC,EAAE,CAAC;AACZ,QAAQ,CAAC,EAAE,CAAC;AACZ,QAAQ,CAAC,EAAE,KAAK;AAChB,QAAQ,CAAC,EAAE,MAAM;AACjB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACpD,GAAG;AACH,EAAE,yBAAyB,CAAC,GAAG,EAAE;AACjC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,MAAM,EAAE;AAC9C,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AAC7C,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC;AACtB,GAAG;AACH,EAAE,yBAAyB,CAAC,OAAO,EAAE;AACrC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,MAAM,EAAE;AAC9C,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC;AAC5B,KAAK;AACL,IAAI,MAAM;AACV,MAAM,MAAM;AACZ,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,OAAO,CAAC;AAChB,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAClF,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;AACrC,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AAC9C,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC;AAC5B,GAAG;AACH,EAAE,uBAAuB,CAAC,OAAO,EAAE;AACnC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAChC,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAClC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,MAAM;AACZ,QAAQ,MAAM;AACd,OAAO,GAAG,GAAG,CAAC;AACd,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,EAAE,EAAE;AAC9C,QAAQ,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5B,OAAO;AACP,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACtC,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;AACxB,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC3D,KAAK,MAAM,IAAI,OAAO,WAAW,KAAK,UAAU,IAAI,OAAO,YAAY,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACrG,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,KAAK,MAAM;AACX,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACpF,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;AACvC,MAAM,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF,IAAI,GAAG,CAAC,qBAAqB,GAAG,wBAAwB,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AACxG,IAAI,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACtH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,4BAA4B,CAAC,OAAO,EAAE,GAAG,EAAE;AAC7C,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;AACxB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;AAClC,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;AAC9B,MAAM,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AAC/B,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;AACvC,MAAM,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE;AAC7B,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AACjB,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AACxC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,wBAAwB,GAAG;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,SAAS,CAAC,GAAG,EAAE,EAAE;AACnB,EAAE,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;AACpC,EAAE,kBAAkB,CAAC,GAAG,EAAE;AAC1B,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACjC,MAAM,OAAO,EAAE,IAAI;AACnB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE;AAC3C,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AACtB,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACnC,QAAQ,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,UAAU,CAAC;AACjE,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACnC,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAClD,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAClD,GAAG;AACH,EAAE,WAAW,GAAG,EAAE;AAClB,EAAE,SAAS,GAAG,EAAE;AAChB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAC/C,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;AAC1C,UAAU,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9B,SAAS,MAAM;AACf,UAAU,GAAG,CAAC,IAAI,EAAE,CAAC;AACrB,SAAS;AACT,OAAO;AACP,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9D,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;AACpB,GAAG;AACH,EAAE,mBAAmB,GAAG;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAC1C,MAAM,MAAM,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,0BAA0B,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,OAAO,MAAM;AACb,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC;AAC1E,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,0BAA0B,CAAC;AAC3C,GAAG;AACH,EAAE,mBAAmB,GAAG;AACxB,IAAI,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAChD,MAAM,MAAM;AACZ,QAAQ,SAAS;AACjB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACvB,MAAM,MAAM;AACZ,QAAQ,CAAC;AACT,QAAQ,CAAC;AACT,QAAQ,CAAC;AACT,QAAQ,CAAC;AACT,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAClC,MAAM,IAAI,MAAM,EAAE,MAAM,CAAC;AACzB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE;AAC7B,UAAU,IAAI,SAAS,KAAK,CAAC,EAAE;AAC/B,YAAY,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;AACxC,WAAW,MAAM;AACjB,YAAY,MAAM,eAAe,GAAG,KAAK,GAAG,SAAS,CAAC;AACtD,YAAY,MAAM,GAAG,MAAM,GAAG,eAAe,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC;AAC5E,WAAW;AACX,SAAS,MAAM,IAAI,SAAS,KAAK,CAAC,EAAE;AACpC,UAAU,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7B,UAAU,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7B,SAAS,MAAM;AACf,UAAU,MAAM,gBAAgB,GAAG,KAAK,GAAG,SAAS,CAAC;AACrD,UAAU,MAAM,gBAAgB,GAAG,KAAK,GAAG,SAAS,CAAC;AACrD,UAAU,MAAM,GAAG,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC;AACnE,UAAU,MAAM,GAAG,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC;AACnE,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,SAAS,KAAK,CAAC,EAAE;AAC7B,UAAU,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAClC,UAAU,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAClC,SAAS,MAAM;AACf,UAAU,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAC9C,UAAU,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;AAC3D,UAAU,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;AAC3D,SAAS;AACT,OAAO;AACP,MAAM,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC/C,MAAM,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC/C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,uBAAuB,CAAC;AACxC,GAAG;AACH,EAAE,gBAAgB,CAAC,WAAW,EAAE;AAChC,IAAI,MAAM;AACV,MAAM,GAAG;AACT,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,MAAM;AACV,MAAM,SAAS;AACf,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AACrB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACxD,IAAI,GAAG,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;AACtC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;AACnB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;AACrC,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;AACjB,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9B,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClD,MAAM,GAAG,CAAC,cAAc,IAAI,KAAK,CAAC;AAClC,KAAK;AACL,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;AACjB,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;AACpB,KAAK;AACL,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAClE,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC/C,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,CAAC;AACD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;AACtB,EAAE,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;AAClD,IAAI,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACrE,GAAG;AACH,CAAC;AAGD,MAAM,mBAAmB,CAAC;AAC1B,EAAE,OAAO,KAAK,GAAG,IAAI,CAAC;AACtB,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC;AACnB,EAAE,WAAW,UAAU,GAAG;AAC1B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH,EAAE,WAAW,UAAU,CAAC,GAAG,EAAE;AAC7B,IAAI,IAAI,EAAE,OAAO,MAAM,KAAK,WAAW,IAAI,GAAG,YAAY,MAAM,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE;AACnF,MAAM,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACrB,GAAG;AACH,EAAE,WAAW,SAAS,GAAG;AACzB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,GAAG;AACH,EAAE,WAAW,SAAS,CAAC,GAAG,EAAE;AAC5B,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,MAAM,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACpB,GAAG;AACH,CAAC;AAGD;AACA,MAAM,YAAY,GAAG;AACrB,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,KAAK,EAAE,CAAC;AACV,CAAC,CAAC;AACF,MAAM,UAAU,GAAG;AACnB,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,MAAM,EAAE,CAAC;AACX,EAAE,eAAe,EAAE,CAAC;AACpB,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,aAAa,EAAE,CAAC;AAClB,EAAE,cAAc,EAAE,CAAC;AACnB,CAAC,CAAC;AACF,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,EAAE,IAAI,EAAE,MAAM,YAAY,KAAK,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,EAAE;AACnF,IAAI,WAAW,CAAC,gEAAgE,CAAC,CAAC;AAClF,GAAG;AACH,EAAE,QAAQ,MAAM,CAAC,IAAI;AACrB,IAAI,KAAK,gBAAgB;AACzB,MAAM,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChD,IAAI,KAAK,qBAAqB;AAC9B,MAAM,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrD,IAAI,KAAK,mBAAmB;AAC5B,MAAM,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAChE,IAAI,KAAK,6BAA6B;AACtC,MAAM,OAAO,IAAI,2BAA2B,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5E,IAAI,KAAK,uBAAuB;AAChC,MAAM,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACvE,IAAI;AACJ,MAAM,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1E,GAAG;AACH,CAAC;AACD,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE;AAC9C,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,kBAAkB,GAAG,KAAK,IAAI;AACvC,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC9B,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE;AAC/C,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACvB,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACzC,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC3C,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACjE,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACrD,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,IAAI,EAAE;AACjD,UAAU,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,SAAS,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,KAAK,EAAE;AACzD,UAAU,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACrD,SAAS,MAAM;AACf,UAAU,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AACtD,SAAS;AACT,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,4BAA4B,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;AAC3B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7C,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7C,QAAQ,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE;AACvC,UAAU,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE;AAClC,UAAU,MAAM,CAAC,WAAW,CAAC;AAC7B,YAAY,UAAU,EAAE,YAAY;AACpC,YAAY,UAAU,EAAE,YAAY;AACpC,YAAY,QAAQ,EAAE,YAAY,CAAC,IAAI;AACvC,YAAY,UAAU,EAAE,IAAI,CAAC,UAAU;AACvC,YAAY,IAAI,EAAE,MAAM;AACxB,WAAW,CAAC,CAAC;AACb,SAAS,EAAE,UAAU,MAAM,EAAE;AAC7B,UAAU,MAAM,CAAC,WAAW,CAAC;AAC7B,YAAY,UAAU,EAAE,YAAY;AACpC,YAAY,UAAU,EAAE,YAAY;AACpC,YAAY,QAAQ,EAAE,YAAY,CAAC,KAAK;AACxC,YAAY,UAAU,EAAE,IAAI,CAAC,UAAU;AACvC,YAAY,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;AACtC,WAAW,CAAC,CAAC;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACrC,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAChE,GAAG;AACH,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;AAClC,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE;AACxB,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,uCAAuC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;AAC7B,GAAG;AACH,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;AACpC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAC5B,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,MAAM,MAAM,EAAE,UAAU;AACxB,MAAM,IAAI;AACV,KAAK,EAAE,SAAS,CAAC,CAAC;AAClB,GAAG;AACH,EAAE,eAAe,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;AAC/C,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACzC,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AAC/C,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AACvD,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAC9B,QAAQ,UAAU,EAAE,IAAI,CAAC,UAAU;AACnC,QAAQ,UAAU,EAAE,IAAI,CAAC,UAAU;AACnC,QAAQ,MAAM,EAAE,UAAU;AAC1B,QAAQ,UAAU;AAClB,QAAQ,IAAI;AACZ,OAAO,EAAE,SAAS,CAAC,CAAC;AACpB,KAAK,CAAC,OAAO,EAAE,EAAE;AACjB,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,OAAO,CAAC;AAC9B,GAAG;AACH,EAAE,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE;AAChE,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AACpC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAI,OAAO,IAAI,cAAc,CAAC;AAC9B,MAAM,KAAK,EAAE,UAAU,IAAI;AAC3B,QAAQ,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACxD,QAAQ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG;AAC3C,UAAU,UAAU;AACpB,UAAU,SAAS,EAAE,eAAe;AACpC,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,QAAQ,EAAE,KAAK;AACzB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,WAAW,CAAC;AAC3B,UAAU,UAAU;AACpB,UAAU,UAAU;AACpB,UAAU,MAAM,EAAE,UAAU;AAC5B,UAAU,QAAQ;AAClB,UAAU,IAAI;AACd,UAAU,WAAW,EAAE,UAAU,CAAC,WAAW;AAC7C,SAAS,EAAE,SAAS,CAAC,CAAC;AACtB,QAAQ,OAAO,eAAe,CAAC,OAAO,CAAC;AACvC,OAAO;AACP,MAAM,IAAI,EAAE,UAAU,IAAI;AAC1B,QAAQ,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACvD,QAAQ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,cAAc,CAAC;AACnE,QAAQ,MAAM,CAAC,WAAW,CAAC;AAC3B,UAAU,UAAU;AACpB,UAAU,UAAU;AACpB,UAAU,MAAM,EAAE,UAAU,CAAC,IAAI;AACjC,UAAU,QAAQ;AAClB,UAAU,WAAW,EAAE,UAAU,CAAC,WAAW;AAC7C,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,cAAc,CAAC,OAAO,CAAC;AACtC,OAAO;AACP,MAAM,MAAM,EAAE,MAAM,IAAI;AACxB,QAAQ,MAAM,CAAC,MAAM,YAAY,KAAK,EAAE,iCAAiC,CAAC,CAAC;AAC3E,QAAQ,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACzD,QAAQ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,UAAU,GAAG,gBAAgB,CAAC;AACvE,QAAQ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzD,QAAQ,MAAM,CAAC,WAAW,CAAC;AAC3B,UAAU,UAAU;AACpB,UAAU,UAAU;AACpB,UAAU,MAAM,EAAE,UAAU,CAAC,MAAM;AACnC,UAAU,QAAQ;AAClB,UAAU,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;AACpC,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,gBAAgB,CAAC,OAAO,CAAC;AACxC,OAAO;AACP,KAAK,EAAE,gBAAgB,CAAC,CAAC;AACzB,GAAG;AACH,EAAE,iBAAiB,CAAC,IAAI,EAAE;AAC1B,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAClC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAI,MAAM,IAAI,GAAG,IAAI;AACrB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/C,IAAI,MAAM,UAAU,GAAG;AACvB,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE;AAC1C,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC;AACjD,QAAQ,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;AACjC,QAAQ,IAAI,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE;AAC1D,UAAU,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACxD,UAAU,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AACnD,SAAS;AACT,QAAQ,MAAM,CAAC,WAAW,CAAC;AAC3B,UAAU,UAAU;AACpB,UAAU,UAAU;AACpB,UAAU,MAAM,EAAE,UAAU,CAAC,OAAO;AACpC,UAAU,QAAQ;AAClB,UAAU,KAAK;AACf,SAAS,EAAE,SAAS,CAAC,CAAC;AACtB,OAAO;AACP,MAAM,KAAK,GAAG;AACd,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,QAAQ,MAAM,CAAC,WAAW,CAAC;AAC3B,UAAU,UAAU;AACpB,UAAU,UAAU;AACpB,UAAU,MAAM,EAAE,UAAU,CAAC,KAAK;AAClC,UAAU,QAAQ;AAClB,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC1C,OAAO;AACP,MAAM,KAAK,CAAC,MAAM,EAAE;AACpB,QAAQ,MAAM,CAAC,MAAM,YAAY,KAAK,EAAE,gCAAgC,CAAC,CAAC;AAC1E,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,QAAQ,MAAM,CAAC,WAAW,CAAC;AAC3B,UAAU,UAAU;AACpB,UAAU,UAAU;AACpB,UAAU,MAAM,EAAE,UAAU,CAAC,KAAK;AAClC,UAAU,QAAQ;AAClB,UAAU,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;AACpC,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,cAAc,EAAE,OAAO,CAAC,aAAa,EAAE;AAC7C,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,WAAW,EAAE,KAAK;AACxB,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,KAAK,EAAE,IAAI;AACjB,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AACxC,IAAI,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC;AACzD,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;AAC5C,IAAI,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE;AACnC,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AAC7C,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY;AACxB,MAAM,MAAM,CAAC,WAAW,CAAC;AACzB,QAAQ,UAAU;AAClB,QAAQ,UAAU;AAClB,QAAQ,MAAM,EAAE,UAAU,CAAC,cAAc;AACzC,QAAQ,QAAQ;AAChB,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAC,CAAC;AACT,KAAK,EAAE,UAAU,MAAM,EAAE;AACzB,MAAM,MAAM,CAAC,WAAW,CAAC;AACzB,QAAQ,UAAU;AAClB,QAAQ,UAAU;AAClB,QAAQ,MAAM,EAAE,UAAU,CAAC,cAAc;AACzC,QAAQ,QAAQ;AAChB,QAAQ,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;AAClC,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,qBAAqB,CAAC,IAAI,EAAE;AAC9B,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAClC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9C,IAAI,QAAQ,IAAI,CAAC,MAAM;AACvB,MAAM,KAAK,UAAU,CAAC,cAAc;AACpC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,UAAU,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AAC/C,SAAS,MAAM;AACf,UAAU,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACrE,SAAS;AACT,QAAQ,MAAM;AACd,MAAM,KAAK,UAAU,CAAC,aAAa;AACnC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,UAAU,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC9C,SAAS,MAAM;AACf,UAAU,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,MAAM;AACd,MAAM,KAAK,UAAU,CAAC,IAAI;AAC1B,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,UAAU,MAAM,CAAC,WAAW,CAAC;AAC7B,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,MAAM,EAAE,UAAU,CAAC,aAAa;AAC5C,YAAY,QAAQ;AACpB,YAAY,OAAO,EAAE,IAAI;AACzB,WAAW,CAAC,CAAC;AACb,UAAU,MAAM;AAChB,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AACjE,UAAU,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AAC9C,SAAS;AACT,QAAQ,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAClD,QAAQ,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE;AACvC,UAAU,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC;AACzC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY;AAC5B,UAAU,MAAM,CAAC,WAAW,CAAC;AAC7B,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,MAAM,EAAE,UAAU,CAAC,aAAa;AAC5C,YAAY,QAAQ;AACpB,YAAY,OAAO,EAAE,IAAI;AACzB,WAAW,CAAC,CAAC;AACb,SAAS,EAAE,UAAU,MAAM,EAAE;AAC7B,UAAU,MAAM,CAAC,WAAW,CAAC;AAC7B,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,MAAM,EAAE,UAAU,CAAC,aAAa;AAC5C,YAAY,QAAQ;AACpB,YAAY,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;AACtC,WAAW,CAAC,CAAC;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM;AACd,MAAM,KAAK,UAAU,CAAC,OAAO;AAC7B,QAAQ,MAAM,CAAC,gBAAgB,EAAE,uCAAuC,CAAC,CAAC;AAC1E,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,EAAE;AACvC,UAAU,MAAM;AAChB,SAAS;AACT,QAAQ,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,QAAQ,MAAM;AACd,MAAM,KAAK,UAAU,CAAC,KAAK;AAC3B,QAAQ,MAAM,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,CAAC;AACxE,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,EAAE;AACvC,UAAU,MAAM;AAChB,SAAS;AACT,QAAQ,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzC,QAAQ,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC5C,QAAQ,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,MAAM;AACd,MAAM,KAAK,UAAU,CAAC,KAAK;AAC3B,QAAQ,MAAM,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,CAAC;AACxE,QAAQ,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,MAAM;AACd,MAAM,KAAK,UAAU,CAAC,eAAe;AACrC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,UAAU,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAChD,SAAS,MAAM;AACf,UAAU,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,MAAM;AACd,MAAM,KAAK,UAAU,CAAC,MAAM;AAC5B,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,UAAU,MAAM;AAChB,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE;AACvC,UAAU,OAAO,CAAC,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY;AAC5B,UAAU,MAAM,CAAC,WAAW,CAAC;AAC7B,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,MAAM,EAAE,UAAU,CAAC,eAAe;AAC9C,YAAY,QAAQ;AACpB,YAAY,OAAO,EAAE,IAAI;AACzB,WAAW,CAAC,CAAC;AACb,SAAS,EAAE,UAAU,MAAM,EAAE;AAC7B,UAAU,MAAM,CAAC,WAAW,CAAC;AAC7B,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,MAAM,EAAE,UAAU,CAAC,eAAe;AAC9C,YAAY,QAAQ;AACpB,YAAY,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;AACtC,WAAW,CAAC,CAAC;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,QAAQ,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;AACtC,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC1C,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAClD,KAAK;AACL,GAAG;AACH,EAAE,MAAM,uBAAuB,CAAC,gBAAgB,EAAE,QAAQ,EAAE;AAC5D,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9I,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACxE,GAAG;AACH,CAAC;AAGD;AACA,MAAM,QAAQ,CAAC;AACf,EAAE,YAAY,CAAC;AACf,EAAE,KAAK,CAAC;AACR,EAAE,WAAW,CAAC;AACd,IAAI,UAAU;AACd,IAAI,OAAO;AACX,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;AACnC,IAAI,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;AACzB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH,EAAE,GAAG,CAAC,IAAI,EAAE;AACZ,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC/C,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,OAAO,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,GAAG,CAAC,IAAI,EAAE;AACZ,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,GAAG;AACH,CAAC;AAGD;AACA;AACA,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACpC,MAAM,oBAAoB,CAAC;AAC3B,EAAE,UAAU,GAAG,KAAK,CAAC;AACrB,EAAE,QAAQ,GAAG,KAAK,CAAC;AACnB,EAAE,QAAQ,GAAG,KAAK,CAAC;AACnB,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,WAAW,CAAC,eAAe,EAAE;AAC/B,IAAI,IAAI;AACR,IAAI,MAAM;AACV,IAAI,KAAK;AACT,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,eAAe,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACxE,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACxB,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,IAAI;AACV,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACnB,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,OAAO,IAAI,EAAE,SAAS,KAAK,KAAK,CAAC;AACvC,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC9B,MAAM,OAAO,KAAK,EAAE,UAAU,KAAK,KAAK,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE;AAClD,IAAI,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC/B,MAAM,WAAW,CAAC,uCAAuC,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC5B,GAAG;AACH,CAAC;AACD,MAAM,qBAAqB,CAAC;AAC5B,EAAE,cAAc,GAAG,IAAI,CAAC;AACxB,EAAE,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AACtB,EAAE,YAAY,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,GAAG,IAAI,CAAC;AAChB,EAAE,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,mBAAmB,CAAC,OAAO,EAAE;AACnE,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AAC3C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACvB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAChC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AACrC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;AACnF,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAClC,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;AACjD,QAAQ,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC3C,OAAO;AACP,KAAK;AACL,IAAI,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE;AAC9B,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;AAChC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACvC,GAAG;AACH,EAAE,6BAA6B,CAAC,KAAK,EAAE;AACvC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,IAAI,IAAI,MAAM,GAAG,CAAC,EAAE;AACpB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,IAAI,KAAK,CAAC;AAChB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAClC,QAAQ,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;AAC5D,OAAO,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC5C,QAAQ,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AAClD,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7D,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,QAAQ,QAAQ;AACtB,QAAQ,KAAK,KAAK;AAClB,UAAU,IAAI,CAAC,KAAK,EAAE;AACtB,YAAY,OAAO,KAAK,CAAC;AACzB,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,KAAK,EAAE;AACrB,YAAY,OAAO,IAAI,CAAC;AACxB,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,KAAK;AAClB,UAAU,OAAO,CAAC,KAAK,CAAC;AACxB,QAAQ;AACR,UAAU,OAAO,IAAI,CAAC;AACtB,OAAO;AACP,KAAK;AACL,IAAI,OAAO,QAAQ,KAAK,KAAK,CAAC;AAC9B,GAAG;AACH,EAAE,SAAS,CAAC,KAAK,EAAE;AACnB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;AACjC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,IAAI,CAAC,qCAAqC,CAAC,CAAC;AAClD,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;AAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACvC,QAAQ,IAAI,CAAC,CAAC,kCAAkC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;AAChD,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACtC,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACpE,OAAO;AACP,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;AACrD,QAAQ,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE;AACpC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,YAAY,IAAI,CAAC,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,YAAY,OAAO,IAAI,CAAC;AACxB,WAAW;AACX,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;AAC5C,YAAY,OAAO,IAAI,CAAC;AACxB,WAAW;AACX,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;AAC3C,QAAQ,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE;AACpC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,YAAY,IAAI,CAAC,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,YAAY,OAAO,IAAI,CAAC;AACxB,WAAW;AACX,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;AAC7C,YAAY,OAAO,KAAK,CAAC;AACzB,WAAW;AACX,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5C,QAAQ,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE;AACpC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,YAAY,IAAI,CAAC,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,YAAY,OAAO,IAAI,CAAC;AACxB,WAAW;AACX,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;AAC7C,YAAY,OAAO,IAAI,CAAC;AACxB,WAAW;AACX,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5C,QAAQ,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE;AACpC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,YAAY,IAAI,CAAC,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,YAAY,OAAO,IAAI,CAAC;AACxB,WAAW;AACX,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;AAC5C,YAAY,OAAO,KAAK,CAAC;AACzB,WAAW;AACX,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,IAAI,CAAC,CAAC,gCAAgC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE;AACpC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,IAAI,CAAC,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B,GAAG;AACH,EAAE,WAAW,CAAC;AACd,IAAI,KAAK;AACT,IAAI,UAAU;AACd,GAAG,EAAE;AACL,IAAI,IAAI,QAAQ,CAAC;AACjB,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC9B,MAAM,QAAQ,IAAI;AAClB,QAAQ,KAAK,IAAI,CAAC;AAClB,QAAQ,KAAK,KAAK,CAAC;AACnB,QAAQ,KAAK,QAAQ;AACrB,UAAU,QAAQ,GAAG,IAAI,CAAC;AAC1B,UAAU,SAAS;AACnB,OAAO;AACP,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,QAAQ,QAAQ;AACtB,QAAQ,KAAK,IAAI;AACjB,UAAU,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5C,UAAU,MAAM;AAChB,QAAQ,KAAK,KAAK;AAClB,UAAU,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC7C,UAAU,MAAM;AAChB,QAAQ,KAAK,QAAQ;AACrB,UAAU,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACtD,UAAU,MAAM;AAChB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B,GAAG;AACH,EAAE,IAAI,oBAAoB,GAAG;AAC7B,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC;AAC9E,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAC5B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACpC,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AACtE,GAAG;AACH,EAAE,QAAQ,CAAC,EAAE,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AACxC,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;AACtC,MAAM,OAAO,IAAI,CAAC,cAAc,CAAC;AACjC,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;AACtC,IAAI,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;AAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAClD,GAAG;AACH,CAAC;AAGD;AACA;AACA,MAAM,sBAAsB,CAAC;AAC7B,EAAE,WAAW,CAAC,qBAAqB,EAAE;AACrC,IAAI,YAAY,GAAG,KAAK;AACxB,IAAI,aAAa,GAAG,KAAK;AACzB,GAAG,EAAE;AACL,IAAI,MAAM,CAAC,qBAAqB,EAAE,6EAA6E,CAAC,CAAC;AACjH,IAAI,MAAM;AACV,MAAM,MAAM;AACZ,MAAM,WAAW;AACjB,MAAM,eAAe;AACrB,MAAM,0BAA0B;AAChC,KAAK,GAAG,qBAAqB,CAAC;AAC9B,IAAI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;AAC5C,IAAI,IAAI,CAAC,2BAA2B,GAAG,0BAA0B,CAAC;AAClE,IAAI,IAAI,WAAW,EAAE,MAAM,GAAG,CAAC,EAAE;AACjC,MAAM,MAAM,MAAM,GAAG,WAAW,YAAY,UAAU,IAAI,WAAW,CAAC,UAAU,KAAK,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;AAC7K,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;AACxD,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,aAAa,CAAC;AAChD,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,YAAY,CAAC;AAC3C,IAAI,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;AACjC,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACnC,IAAI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC5B,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AAC7D,MAAM,IAAI,CAAC,cAAc,CAAC;AAC1B,QAAQ,KAAK;AACb,QAAQ,KAAK;AACb,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,IAAI,qBAAqB,CAAC,mBAAmB,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK;AACjE,MAAM,IAAI,CAAC,WAAW,CAAC;AACvB,QAAQ,MAAM;AACd,QAAQ,KAAK;AACb,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,IAAI,qBAAqB,CAAC,0BAA0B,CAAC,KAAK,IAAI;AAC9D,MAAM,IAAI,CAAC,cAAc,CAAC;AAC1B,QAAQ,KAAK;AACb,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,IAAI,qBAAqB,CAAC,0BAA0B,CAAC,MAAM;AAC3D,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAChC,KAAK,CAAC,CAAC;AACP,IAAI,qBAAqB,CAAC,cAAc,EAAE,CAAC;AAC3C,GAAG;AACH,EAAE,cAAc,CAAC;AACjB,IAAI,KAAK;AACT,IAAI,KAAK;AACT,GAAG,EAAE;AACL,IAAI,MAAM,MAAM,GAAG,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAC7I,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACnC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjD,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,OAAO;AACP,KAAK,MAAM;AACX,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,WAAW,EAAE;AACnE,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,KAAK,EAAE;AAC1C,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT,QAAQ,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrC,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO,CAAC,CAAC;AACT,MAAM,MAAM,CAAC,KAAK,EAAE,yEAAyE,CAAC,CAAC;AAC/F,KAAK;AACL,GAAG;AACH,EAAE,IAAI,sBAAsB,GAAG;AAC/B,IAAI,OAAO,IAAI,CAAC,kBAAkB,EAAE,OAAO,IAAI,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,WAAW,CAAC,GAAG,EAAE;AACnB,IAAI,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE;AACjC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG;AAC1C,QAAQ,MAAM,EAAE,GAAG,CAAC,MAAM;AAC1B,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG;AAC5C,QAAQ,MAAM,EAAE,GAAG,CAAC,MAAM;AAC1B,QAAQ,KAAK,EAAE,GAAG,CAAC,KAAK;AACxB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,IAAI,CAAC,kBAAkB,EAAE,eAAe,EAAE,CAAC;AAC/C,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACjC,GAAG;AACH,EAAE,kBAAkB,CAAC,MAAM,EAAE;AAC7B,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AAChB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,KAAK;AACL,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,+DAA+D,CAAC,CAAC;AACtG,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;AAC5C,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,OAAO,IAAI,4BAA4B,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;AACzH,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;AAC7B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC5C,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,iCAAiC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC3E,IAAI,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC7D,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,iBAAiB,CAAC,MAAM,EAAE;AAC5B,IAAI,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACtD,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;AACxC,GAAG;AACH,CAAC;AACD,MAAM,4BAA4B,CAAC;AACnC,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,GAAG,KAAK,EAAE,0BAA0B,GAAG,IAAI,EAAE;AAChG,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,KAAK,GAAG,eAAe,IAAI,KAAK,CAAC;AAC1C,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,0BAA0B,CAAC,GAAG,0BAA0B,GAAG,IAAI,CAAC;AAC/F,IAAI,IAAI,CAAC,aAAa,GAAG,YAAY,IAAI,EAAE,CAAC;AAC5C,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACrB,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5C,MAAM,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3C,IAAI,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,EAAE,QAAQ,CAAC,KAAK,EAAE;AAClB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACvD,MAAM,iBAAiB,CAAC,OAAO,CAAC;AAChC,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,IAAI,EAAE,KAAK;AACnB,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC;AACrC,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,IAAI,gBAAgB,GAAG;AACzB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC1C,GAAG;AACH,EAAE,IAAI,oBAAoB,GAAG;AAC7B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAC9C,GAAG;AACH,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;AACvC,GAAG;AACH,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/C,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,IAAI,EAAE,KAAK;AACnB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACtD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC3C,IAAI,OAAO,iBAAiB,CAAC,OAAO,CAAC;AACrC,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;AACpD,MAAM,iBAAiB,CAAC,OAAO,CAAC;AAChC,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,GAAG;AACH,CAAC;AACD,MAAM,iCAAiC,CAAC;AACxC,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;AAClC,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACpB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,EAAE,QAAQ,CAAC,KAAK,EAAE;AAClB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,MAAM,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,KAAK,MAAM;AACX,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxD,MAAM,kBAAkB,CAAC,OAAO,CAAC;AACjC,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,IAAI,EAAE,KAAK;AACnB,OAAO,CAAC,CAAC;AACT,MAAM,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;AACtD,QAAQ,iBAAiB,CAAC,OAAO,CAAC;AAClC,UAAU,KAAK,EAAE,SAAS;AAC1B,UAAU,IAAI,EAAE,IAAI;AACpB,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC1C,GAAG;AACH,EAAE,IAAI,oBAAoB,GAAG;AAC7B,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AACtC,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,IAAI,EAAE,KAAK;AACnB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACtD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC3C,IAAI,OAAO,iBAAiB,CAAC,OAAO,CAAC;AACrC,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;AACpD,MAAM,iBAAiB,CAAC,OAAO,CAAC;AAChC,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC1C,GAAG;AACH,CAAC;AAGD;AACA,SAAS,uCAAuC,CAAC,kBAAkB,EAAE;AACrE,EAAE,IAAI,kBAAkB,GAAG,IAAI,CAAC;AAChC,EAAE,IAAI,GAAG,GAAG,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACvE,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACjB,IAAI,IAAI,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AACvC,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClC,IAAI,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AACvC,IAAI,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AACvC,IAAI,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,GAAG,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC5C,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACxC,IAAI,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,GAAG,GAAG,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAChE,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACjB,IAAI,IAAI,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AACvC,IAAI,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AACvC,IAAI,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,SAAS,aAAa,CAAC,gBAAgB,EAAE,KAAK,EAAE;AAClD,IAAI,OAAO,IAAI,MAAM,CAAC,aAAa,GAAG,gBAAgB,GAAG,WAAW,GAAG,GAAG,GAAG,kBAAkB,GAAG,GAAG,GAAG,yBAAyB,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;AAChJ,GAAG;AACH,EAAE,SAAS,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE;AACvC,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACzC,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,MAAM,IAAI;AACV,QAAQ,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE;AAClD,UAAU,KAAK,EAAE,IAAI;AACrB,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAQ,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvC,QAAQ,kBAAkB,GAAG,KAAK,CAAC;AACnC,OAAO,CAAC,MAAM,EAAE;AAChB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,SAAS,aAAa,CAAC,KAAK,EAAE;AAChC,IAAI,IAAI,kBAAkB,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACzD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzC,MAAM,IAAI,kBAAkB,EAAE;AAC9B,QAAQ,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAChD,OAAO;AACP,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,SAAS,eAAe,CAAC,qBAAqB,EAAE;AAClD,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,IAAI,KAAK,CAAC;AACd,IAAI,MAAM,IAAI,GAAG,aAAa,CAAC,iCAAiC,EAAE,IAAI,CAAC,CAAC;AACxE,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,IAAI,EAAE;AAChE,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;AACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1B,MAAM,IAAI,CAAC,IAAI,OAAO,EAAE;AACxB,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE;AACrB,UAAU,MAAM;AAChB,SAAS;AACT,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC7C,MAAM,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE;AAC3B,QAAQ,MAAM;AACd,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACpC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;AAClC,MAAM,IAAI,IAAI,EAAE;AAChB,QAAQ,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE;AACrB,UAAU,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AACrC,SAAS;AACT,OAAO;AACP,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,SAAS,cAAc,CAAC,KAAK,EAAE;AACjC,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC/B,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAChD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC7C,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChD,QAAQ,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;AAC9B,UAAU,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAClD,UAAU,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,SAAS;AACT,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACvD,OAAO;AACP,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,SAAS,aAAa,CAAC,QAAQ,EAAE;AACnC,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAI,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AAC5B,MAAM,OAAO,QAAQ,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACpD,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AACtD,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACnD,IAAI,OAAO,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvC,GAAG;AACH,EAAE,SAAS,aAAa,CAAC,KAAK,EAAE;AAChC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvE,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,UAAU,CAAC,gDAAgD,EAAE,UAAU,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC1H,MAAM,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,EAAE;AAChD,QAAQ,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACzC,QAAQ,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,UAAU,KAAK,EAAE,GAAG,EAAE;AAC3E,UAAU,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACxD,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzC,OAAO;AACP,MAAM,IAAI;AACV,QAAQ,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,OAAO,CAAC,MAAM,EAAE;AAChB,MAAM,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,EAAE,CAAC;AACZ,CAAC;AAGD;AACA;AACA;AACA,SAAS,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE;AAC5C,EAAE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAChC,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AAClE,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AACjC,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AAC3B,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/B,KAAK;AACL,GAAG;AACH,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC;AACD,SAAS,gCAAgC,CAAC;AAC1C,EAAE,eAAe;AACjB,EAAE,MAAM;AACR,EAAE,cAAc;AAChB,EAAE,YAAY;AACd,CAAC,EAAE;AACH,EAAE,MAAM,YAAY,GAAG;AACvB,IAAI,kBAAkB,EAAE,KAAK;AAC7B,IAAI,eAAe,EAAE,SAAS;AAC9B,GAAG,CAAC;AACJ,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACjC,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH,EAAE,YAAY,CAAC,eAAe,GAAG,MAAM,CAAC;AACxC,EAAE,IAAI,MAAM,IAAI,CAAC,GAAG,cAAc,EAAE;AACpC,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH,EAAE,IAAI,YAAY,IAAI,CAAC,MAAM,EAAE;AAC/B,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH,EAAE,IAAI,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,OAAO,EAAE;AACxD,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH,EAAE,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,UAAU,CAAC;AAChF,EAAE,IAAI,eAAe,KAAK,UAAU,EAAE;AACtC,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH,EAAE,YAAY,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACzC,EAAE,OAAO,YAAY,CAAC;AACtB,CAAC;AACD,SAAS,yBAAyB,CAAC,eAAe,EAAE;AACpD,EAAE,MAAM,kBAAkB,GAAG,eAAe,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACxE,EAAE,IAAI,kBAAkB,EAAE;AAC1B,IAAI,IAAI,QAAQ,GAAG,uCAAuC,CAAC,kBAAkB,CAAC,CAAC;AAC/E,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAChC,MAAM,IAAI;AACV,QAAQ,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAChD,OAAO,CAAC,MAAM,EAAE;AAChB,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;AAC7B,MAAM,OAAO,QAAQ,CAAC;AACtB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,yBAAyB,CAAC,MAAM,EAAE,GAAG,EAAE;AAChD,EAAE,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACjE,IAAI,OAAO,IAAI,mBAAmB,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AACjE,GAAG;AACH,EAAE,OAAO,IAAI,2BAA2B,CAAC,CAAC,4BAA4B,EAAE,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC1H,CAAC;AACD,SAAS,sBAAsB,CAAC,MAAM,EAAE;AACxC,EAAE,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC;AAC1C,CAAC;AAGD;AACA;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE;AACvE,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,OAAO;AACX,IAAI,MAAM,EAAE,eAAe,CAAC,MAAM;AAClC,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,WAAW,EAAE,eAAe,GAAG,SAAS,GAAG,aAAa;AAC5D,IAAI,QAAQ,EAAE,QAAQ;AACtB,GAAG,CAAC;AACJ,CAAC;AACD,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,IAAI,GAAG,YAAY,UAAU,EAAE;AACjC,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,GAAG,YAAY,WAAW,EAAE;AAClC,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,IAAI,CAAC,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1D,EAAE,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC;AACD,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACnC,IAAI,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,sBAAsB,GAAG;AAC/B,IAAI,OAAO,IAAI,CAAC,kBAAkB,EAAE,OAAO,IAAI,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,uDAAuD,CAAC,CAAC;AAC9F,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC7D,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC;AACnC,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;AAC7B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC5C,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,iBAAiB,CAAC,MAAM,EAAE;AAC5B,IAAI,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC7D,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,CAAC;AACD,MAAM,oBAAoB,CAAC;AAC3B,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACjC,IAAI,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC;AAC5D,IAAI,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACtD,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC;AACtD,IAAI,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AACjD,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACtD,MAAM,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;AAClD,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;AACvD,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;AAClD,IAAI,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChD,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAC3B,IAAI,KAAK,CAAC,GAAG,EAAE,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI;AAC3G,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpD,QAAQ,MAAM,yBAAyB,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9D,OAAO;AACP,MAAM,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AAC/C,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;AACxC,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;AAC/C,MAAM,MAAM;AACZ,QAAQ,kBAAkB;AAC1B,QAAQ,eAAe;AACvB,OAAO,GAAG,gCAAgC,CAAC;AAC3C,QAAQ,eAAe;AACvB,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM;AAC7B,QAAQ,cAAc,EAAE,IAAI,CAAC,eAAe;AAC5C,QAAQ,YAAY,EAAE,IAAI,CAAC,aAAa;AACxC,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,iBAAiB,GAAG,kBAAkB,CAAC;AAClD,MAAM,IAAI,CAAC,cAAc,GAAG,eAAe,IAAI,IAAI,CAAC,cAAc,CAAC;AACnE,MAAM,IAAI,CAAC,SAAS,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;AAClE,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACjE,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAClE,OAAO;AACP,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAC3C,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC;AAC/B,GAAG;AACH,EAAE,IAAI,gBAAgB,GAAG;AACzB,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAClC,GAAG;AACH,EAAE,IAAI,oBAAoB,GAAG;AAC7B,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC;AACtC,GAAG;AACH,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAC1C,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,IAAI;AACV,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAClC,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,OAAO;AACb,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,GAAG;AACtB,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,MAAM,KAAK,EAAE,IAAI,CAAC,cAAc;AAChC,KAAK,CAAC,CAAC;AACP,IAAI,OAAO;AACX,MAAM,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;AAClC,MAAM,IAAI,EAAE,KAAK;AACjB,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAClC,GAAG;AACH,CAAC;AACD,MAAM,yBAAyB,CAAC;AAChC,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;AAClC,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACrB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACjC,IAAI,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC;AAC5D,IAAI,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACnD,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;AACvD,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;AAClD,IAAI,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChD,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAC3B,IAAI,KAAK,CAAC,GAAG,EAAE,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI;AAC3G,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpD,QAAQ,MAAM,yBAAyB,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9D,OAAO;AACP,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACrC,MAAM,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AAC/C,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,oBAAoB,GAAG;AAC7B,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC;AACtC,GAAG;AACH,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AACvC,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,IAAI;AACV,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAClC,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,OAAO;AACb,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,GAAG;AACtB,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,OAAO;AACX,MAAM,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;AAClC,MAAM,IAAI,EAAE,KAAK;AACjB,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAClC,GAAG;AACH,CAAC;AAGD;AACA;AACA,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,SAAS,sBAAsB,CAAC,GAAG,EAAE;AACrC,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC5B,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAChC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC;AACD,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC;AACd,IAAI,GAAG;AACP,IAAI,WAAW;AACf,IAAI,eAAe;AACnB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACnB,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC3D,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,KAAK,CAAC;AACpD,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/C,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE;AACtC,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,KAAK;AACX,MAAM,GAAG;AACT,KAAK,CAAC;AACN,IAAI,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;AAClC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,WAAW,CAAC,SAAS,EAAE;AACzB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,OAAO,CAAC,IAAI,EAAE;AAChB,IAAI,MAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;AACrC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACnC,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG;AACzD,MAAM,GAAG;AACT,KAAK,CAAC;AACN,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAC/C,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3C,MAAM,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACzD,MAAM,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,MAAM,cAAc,CAAC,cAAc,GAAG,wBAAwB,CAAC;AAC/D,KAAK,MAAM;AACX,MAAM,cAAc,CAAC,cAAc,GAAG,WAAW,CAAC;AAClD,KAAK;AACL,IAAI,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC;AACrC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,GAAG,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE;AACnC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACjC,OAAO,CAAC;AACR,KAAK;AACL,IAAI,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClE,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,IAAI,cAAc,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC9D,IAAI,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxC,IAAI,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC1C,IAAI,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAChD,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;AACzB,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACvD,IAAI,IAAI,CAAC,cAAc,EAAE;AACzB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,cAAc,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE;AAC5B,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACvD,IAAI,IAAI,CAAC,cAAc,EAAE;AACzB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;AACnC,IAAI,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,cAAc,CAAC,iBAAiB,EAAE;AACjE,MAAM,cAAc,CAAC,iBAAiB,EAAE,CAAC;AACzC,MAAM,OAAO,cAAc,CAAC,iBAAiB,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE;AAC1C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACvC,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACzC,MAAM,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,IAAI,WAAW,CAAC;AAChD,IAAI,MAAM,4BAA4B,GAAG,SAAS,KAAK,WAAW,IAAI,cAAc,CAAC,cAAc,KAAK,wBAAwB,CAAC;AACjI,IAAI,IAAI,CAAC,4BAA4B,IAAI,SAAS,KAAK,cAAc,CAAC,cAAc,EAAE;AACtF,MAAM,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAI,IAAI,SAAS,KAAK,wBAAwB,EAAE;AAChD,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;AACjE,MAAM,MAAM,OAAO,GAAG,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnE,MAAM,cAAc,CAAC,MAAM,CAAC;AAC5B,QAAQ,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACvC,QAAQ,KAAK;AACb,OAAO,CAAC,CAAC;AACT,KAAK,MAAM,IAAI,KAAK,EAAE;AACtB,MAAM,cAAc,CAAC,MAAM,CAAC;AAC5B,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,KAAK;AACb,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3C,KAAK;AACL,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE;AACvB,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAC3C,GAAG;AACH,EAAE,gBAAgB,CAAC,KAAK,EAAE;AAC1B,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC;AACzC,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAChD,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACvC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;AAChB,GAAG;AACH,CAAC;AACD,MAAM,gBAAgB,CAAC;AACvB,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AACjD,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACnC,IAAI,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AACnC,GAAG;AACH,EAAE,2BAA2B,CAAC,MAAM,EAAE;AACtC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AAChB,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,yDAAyD,CAAC,CAAC;AAChG,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,iCAAiC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACjG,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC;AACnC,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;AAC7B,IAAI,MAAM,MAAM,GAAG,IAAI,kCAAkC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACrF,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,iBAAiB,CAAC,MAAM,EAAE;AAC5B,IAAI,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC7D,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,CAAC;AACD,MAAM,iCAAiC,CAAC;AACxC,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;AAC/B,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC5B,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3D,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,MAAM,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;AAC3B,IAAI,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACtD,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC;AACtD,IAAI,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AACjD,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACtD,MAAM,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACvC,IAAI,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACnC,IAAI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAClC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC;AACjD,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AACzE,IAAI,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;AAChH,MAAM,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,MAAM,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,MAAM;AACV,MAAM,kBAAkB;AACxB,MAAM,eAAe;AACrB,KAAK,GAAG,gCAAgC,CAAC;AACzC,MAAM,eAAe;AACrB,MAAM,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;AAClC,MAAM,cAAc,EAAE,IAAI,CAAC,eAAe;AAC1C,MAAM,YAAY,EAAE,IAAI,CAAC,aAAa;AACtC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,kBAAkB,EAAE;AAC5B,MAAM,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,GAAG,eAAe,IAAI,IAAI,CAAC,cAAc,CAAC;AACjE,IAAI,IAAI,CAAC,SAAS,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;AAChE,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;AACtC,GAAG;AACH,EAAE,OAAO,CAAC,IAAI,EAAE;AAChB,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,QAAQ,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACzD,QAAQ,iBAAiB,CAAC,OAAO,CAAC;AAClC,UAAU,KAAK,EAAE,IAAI,CAAC,KAAK;AAC3B,UAAU,IAAI,EAAE,KAAK;AACrB,SAAS,CAAC,CAAC;AACX,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;AACpD,MAAM,iBAAiB,CAAC,OAAO,CAAC;AAChC,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,QAAQ,CAAC,MAAM,EAAE;AACnB,IAAI,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtD,IAAI,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;AACpD,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,GAAG;AACH,EAAE,WAAW,CAAC,GAAG,EAAE;AACnB,IAAI,IAAI,CAAC,UAAU,GAAG;AACtB,MAAM,MAAM,EAAE,GAAG,CAAC,MAAM;AACxB,MAAM,KAAK,EAAE,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc;AACnE,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,IAAI,gBAAgB,GAAG;AACzB,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAClC,GAAG;AACH,EAAE,IAAI,oBAAoB,GAAG;AAC7B,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC;AACtC,GAAG;AACH,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC;AAC/B,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAC3C,GAAG;AACH,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,MAAM,IAAI,CAAC,YAAY,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/C,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,IAAI,EAAE,KAAK;AACnB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACtD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC3C,IAAI,OAAO,iBAAiB,CAAC,OAAO,CAAC;AACrC,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC3C,IAAI,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;AACpD,MAAM,iBAAiB,CAAC,OAAO,CAAC;AAChC,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAC7D,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACnC,GAAG;AACH,CAAC;AACD,MAAM,kCAAkC,CAAC;AACzC,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;AACnC,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC5B,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,MAAM,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;AAC5B,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7D,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAClC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,OAAO,CAAC,IAAI,EAAE;AAChB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACvD,MAAM,iBAAiB,CAAC,OAAO,CAAC;AAChC,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,IAAI,EAAE,KAAK;AACnB,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;AACpD,MAAM,iBAAiB,CAAC,OAAO,CAAC;AAChC,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,GAAG;AACH,EAAE,QAAQ,CAAC,MAAM,EAAE;AACnB,IAAI,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,IAAI,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;AACpD,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,GAAG;AACH,EAAE,WAAW,CAAC,GAAG,EAAE;AACnB,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACpC,MAAM,IAAI,CAAC,UAAU,GAAG;AACxB,QAAQ,MAAM,EAAE,GAAG,CAAC,MAAM;AAC1B,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH,EAAE,IAAI,oBAAoB,GAAG;AAC7B,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,MAAM,IAAI,CAAC,YAAY,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;AACpC,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AACtC,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,IAAI,EAAE,KAAK;AACnB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACtD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC3C,IAAI,OAAO,iBAAiB,CAAC,OAAO,CAAC;AACrC,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;AACpD,MAAM,iBAAiB,CAAC,OAAO,CAAC;AAChC,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzD,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AACzC,SAAS,cAAc,CAAC,SAAS,EAAE;AACnC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAChC,IAAI,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtC,EAAE,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/C,CAAC;AACD,SAAS,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC/C,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE;AAChC,IAAI,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC1C,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC7B,MAAM,OAAO;AACb,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjB,GAAG;AACH,EAAE,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1C,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;AAC5B,IAAI,OAAO;AACX,GAAG,EAAE,QAAQ,CAAC,CAAC;AACf,CAAC;AACD,MAAM,aAAa,CAAC;AACpB,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAClF,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC;AACjD,IAAI,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACnC,IAAI,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,sBAAsB,GAAG;AAC/B,IAAI,OAAO,IAAI,CAAC,kBAAkB,EAAE,OAAO,IAAI,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,sDAAsD,CAAC,CAAC;AAC7F,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACrH,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC;AACnC,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;AAC7B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC5C,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACzI,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChD,IAAI,OAAO,WAAW,CAAC;AACvB,GAAG;AACH,EAAE,iBAAiB,CAAC,MAAM,EAAE;AAC5B,IAAI,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC7D,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,CAAC;AACD,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;AAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACjC,IAAI,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC;AACtD,IAAI,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AACjD,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACtD,MAAM,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;AACvD,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;AAClD,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACnD,IAAI,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACtD,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAC3C,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC;AAC/B,GAAG;AACH,EAAE,IAAI,gBAAgB,GAAG;AACzB,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAClC,GAAG;AACH,EAAE,IAAI,oBAAoB,GAAG;AAC7B,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC;AACtC,GAAG;AACH,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AACvC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,MAAM,IAAI,CAAC,YAAY,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC9C,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE;AACxB,MAAM,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACrD,MAAM,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;AACjC,IAAI,IAAI,CAAC,UAAU,GAAG;AACtB,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,MAAM,KAAK,EAAE,IAAI,CAAC,cAAc;AAChC,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAChD,IAAI,OAAO;AACX,MAAM,KAAK,EAAE,MAAM;AACnB,MAAM,IAAI,EAAE,KAAK;AACjB,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AAC/B,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACnC,GAAG;AACH,EAAE,kBAAkB,CAAC,cAAc,EAAE;AACrC,IAAI,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAC1C,IAAI,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM;AACxC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACrC,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AACnC,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;AAC/B,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACxB,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACrC,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI;AACzC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC/D,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAC/D,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtD,KAAK;AACL,GAAG;AACH,CAAC;AACD,MAAM,eAAe,CAAC;AACtB,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;AAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACnD,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACjC,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;AACvD,GAAG;AACH,EAAE,IAAI,oBAAoB,GAAG;AAC7B,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC;AACtC,GAAG;AACH,EAAE,MAAM,IAAI,GAAG;AACf,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AACvC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,MAAM,IAAI,CAAC,YAAY,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC9C,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE;AACxB,MAAM,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACrD,MAAM,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;AACjC,IAAI,IAAI,CAAC,UAAU,GAAG;AACtB,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAChD,IAAI,OAAO;AACX,MAAM,KAAK,EAAE,MAAM;AACnB,MAAM,IAAI,EAAE,KAAK;AACjB,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AAC/B,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACnC,GAAG;AACH,EAAE,kBAAkB,CAAC,cAAc,EAAE;AACrC,IAAI,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAC1C,IAAI,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM;AACxC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACrC,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AACnC,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;AAC/B,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACxB,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACrC,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI;AACzC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtD,KAAK;AACL,GAAG;AACH,CAAC;AACD,MAAM,uBAAuB,SAAS,cAAc,CAAC;AACrD,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAClB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvD,IAAI,MAAM,cAAc,GAAG,QAAQ,IAAI;AACvC,MAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE;AACvC,QAAQ,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;AACxC,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACxC,MAAM,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACxE,MAAM,MAAM;AACZ,QAAQ,kBAAkB;AAC1B,QAAQ,eAAe;AACvB,OAAO,GAAG,gCAAgC,CAAC;AAC3C,QAAQ,eAAe;AACvB,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM;AAC7B,QAAQ,cAAc,EAAE,IAAI,CAAC,eAAe;AAC5C,QAAQ,YAAY,EAAE,IAAI,CAAC,aAAa;AACxC,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,iBAAiB,GAAG,kBAAkB,CAAC;AAClD,MAAM,IAAI,CAAC,cAAc,GAAG,eAAe,IAAI,IAAI,CAAC,cAAc,CAAC;AACnE,MAAM,IAAI,CAAC,SAAS,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;AAClE,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI;AACxC,MAAM,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AACjC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7C,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACxB,GAAG;AACH,CAAC;AACD,MAAM,wBAAwB,SAAS,eAAe,CAAC;AACvD,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;AAClC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAClB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvD,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM,cAAc,GAAG,QAAQ,IAAI;AACvC,MAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE;AACvC,QAAQ,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAClC,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACxC,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI;AACxC,MAAM,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AACjC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACxB,GAAG;AACH,CAAC;AACD,MAAM,yBAAyB,SAAS,cAAc,CAAC;AACvD,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAClB,IAAI,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI;AAC9C,MAAM,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC;AACtC,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;AACxC,KAAK,EAAE,KAAK,IAAI;AAChB,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AACnC,QAAQ,KAAK,GAAG,IAAI,mBAAmB,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE,OAAO;AACP,MAAM,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD,MAAM,0BAA0B,SAAS,eAAe,CAAC;AACzD,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;AAClC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAClB,IAAI,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;AAC3D,MAAM,KAAK;AACX,MAAM,GAAG,EAAE,GAAG,GAAG,CAAC;AAClB,KAAK,CAAC,CAAC,CAAC;AACR,GAAG;AACH,CAAC;AAGD;AACA;AACA,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,SAAS,CAAC;AAChB,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACxC,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,oBAAoB,GAAG,KAAK,CAAC;AAC/B,EAAE,qBAAqB,GAAG,CAAC,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC;AAC9D,EAAE,KAAK,GAAG,IAAI,CAAC;AACf,EAAE,iBAAiB,GAAG,IAAI,CAAC;AAC3B,EAAE,WAAW,GAAG,CAAC,CAAC;AAClB,EAAE,UAAU,GAAG,CAAC,CAAC;AACjB,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,cAAc,GAAG,IAAI,CAAC;AACxB,EAAE,SAAS,GAAG,CAAC,CAAC;AAChB,EAAE,MAAM,GAAG,CAAC,CAAC;AACb,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,EAAE,oBAAoB,GAAG,EAAE,CAAC;AAC5B,EAAE,kBAAkB,GAAG,IAAI,CAAC;AAC5B,EAAE,SAAS,GAAG,EAAE,CAAC;AACjB,EAAE,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;AACrC,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,OAAO,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AAClC,EAAE,OAAO,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;AACrC,EAAE,OAAO,eAAe,GAAG,IAAI,OAAO,EAAE,CAAC;AACzC,EAAE,OAAO,YAAY,GAAG,IAAI,CAAC;AAC7B,EAAE,OAAO,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;AACxC,EAAE,WAAW,CAAC;AACd,IAAI,iBAAiB;AACrB,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,GAAG,EAAE;AACL,IAAI,IAAI,iBAAiB,YAAY,cAAc,EAAE;AACrD,MAAM,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;AAClD,KAAK,MAAM,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;AACtD,MAAM,IAAI,CAAC,kBAAkB,GAAG,IAAI,cAAc,CAAC;AACnD,QAAQ,KAAK,CAAC,UAAU,EAAE;AAC1B,UAAU,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAChD,UAAU,UAAU,CAAC,KAAK,EAAE,CAAC;AAC7B,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AACtD,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,IAAI,UAAU,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACvC,IAAI,IAAI,CAAC,iBAAiB,GAAG;AAC7B,MAAM,GAAG,EAAE,IAAI;AACf,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,GAAG,EAAE,IAAI;AACf,KAAK,CAAC;AACN,IAAI,MAAM;AACV,MAAM,SAAS;AACf,MAAM,UAAU;AAChB,MAAM,KAAK;AACX,MAAM,KAAK;AACX,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;AACzB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;AAChE,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAClC,IAAI,SAAS,CAAC,0BAA0B,EAAE,CAAC;AAC3C,IAAI,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAC3C,MAAM,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChD,MAAM,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACpC,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9B,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACvB,GAAG;AACH,EAAE,WAAW,aAAa,GAAG;AAC7B,IAAI,MAAM;AACV,MAAM,SAAS;AACf,MAAM,SAAS;AACf,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAClC,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,IAAI,SAAS,GAAG,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,IAAI,SAAS,GAAG,kBAAkB,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7M,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,IAAI,GAAG,MAAM;AACvB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAChC,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,OAAO,KAAK;AACZ,QAAQ,IAAI,IAAI,EAAE;AAClB,UAAU,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACrC,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;AAClC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACxC,QAAQ,IAAI,EAAE,CAAC;AACf,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAClC,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;AACvD,IAAI,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACpC,GAAG;AACH,EAAE,MAAM,CAAC;AACT,IAAI,QAAQ;AACZ,IAAI,QAAQ,GAAG,IAAI;AACnB,GAAG,EAAE;AACL,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,UAAU,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;AACtE,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACvC,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;AACrC,MAAM,QAAQ,IAAI,CAAC;AACnB,MAAM,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAChC,MAAM,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9C,QAAQ,QAAQ;AAChB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE;AAC/B,MAAM,QAAQ,IAAI,CAAC;AACnB,MAAM,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC1B,MAAM,MAAM,MAAM,GAAG;AACrB,QAAQ,GAAG,EAAE,IAAI;AACjB,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,OAAO,CAAC;AACR,MAAM,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;AACxC,QAAQ,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7D,QAAQ,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AACzB,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,2BAA2B,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,IAAI,mBAAmB,GAAG;AAC5B,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC;AACrC,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,KAAK,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjE,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;AACnC,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACtD,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC9B,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,uBAAuB,EAAE;AACrD,QAAQ,IAAI,CAAC,uDAAuD,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACzC,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AAClC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE;AAC3F,UAAU,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;AACzC,UAAU,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC3D,UAAU,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACzD,UAAU,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;AAChC,YAAY,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,WAAW;AACX,UAAU,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,SAAS,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE;AACrD,UAAU,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACvD,SAAS;AACT,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL,GAAG;AACH,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACnD,IAAI,MAAM,iBAAiB,GAAG;AAC9B,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,WAAW,EAAE,CAAC;AACpB,MAAM,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,EAAE;AAC9B,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB,MAAM,QAAQ,EAAE,CAAC;AACjB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/D,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;AACxB,MAAM,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,UAAU,CAAC;AAC9F,IAAI,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AACvE,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACjF,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC;AAClB,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACnB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClD,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,cAAc,GAAG,2BAA2B,CAAC;AACvD,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;AACnC,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,cAAc,EAAE;AACjD,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,MAAM,QAAQ,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,KAAK,MAAM;AACX,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/D,MAAM,QAAQ,CAAC,GAAG,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClG,IAAI,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,IAAI,iBAAiB,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC5C,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACjD,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;AACnC,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAC3B,IAAI,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACpC,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,0BAA0B,IAAI,IAAI,CAAC,QAAQ,CAAC;AACnF,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,MAAM,iBAAiB,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,IAAI,eAAe,GAAG,KAAK,CAAC;AAChC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AAC5E,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnD,QAAQ,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,MAAM,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,GAAG,EAAE;AAC5G,QAAQ,eAAe,GAAG,IAAI,CAAC;AAC/B,OAAO;AACP,KAAK;AACL,IAAI,IAAI,eAAe,EAAE;AACzB,MAAM,iBAAiB,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAChF,KAAK;AACL,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC5D,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAAG,OAAO,CAAC;AACzC,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,iBAAiB,CAAC;AAC1D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACzC,IAAI,IAAI,iBAAiB,CAAC,OAAO,EAAE;AACnC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,iBAAiB,CAAC,MAAM,EAAE;AAClC,MAAM,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9C,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACjC,KAAK;AACL,GAAG;AACH,EAAE,OAAO,CAAC,MAAM,EAAE;AAClB,IAAI,MAAM;AACV,MAAM,GAAG;AACT,MAAM,UAAU;AAChB,MAAM,GAAG;AACT,KAAK,GAAG,MAAM,CAAC;AACf,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,GAAG,CAAC;AACZ,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,IAAI,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE;AACpC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,WAAW,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE;AAC5D,MAAM,MAAM;AACZ,QAAQ,UAAU;AAClB,OAAO,GAAG,KAAK,CAAC;AAChB,MAAM,MAAM;AACZ,QAAQ,WAAW;AACnB,QAAQ,QAAQ;AAChB,OAAO,GAAG,UAAU,CAAC;AACrB,MAAM,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACxE,MAAM,MAAM;AACZ,QAAQ,KAAK;AACb,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC3C,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;AACrB,QAAQ,SAAS,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAChF,OAAO;AACP,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,KAAK,KAAK,CAAC,EAAE;AAChC,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAChE,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,MAAM,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAClC,KAAK;AACL,GAAG;AACH,EAAE,OAAO,OAAO,GAAG;AACnB,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE;AAC1C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC9B,IAAI,KAAK,MAAM;AACf,MAAM,MAAM;AACZ,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE;AACxC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AACjC,GAAG;AACH,EAAE,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE;AAC9B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACtD,MAAM,MAAM,CAAC,SAAS,GAAG,qBAAqB,CAAC;AAC/C,MAAM,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;AACpC,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,kBAAkB,EAAE,IAAI;AAChC,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1C,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE;AACpC,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,EAAE;AAClB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjD,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;AAC1D,MAAM,OAAO;AACb,KAAK;AACL,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AACrC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B,GAAG;AACH,EAAE,OAAO,0BAA0B,GAAG;AACtC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;AACpC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AAC1B,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC/B,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACpC,IAAI,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;AAC1B,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAC3D,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE;AACtC,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC3D,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,OAAO,YAAY,CAAC;AAC1B,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,iBAAiB,CAAC;AAC7D,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;AAC5D,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;AAC/C,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAC3D,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,KAAK,GAAG,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC;AAChD,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC/C,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;AAC9D,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC;AACnF,IAAI,OAAO,GAAG,CAAC,CAAC;AAChB,IAAI,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACxD,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACzB,QAAQ,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;AACvD,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;AAC9D,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC9C,IAAI,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC;AAC/E,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACxD,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACzB,QAAQ,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;AAC3E,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,IAAI,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,mBAAmB,CAAC;AAC7E,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC7C,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC;AAGD,MAAM,OAAO,CAAC;AACd,EAAE,OAAO,WAAW,CAAC,GAAG,EAAE;AAC1B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,MAAM,GAAG;AACnB,MAAM,KAAK;AACX,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,SAAS,IAAI,CAAC,IAAI,EAAE;AACxB,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC;AACrB,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC7B,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;AAC5B,QAAQ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AACjD,QAAQ,OAAO;AACf,OAAO,MAAM,IAAI,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE;AAChD,QAAQ,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC1C,OAAO,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AAC7B,QAAQ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,OAAO;AACP,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;AACxB,QAAQ,KAAK,CAAC,IAAI,CAAC;AACnB,UAAU,GAAG;AACb,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC1B,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC;AACpB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,OAAO,eAAe,CAAC,IAAI,EAAE;AAC/B,IAAI,OAAO,EAAE,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC;AAChG,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AACxC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,oBAAoB,GAAG,QAAQ,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAC7E,MAAM,wBAAwB,GAAG,QAAQ,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;AACzF,MAAM,oBAAoB,GAAG,QAAQ,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAC7E,MAAM,8BAA8B,GAAG,QAAQ,GAAG,2BAA2B,GAAG,0BAA0B,CAAC;AAC3G,SAAS,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE;AAC/B,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,YAAY,GAAG,EAAE;AACrD,IAAI,GAAG,GAAG;AACV,MAAM,GAAG,EAAE,GAAG;AACd,KAAK,CAAC;AACN,GAAG,MAAM,IAAI,GAAG,YAAY,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACpE,IAAI,GAAG,GAAG;AACV,MAAM,IAAI,EAAE,GAAG;AACf,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,IAAI,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAC5C,EAAE,MAAM;AACR,IAAI,KAAK;AACT,GAAG,GAAG,IAAI,CAAC;AACX,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACnD,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACvD,EAAE,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC;AAC9C,EAAE,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,KAAK,IAAI,CAAC;AACvD,EAAE,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC;AACxC,EAAE,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,YAAY,qBAAqB,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;AACvF,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,cAAc,GAAG,CAAC,GAAG,GAAG,CAAC,cAAc,GAAG,wBAAwB,CAAC;AACxI,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,YAAY,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;AACnE,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;AAClC,EAAE,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;AACjH,EAAE,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;AACvE,EAAE,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC;AAC9C,EAAE,MAAM,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,IAAI,wBAAwB,CAAC;AAC9E,EAAE,MAAM,mBAAmB,GAAG,OAAO,GAAG,CAAC,mBAAmB,KAAK,QAAQ,GAAG,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC3G,EAAE,MAAM,uBAAuB,GAAG,GAAG,CAAC,uBAAuB,IAAI,8BAA8B,CAAC;AAChG,EAAE,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC;AACjD,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;AAC3G,EAAE,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,KAAK,KAAK,CAAC;AACxD,EAAE,MAAM,0BAA0B,GAAG,OAAO,GAAG,CAAC,0BAA0B,KAAK,SAAS,GAAG,GAAG,CAAC,0BAA0B,GAAG,CAAC,QAAQ,CAAC;AACtI,EAAE,MAAM,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,GAAG,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;AAC1G,EAAE,MAAM,eAAe,GAAG,OAAO,GAAG,CAAC,eAAe,KAAK,SAAS,GAAG,GAAG,CAAC,eAAe,GAAG,QAAQ,CAAC;AACpG,EAAE,MAAM,mBAAmB,GAAG,GAAG,CAAC,mBAAmB,KAAK,IAAI,CAAC;AAC/D,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC;AAC3C,EAAE,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,UAAU,CAAC,QAAQ,CAAC;AACjE,EAAE,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC;AACjD,EAAE,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC;AACnD,EAAE,MAAM,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,KAAK,IAAI,CAAC;AACzD,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC;AACrC,EAAE,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,oBAAoB,CAAC;AAClE,EAAE,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,oBAAoB,CAAC;AAClE,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC;AAC3C,EAAE,MAAM,MAAM,GAAG,cAAc,GAAG,cAAc,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;AAC5E,EAAE,MAAM,cAAc,GAAG,OAAO,GAAG,CAAC,cAAc,KAAK,SAAS,GAAG,GAAG,CAAC,cAAc,GAAG,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC;AACtH,EAAE,MAAM,cAAc,GAAG,OAAO,GAAG,CAAC,cAAc,KAAK,SAAS,GAAG,GAAG,CAAC,cAAc,GAAG,iBAAiB,KAAK,oBAAoB,IAAI,uBAAuB,KAAK,0BAA0B,IAAI,OAAO,IAAI,mBAAmB,IAAI,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,mBAAmB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvU,EAAE,IAAI,GAAG,CAAC,aAAa,EAAE;AACzB,IAAI,UAAU,CAAC,sEAAsE,CAAC,CAAC;AACvF,GAAG;AACH,EAAE,IAAI,GAAG,CAAC,aAAa,EAAE;AACzB,IAAI,UAAU,CAAC,sEAAsE,CAAC,CAAC;AACvF,GAAG;AACH,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;AAC5B,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC/B,EAAE,MAAM,gBAAgB,GAAG;AAC3B,IAAI,aAAa,EAAE,IAAI,aAAa,CAAC;AACrC,MAAM,aAAa;AACnB,MAAM,SAAS;AACf,KAAK,CAAC;AACN,IAAI,aAAa,EAAE,IAAI,aAAa,CAAC;AACrC,MAAM,KAAK;AACX,MAAM,aAAa;AACnB,KAAK,CAAC;AACN,IAAI,iBAAiB,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,iBAAiB,CAAC;AACrE,MAAM,OAAO,EAAE,OAAO;AACtB,MAAM,YAAY,EAAE,UAAU;AAC9B,KAAK,CAAC;AACN,IAAI,uBAAuB,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,uBAAuB,CAAC;AACjF,MAAM,OAAO,EAAE,mBAAmB;AAClC,KAAK,CAAC;AACN,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,MAAM,YAAY,GAAG;AACzB,MAAM,SAAS;AACf,MAAM,IAAI,EAAE,mBAAmB,CAAC,UAAU;AAC1C,KAAK,CAAC;AACN,IAAI,MAAM,GAAG,YAAY,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC;AAChG,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,GAAG;AACH,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,KAAK;AACT,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,IAAI,gBAAgB;AACpB,IAAI,cAAc;AAClB,IAAI,MAAM;AACV,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,gBAAgB,EAAE;AACtB,MAAM,YAAY;AAClB,MAAM,eAAe;AACrB,MAAM,YAAY;AAClB,MAAM,eAAe;AACrB,MAAM,0BAA0B;AAChC,MAAM,oBAAoB;AAC1B,MAAM,mBAAmB;AACzB,MAAM,cAAc;AACpB,MAAM,OAAO,EAAE,cAAc,GAAG,OAAO,GAAG,IAAI;AAC9C,MAAM,mBAAmB,EAAE,cAAc,GAAG,mBAAmB,GAAG,IAAI;AACtE,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,eAAe,GAAG;AAC1B,IAAI,eAAe;AACnB,IAAI,mBAAmB;AACvB,IAAI,aAAa;AACjB,IAAI,MAAM;AACV,IAAI,YAAY;AAChB,IAAI,aAAa,EAAE;AACnB,MAAM,gBAAgB;AACtB,MAAM,SAAS;AACf,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY;AAClC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE;AAC1B,MAAM,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3H,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,aAAa,GAAG,IAAI,sBAAsB,CAAC,cAAc,EAAE;AACjE,QAAQ,YAAY;AACpB,QAAQ,aAAa;AACrB,OAAO,CAAC,CAAC;AACT,KAAK,MAAM,IAAI,CAAC,IAAI,EAAE;AACtB,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,QAAQ,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AACtE,OAAO;AACP,MAAM,IAAI,aAAa,CAAC;AACxB,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,MAAM,gBAAgB,GAAG,OAAO,KAAK,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC;AACjI,QAAQ,aAAa,GAAG,gBAAgB,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,aAAa,CAAC;AAClG,OAAO,MAAM;AACb,QAAQ,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,gBAAgB,CAAC;AACjF,OAAO;AACP,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;AACxC,QAAQ,GAAG;AACX,QAAQ,MAAM;AACd,QAAQ,WAAW;AACnB,QAAQ,eAAe;AACvB,QAAQ,cAAc;AACtB,QAAQ,YAAY;AACpB,QAAQ,aAAa;AACrB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,IAAI;AAC5C,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC3C,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAChD,OAAO;AACP,MAAM,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9E,MAAM,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;AACpH,MAAM,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAClC,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzC,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACpC,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,EAAE,IAAI,GAAG,YAAY,GAAG,EAAE;AAC1B,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC;AACpB,GAAG;AACH,EAAE,IAAI;AACN,IAAI,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;AAC9C,GAAG,CAAC,MAAM;AACV,IAAI,IAAI,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC7C,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,8DAA8D,CAAC,CAAC;AAC7G,CAAC;AACD,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,IAAI,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,GAAG,YAAY,MAAM,EAAE;AAC1E,IAAI,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;AACzF,GAAG;AACH,EAAE,IAAI,GAAG,YAAY,UAAU,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE;AAC7E,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,GAAG,YAAY,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;AAC/G,IAAI,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,gEAAgE,CAAC,CAAC;AACrI,CAAC;AACD,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,EAAE,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7H,CAAC;AACD,MAAM,sBAAsB,CAAC;AAC7B,EAAE,OAAO,MAAM,GAAG,CAAC,CAAC;AACpB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AAC/C,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACvD,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACpC,GAAG;AACH,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI;AACR,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AAC9B,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5C,OAAO;AACP,MAAM,MAAM,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AACvC,KAAK,CAAC,OAAO,EAAE,EAAE;AACjB,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AAC5C,OAAO;AACP,MAAM,MAAM,EAAE,CAAC;AACf,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7B,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B,KAAK;AACL,GAAG;AACH,CAAC;AACD,MAAM,qBAAqB,CAAC;AAC5B,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,GAAG,KAAK,EAAE,0BAA0B,GAAG,IAAI,EAAE;AAC/F,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACnC,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AAC3C,IAAI,IAAI,CAAC,0BAA0B,GAAG,0BAA0B,CAAC;AACjE,IAAI,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC9B,IAAI,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AACjC,IAAI,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;AACxC,IAAI,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;AACxC,IAAI,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACpD,GAAG;AACH,EAAE,gBAAgB,CAAC,QAAQ,EAAE;AAC7B,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,mBAAmB,CAAC,QAAQ,EAAE;AAChC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,0BAA0B,CAAC,QAAQ,EAAE;AACvC,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,GAAG;AACH,EAAE,0BAA0B,CAAC,QAAQ,EAAE;AACvC,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE;AAC5B,IAAI,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AACjD,MAAM,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7B,KAAK;AACL,GAAG;AACH,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE;AAChC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM;AAC7C,MAAM,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACtD,QAAQ,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAChC,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,qBAAqB,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM;AAC7C,MAAM,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAC7D,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,qBAAqB,GAAG;AAC1B,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM;AAC7C,MAAM,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAC7D,QAAQ,QAAQ,EAAE,CAAC;AACnB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;AACpC,GAAG;AACH,EAAE,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE;AAC/B,IAAI,WAAW,CAAC,wDAAwD,CAAC,CAAC;AAC1E,GAAG;AACH,EAAE,KAAK,GAAG,EAAE;AACZ,CAAC;AACD,MAAM,gBAAgB,CAAC;AACvB,EAAE,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE;AAClC,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC5B,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,GAAG;AACH,EAAE,IAAI,iBAAiB,GAAG;AAC1B,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;AAC7C,GAAG;AACH,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACzC,GAAG;AACH,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACzC,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAClC,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;AACtC,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACpE,GAAG;AACH,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AACvC,GAAG;AACH,EAAE,OAAO,CAAC,UAAU,EAAE;AACtB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC/C,GAAG;AACH,EAAE,YAAY,CAAC,GAAG,EAAE;AACpB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAC7C,GAAG;AACH,EAAE,cAAc,CAAC,EAAE,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;AAC3C,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;AAC3C,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACzC,GAAG;AACH,EAAE,oBAAoB,GAAG;AACzB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;AAClD,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;AAC3C,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AAC5C,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAC7C,GAAG;AACH,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;AACxC,GAAG;AACH,EAAE,wBAAwB,CAAC;AAC3B,IAAI,MAAM,GAAG,SAAS;AACtB,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,MAAM;AACV,MAAM,eAAe;AACrB,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACnD,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;AACrE,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AAC5C,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACzC,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACzC,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AACrC,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AAC1C,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAC1D,GAAG;AACH,EAAE,OAAO,CAAC,eAAe,GAAG,KAAK,EAAE;AACnC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3E,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACtC,GAAG;AACH,EAAE,gBAAgB,CAAC,GAAG,EAAE;AACxB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACzC,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AACvC,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAC7C,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AAC1C,GAAG;AACH,EAAE,sBAAsB,GAAG;AAC3B,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC;AACpD,GAAG;AACH,CAAC;AACD,MAAM,YAAY,CAAC;AACnB,EAAE,sBAAsB,GAAG,IAAI,CAAC;AAChC,EAAE,eAAe,GAAG,KAAK,CAAC;AAC1B,EAAE,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE;AAC9D,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC9B,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,SAAS,EAAE,GAAG,IAAI,CAAC;AAClD,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AAC3C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;AACjC,IAAI,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;AAC1C,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACjC,GAAG;AACH,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AAC9B,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/B,GAAG;AACH,EAAE,WAAW,CAAC;AACd,IAAI,KAAK;AACT,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;AAC1B,IAAI,OAAO,GAAG,CAAC;AACf,IAAI,OAAO,GAAG,CAAC;AACf,IAAI,QAAQ,GAAG,KAAK;AACpB,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,OAAO,IAAI,YAAY,CAAC;AAC5B,MAAM,OAAO,EAAE,IAAI,CAAC,IAAI;AACxB,MAAM,KAAK;AACX,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,OAAO;AACb,MAAM,QAAQ;AACd,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,cAAc,CAAC;AACjB,IAAI,MAAM,GAAG,SAAS;AACtB,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,MAAM;AACV,MAAM,eAAe;AACrB,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACnD,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAC5E,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7D,GAAG;AACH,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACzC,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACpE,GAAG;AACH,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;AAC1E,GAAG;AACH,EAAE,MAAM,CAAC;AACT,IAAI,aAAa;AACjB,IAAI,QAAQ;AACZ,IAAI,MAAM,GAAG,SAAS;AACtB,IAAI,cAAc,GAAG,cAAc,CAAC,MAAM;AAC1C,IAAI,SAAS,GAAG,IAAI;AACpB,IAAI,UAAU,GAAG,IAAI;AACrB,IAAI,4BAA4B,GAAG,IAAI;AACvC,IAAI,mBAAmB,GAAG,IAAI;AAC9B,IAAI,UAAU,GAAG,IAAI;AACrB,IAAI,sBAAsB,GAAG,IAAI;AACjC,IAAI,SAAS,GAAG,KAAK;AACrB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjC,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;AACrH,IAAI,MAAM;AACV,MAAM,eAAe;AACrB,MAAM,QAAQ;AACd,KAAK,GAAG,UAAU,CAAC;AACnB,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChC,IAAI,4BAA4B,KAAK,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;AAC/F,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvD,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,yBAAyB,EAAE;AAC/C,MAAM,YAAY,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;AAC1D,MAAM,WAAW,CAAC,yBAAyB,GAAG,IAAI,CAAC;AACnD,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,CAAC,EAAE,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACxE,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE;AAC7C,MAAM,WAAW,CAAC,sBAAsB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACnE,MAAM,WAAW,CAAC,YAAY,GAAG;AACjC,QAAQ,OAAO,EAAE,EAAE;AACnB,QAAQ,SAAS,EAAE,EAAE;AACrB,QAAQ,SAAS,EAAE,KAAK;AACxB,QAAQ,cAAc,EAAE,IAAI;AAC5B,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,KAAK,IAAI;AAC9B,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACzD,MAAM,IAAI,IAAI,CAAC,wBAAwB,IAAI,WAAW,EAAE;AACxD,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACpC,OAAO;AACP,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC;AACrC,MAAM,IAAI,KAAK,EAAE;AACjB,QAAQ,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,kBAAkB,CAAC;AAChC,UAAU,WAAW;AACrB,UAAU,MAAM,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;AACnE,SAAS,CAAC,CAAC;AACX,OAAO,MAAM;AACb,QAAQ,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAChD,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACvB,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACvC,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AACvC,UAAU,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,SAAS;AACT,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC;AACtD,MAAM,QAAQ,EAAE,QAAQ;AACxB,MAAM,MAAM,EAAE;AACd,QAAQ,aAAa;AACrB,QAAQ,QAAQ;AAChB,QAAQ,SAAS;AACjB,QAAQ,UAAU;AAClB,OAAO;AACP,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,MAAM,mBAAmB;AACzB,MAAM,YAAY,EAAE,WAAW,CAAC,YAAY;AAC5C,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU;AAChC,MAAM,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;AAClD,MAAM,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;AAClD,MAAM,wBAAwB,EAAE,CAAC,WAAW;AAC5C,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,MAAM,UAAU;AAChB,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,WAAW,CAAC,WAAW,KAAK,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACpE,IAAI,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC;AAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,qBAAqB,CAAC,KAAK;AAC5I,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,QAAQ,EAAE,CAAC;AACnB,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACrC,MAAM,IAAI,EAAE,qBAAqB,CAAC,eAAe,GAAG,eAAe,CAAC,EAAE;AACtE,QAAQ,MAAM,IAAI,KAAK,CAAC,6EAA6E,GAAG,0DAA0D,CAAC,CAAC;AACpK,OAAO;AACP,MAAM,kBAAkB,CAAC,kBAAkB,CAAC;AAC5C,QAAQ,YAAY;AACpB,QAAQ,qBAAqB;AAC7B,OAAO,CAAC,CAAC;AACT,MAAM,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;AAC/C,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACvB,IAAI,OAAO,UAAU,CAAC;AACtB,GAAG;AACH,EAAE,eAAe,CAAC;AAClB,IAAI,MAAM,GAAG,SAAS;AACtB,IAAI,cAAc,GAAG,cAAc,CAAC,MAAM;AAC1C,IAAI,sBAAsB,GAAG,IAAI;AACjC,IAAI,SAAS,GAAG,KAAK;AACrB,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,SAAS,mBAAmB,GAAG;AACnC,MAAM,IAAI,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE;AAC9C,QAAQ,WAAW,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAC3E,QAAQ,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACnD,OAAO;AACP,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,sBAAsB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC3H,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC/D,KAAK;AACL,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE;AAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,MAAM,UAAU,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AAC3D,MAAM,WAAW,CAAC,oBAAoB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACjE,MAAM,CAAC,WAAW,CAAC,WAAW,KAAK,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AAC9D,MAAM,WAAW,CAAC,YAAY,GAAG;AACjC,QAAQ,OAAO,EAAE,EAAE;AACnB,QAAQ,SAAS,EAAE,EAAE;AACrB,QAAQ,SAAS,EAAE,KAAK;AACxB,QAAQ,cAAc,EAAE,IAAI;AAC5B,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACpD,GAAG;AACH,EAAE,iBAAiB,CAAC;AACpB,IAAI,oBAAoB,GAAG,KAAK;AAChC,IAAI,oBAAoB,GAAG,KAAK;AAChC,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACxC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,gBAAgB,EAAE;AAC3E,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU;AAChC,MAAM,oBAAoB,EAAE,oBAAoB,KAAK,IAAI;AACzD,MAAM,oBAAoB,EAAE,oBAAoB,KAAK,IAAI;AACzD,KAAK,EAAE;AACP,MAAM,aAAa,EAAE,uBAAuB;AAC5C,MAAM,IAAI,CAAC,WAAW,EAAE;AACxB,QAAQ,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AACxC,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,cAAc,CAAC,MAAM,GAAG,EAAE,EAAE;AAC9B,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AACrC,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,KAAK;AACL,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AAClD,MAAM,SAAS,IAAI,GAAG;AACtB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU;AACrC,UAAU,KAAK;AACf,UAAU,IAAI;AACd,SAAS,EAAE;AACX,UAAU,IAAI,IAAI,EAAE;AACpB,YAAY,OAAO,CAAC,WAAW,CAAC,CAAC;AACjC,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;AAC1C,UAAU,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1D,UAAU,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AACjD,UAAU,IAAI,EAAE,CAAC;AACjB,SAAS,EAAE,MAAM,CAAC,CAAC;AACnB,OAAO;AACP,MAAM,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG;AAC1B,QAAQ,KAAK,EAAE,EAAE;AACjB,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,QAAQ,IAAI,EAAE,IAAI;AAClB,OAAO,CAAC;AACR,MAAM,IAAI,EAAE,CAAC;AACb,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1D,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE;AAC3D,MAAM,IAAI,CAAC,kBAAkB,CAAC;AAC9B,QAAQ,WAAW;AACnB,QAAQ,MAAM,EAAE,IAAI,KAAK,CAAC,qBAAqB,CAAC;AAChD,QAAQ,KAAK,EAAE,IAAI;AACnB,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE;AAC5C,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,KAAK,MAAM,kBAAkB,IAAI,WAAW,CAAC,WAAW,EAAE;AAChE,QAAQ,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAClD,QAAQ,kBAAkB,CAAC,MAAM,EAAE,CAAC;AACpC,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACtB,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,OAAO,CAAC,UAAU,GAAG,KAAK,EAAE;AAC9B,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5C,IAAI,IAAI,UAAU,IAAI,OAAO,EAAE;AAC/B,MAAM,IAAI,CAAC,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;AACtC,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,WAAW,CAAC,OAAO,GAAG,KAAK,EAAE;AAC/B,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChC,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,EAAE;AACjD,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC,MAAM;AACrD,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AAC3C,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAChC,OAAO,EAAE,uBAAuB,CAAC,CAAC;AAClC,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,KAAK,MAAM;AACf,MAAM,WAAW;AACjB,MAAM,YAAY;AAClB,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE;AACtC,MAAM,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;AAC3D,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACtB,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACjC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,oBAAoB,GAAG;AACzB,IAAI,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACrC,MAAM,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAChD,MAAM,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACzC,KAAK;AACL,GAAG;AACH,EAAE,gBAAgB,CAAC,YAAY,EAAE,QAAQ,EAAE;AAC3C,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;AACzC,IAAI,WAAW,CAAC,sBAAsB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AAC9D,GAAG;AACH,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,WAAW,EAAE;AACnD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAChE,MAAM,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,MAAM,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,KAAK;AACL,IAAI,WAAW,CAAC,YAAY,CAAC,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;AACrE,IAAI,WAAW,CAAC,YAAY,CAAC,cAAc,GAAG,iBAAiB,CAAC,cAAc,CAAC;AAC/E,IAAI,KAAK,MAAM,kBAAkB,IAAI,WAAW,CAAC,WAAW,EAAE;AAC9D,MAAM,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;AAC/C,KAAK;AACL,IAAI,IAAI,iBAAiB,CAAC,SAAS,EAAE;AACrC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL,GAAG;AACH,EAAE,iBAAiB,CAAC;AACpB,IAAI,eAAe;AACnB,IAAI,QAAQ;AACZ,IAAI,6BAA6B;AACjC,IAAI,WAAW;AACf,GAAG,EAAE;AACL,IAAI,MAAM;AACV,MAAM,GAAG;AACT,MAAM,QAAQ;AACd,KAAK,GAAG,6BAA6B,CAAC;AACtC,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,iBAAiB,EAAE;AAC5F,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU;AAChC,MAAM,MAAM,EAAE,eAAe;AAC7B,MAAM,QAAQ;AACd,MAAM,iBAAiB,EAAE,GAAG;AAC5B,MAAM,WAAW;AACjB,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjB,IAAI,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;AAC9C,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzD,IAAI,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,MAAM;AACvB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,OAAO,KAAK;AACZ,QAAQ,IAAI,IAAI,EAAE;AAClB,UAAU,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1C,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AACvC,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAClD,QAAQ,IAAI,EAAE,CAAC;AACf,OAAO,EAAE,MAAM,IAAI;AACnB,QAAQ,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC;AACxC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AACvC,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,IAAI,WAAW,CAAC,YAAY,EAAE;AACtC,UAAU,WAAW,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;AACpD,UAAU,KAAK,MAAM,kBAAkB,IAAI,WAAW,CAAC,WAAW,EAAE;AACpE,YAAY,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;AACrD,WAAW;AACX,UAAU,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,WAAW,CAAC,sBAAsB,EAAE;AAChD,UAAU,WAAW,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5D,SAAS,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE;AACrD,UAAU,WAAW,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1D,SAAS,MAAM;AACf,UAAU,MAAM,MAAM,CAAC;AACvB,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,IAAI,EAAE,CAAC;AACX,GAAG;AACH,EAAE,kBAAkB,CAAC;AACrB,IAAI,WAAW;AACf,IAAI,MAAM;AACV,IAAI,KAAK,GAAG,KAAK;AACjB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,yBAAyB,EAAE;AAC/C,MAAM,YAAY,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;AAC1D,MAAM,WAAW,CAAC,yBAAyB,GAAG,IAAI,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,IAAI,WAAW,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE;AAC5C,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,MAAM,YAAY,2BAA2B,EAAE;AACzD,QAAQ,IAAI,KAAK,GAAG,2BAA2B,CAAC;AAChD,QAAQ,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,EAAE;AAC/D,UAAU,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC;AACrC,SAAS;AACT,QAAQ,WAAW,CAAC,yBAAyB,GAAG,UAAU,CAAC,MAAM;AACjE,UAAU,WAAW,CAAC,yBAAyB,GAAG,IAAI,CAAC;AACvD,UAAU,IAAI,CAAC,kBAAkB,CAAC;AAClC,YAAY,WAAW;AACvB,YAAY,MAAM;AAClB,YAAY,KAAK,EAAE,IAAI;AACvB,WAAW,CAAC,CAAC;AACb,SAAS,EAAE,KAAK,CAAC,CAAC;AAClB,QAAQ,OAAO;AACf,OAAO;AACP,KAAK;AACL,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACxF,IAAI,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC;AACpC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AACpE,MAAM,IAAI,cAAc,KAAK,WAAW,EAAE;AAC1C,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/C,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,GAAG;AACH,CAAC;AACD,MAAM,YAAY,CAAC;AACnB,EAAE,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AACzB,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AAChC,EAAE,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC7B,IAAI,MAAM,KAAK,GAAG;AAClB,MAAM,IAAI,EAAE,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG;AAC5C,QAAQ,QAAQ;AAChB,OAAO,GAAG,IAAI,CAAC;AACf,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;AAC9B,MAAM,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AAC9C,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnC,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE;AACnC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClC,GAAG;AACH,EAAE,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE;AACtC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC5B,GAAG;AACH,CAAC;AACD,MAAM,SAAS,CAAC;AAChB,EAAE,OAAO,aAAa,GAAG,CAAC,CAAC;AAC3B,EAAE,OAAO,iBAAiB,GAAG,KAAK,CAAC;AACnC,EAAE,OAAO,YAAY,CAAC;AACtB,EAAE;AACF,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACpC,MAAM,mBAAmB,CAAC,SAAS,KAAK,kBAAkB,CAAC;AAC3D,KAAK;AACL,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK;AAChD,MAAM,IAAI,IAAI,CAAC;AACf,MAAM,IAAI;AACV,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACpD,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT,OAAO,CAAC,MAAM;AACd,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5C,MAAM,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;AAC1C,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,iBAAiB,GAAG,GAAG,IAAI;AACpC,MAAM,MAAM,OAAO,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;AACrD,QAAQ,IAAI,EAAE,iBAAiB;AAC/B,OAAO,CAAC,CAAC,CAAC;AACV,KAAK,CAAC;AACN,GAAG;AACH,EAAE,WAAW,CAAC;AACd,IAAI,IAAI,GAAG,IAAI;AACf,IAAI,IAAI,GAAG,IAAI;AACf,IAAI,SAAS,GAAG,iBAAiB,EAAE;AACnC,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,IAAI,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACpD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;AAC7C,QAAQ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACxE,OAAO;AACP,MAAM,CAAC,SAAS,CAAC,YAAY,KAAK,IAAI,OAAO,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjE,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACrC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACzC,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;AACpC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3C,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,cAAc,GAAG;AACvB,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC;AAChC,GAAG;AACH,EAAE,mBAAmB,CAAC,IAAI,EAAE;AAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAC,+BAA+B,EAAE;AAClF,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI;AACR,MAAM,SAAS;AACf,KAAK,GAAG,SAAS,CAAC;AAClB,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;AACrE,QAAQ,SAAS,GAAG,SAAS,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1F,OAAO;AACP,MAAM,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE;AAC3C,QAAQ,IAAI,EAAE,QAAQ;AACtB,OAAO,CAAC,CAAC;AACT,MAAM,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAG,MAAM;AACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;AACnB,QAAQ,cAAc,CAAC,OAAO,EAAE,CAAC;AACjC,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;AAC3B,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,UAAU,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC1E,SAAS,MAAM;AACf,UAAU,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAClC,SAAS;AACT,OAAO,CAAC;AACR,MAAM,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;AACvC,MAAM,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AAC7C,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9B,UAAU,cAAc,EAAE,CAAC;AAC3B,SAAS;AACT,OAAO,EAAE;AACT,QAAQ,MAAM,EAAE,EAAE,CAAC,MAAM;AACzB,OAAO,CAAC,CAAC;AACT,MAAM,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,IAAI;AACxC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;AACnB,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE;AACrC,UAAU,cAAc,EAAE,CAAC;AAC3B,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAC9C,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACjC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxB,OAAO,CAAC,CAAC;AACT,MAAM,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI;AACzC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;AACnB,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,UAAU,cAAc,EAAE,CAAC;AAC3B,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,IAAI;AACZ,UAAU,QAAQ,EAAE,CAAC;AACrB,SAAS,CAAC,MAAM;AAChB,UAAU,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAClC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,MAAM,MAAM,QAAQ,GAAG,MAAM;AAC7B,QAAQ,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC;AACzC,QAAQ,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,OAAO,CAAC;AACR,MAAM,QAAQ,EAAE,CAAC;AACjB,MAAM,OAAO;AACb,KAAK,CAAC,MAAM;AACZ,MAAM,IAAI,CAAC,+BAA+B,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE;AACtC,MAAM,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACtC,MAAM,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACzC,KAAK;AACL,IAAI,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,IAAI;AAClE,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACxE,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AACtC,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACxB,MAAM,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACpD,MAAM,MAAM,aAAa,GAAG,IAAI,cAAc,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACzE,MAAM,oBAAoB,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACtD,MAAM,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC;AAC1E,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AACtB,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI;AACvB,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrG,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;AAClC,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC7B,KAAK;AACL,IAAI,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACrC,MAAM,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAClC,KAAK;AACL,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;AACvB,MAAM,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,IAAI,UAAU,CAAC,eAAe,EAAE;AACtC,QAAQ,MAAM,IAAI,KAAK,CAAC,uDAAuD,GAAG,oEAAoE,CAAC,CAAC;AACxJ,OAAO;AACP,MAAM,OAAO,UAAU,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,WAAW,SAAS,GAAG;AACzB,IAAI,IAAI,mBAAmB,CAAC,SAAS,EAAE;AACvC,MAAM,OAAO,mBAAmB,CAAC,SAAS,CAAC;AAC3C,KAAK;AACL,IAAI,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AACrE,GAAG;AACH,EAAE,WAAW,+BAA+B,GAAG;AAC/C,IAAI,IAAI;AACR,MAAM,OAAO,UAAU,CAAC,WAAW,EAAE,oBAAoB,IAAI,IAAI,CAAC;AAClE,KAAK,CAAC,MAAM;AACZ,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH,EAAE,WAAW,sBAAsB,GAAG;AACtC,IAAI,MAAM,MAAM,GAAG,YAAY;AAC/B,MAAM,IAAI,IAAI,CAAC,+BAA+B,EAAE;AAChD,QAAQ,OAAO,IAAI,CAAC,+BAA+B,CAAC;AACpD,OAAO;AACP,MAAM,MAAM,MAAM,GAAG,MAAM,8BAA8B,IAAI,CAAC,SAAS,CAAC,CAAC;AACzE,MAAM,OAAO,MAAM,CAAC,oBAAoB,CAAC;AACzC,KAAK,CAAC;AACN,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAC,CAAC;AAC5D,GAAG;AACH,CAAC;AACD,MAAM,eAAe,CAAC;AACtB,EAAE,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;AAC9B,EAAE,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AACzB,EAAE,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,EAAE,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,EAAE,mBAAmB,GAAG,IAAI,CAAC;AAC7B,EAAE,WAAW,CAAC,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE;AAC3E,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACzC,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACnC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;AACvC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC;AACrC,MAAM,aAAa,EAAE,MAAM,CAAC,aAAa;AACzC,MAAM,YAAY,EAAE,MAAM,CAAC,YAAY;AACvC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9C,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAC/C,IAAI,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAC/C,IAAI,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;AACvD,IAAI,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;AACnE,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAClC,IAAI,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACxC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AAC1D,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/B,GAAG;AACH,EAAE,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE;AACxC,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzD,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,OAAO,aAAa,CAAC;AAC3B,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5C,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,IAAI,iBAAiB,GAAG;AAC1B,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC;AACtE,GAAG;AACH,EAAE,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE;AACzI,IAAI,IAAI,eAAe,GAAG,mBAAmB,CAAC,OAAO,CAAC;AACtD,IAAI,IAAI,6BAA6B,GAAG,iBAAiB,CAAC;AAC1D,IAAI,QAAQ,MAAM;AAClB,MAAM,KAAK,KAAK;AAChB,QAAQ,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC;AAClD,QAAQ,MAAM;AACd,MAAM,KAAK,SAAS;AACpB,QAAQ,MAAM;AACd,MAAM,KAAK,OAAO;AAClB,QAAQ,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACpD,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,IAAI,CAAC,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/D,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,eAAe,GAAG,mBAAmB,CAAC,KAAK,IAAI,sBAAsB,YAAY,sBAAsB,GAAG,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACxL,IAAI,QAAQ,cAAc;AAC1B,MAAM,KAAK,cAAc,CAAC,OAAO;AACjC,QAAQ,eAAe,IAAI,mBAAmB,CAAC,mBAAmB,CAAC;AACnE,QAAQ,MAAM;AACd,MAAM,KAAK,cAAc,CAAC,MAAM;AAChC,QAAQ,MAAM;AACd,MAAM,KAAK,cAAc,CAAC,YAAY;AACtC,QAAQ,eAAe,IAAI,mBAAmB,CAAC,iBAAiB,CAAC;AACjE,QAAQ,MAAM;AACd,MAAM,KAAK,cAAc,CAAC,cAAc;AACxC,QAAQ,eAAe,IAAI,mBAAmB,CAAC,mBAAmB,CAAC;AACnE,QAAQ,6BAA6B,GAAG,iBAAiB,CAAC,YAAY,CAAC;AACvE,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,IAAI,CAAC,CAAC,6CAA6C,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,eAAe,IAAI,mBAAmB,CAAC,UAAU,CAAC;AACxD,KAAK;AACL,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,eAAe,IAAI,mBAAmB,CAAC,MAAM,CAAC;AACpD,KAAK;AACL,IAAI,MAAM;AACV,MAAM,GAAG,EAAE,WAAW;AACtB,MAAM,IAAI,EAAE,eAAe;AAC3B,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC;AACtC,IAAI,MAAM,WAAW,GAAG,CAAC,eAAe,EAAE,6BAA6B,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAC/F,IAAI,OAAO;AACX,MAAM,eAAe;AACrB,MAAM,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,MAAM,6BAA6B;AACnC,MAAM,WAAW;AACjB,KAAK,CAAC;AACN,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAChC,MAAM,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACrD,IAAI,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;AACnG,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;AACjD,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/B,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE;AAClD,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC9E,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM;AACnC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC9B,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC9B,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AACnC,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;AAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,cAAc,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAC3F,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;AAC/B,QAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC,OAAO;AACP,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;AACvC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACtC,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAC1C,GAAG;AACH,EAAE,mBAAmB,GAAG;AACxB,IAAI,MAAM;AACV,MAAM,cAAc;AACpB,MAAM,WAAW;AACjB,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK;AACnD,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,iDAAiD,CAAC,CAAC;AACrF,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;AAC7D,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,GAAG,IAAI;AAC3C,QAAQ,IAAI,CAAC,aAAa,GAAG;AAC7B,UAAU,MAAM,EAAE,GAAG,CAAC,MAAM;AAC5B,UAAU,KAAK,EAAE,GAAG,CAAC,KAAK;AAC1B,SAAS,CAAC;AACV,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,MAAM,GAAG,MAAM;AAC1B,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU;AAC/C,UAAU,KAAK;AACf,UAAU,IAAI;AACd,SAAS,EAAE;AACX,UAAU,IAAI,IAAI,EAAE;AACpB,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,MAAM,CAAC,KAAK,YAAY,WAAW,EAAE,sCAAsC,CAAC,CAAC;AACvF,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI;AAC3B,UAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7B,SAAS,CAAC,CAAC;AACX,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI;AAChC,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI;AACxC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,MAAM,WAAW,CAAC;AAC5B,SAAS,CAAC,CAAC;AACX,OAAO,CAAC;AACR,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,IAAI;AACpD,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1C,MAAM,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM;AACzC,QAAQ,IAAI,CAAC,UAAU,CAAC,oBAAoB,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;AAC9E,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE;AAClC,YAAY,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AACzD,WAAW;AACX,UAAU,UAAU,CAAC,UAAU,GAAG,GAAG,IAAI;AACzC,YAAY,WAAW,CAAC,UAAU,GAAG;AACrC,cAAc,MAAM,EAAE,GAAG,CAAC,MAAM;AAChC,cAAc,KAAK,EAAE,GAAG,CAAC,KAAK;AAC9B,aAAa,CAAC,CAAC;AACf,WAAW,CAAC;AACZ,SAAS;AACT,QAAQ,iBAAiB,CAAC,OAAO,CAAC;AAClC,UAAU,oBAAoB,EAAE,UAAU,CAAC,oBAAoB;AAC/D,UAAU,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;AACvD,UAAU,aAAa,EAAE,UAAU,CAAC,aAAa;AACjD,SAAS,CAAC,CAAC;AACX,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACnC,MAAM,OAAO,iBAAiB,CAAC,OAAO,CAAC;AACvC,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK;AACxD,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,sDAAsD,CAAC,CAAC;AAC1F,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACnF,MAAM,IAAI,CAAC,WAAW,EAAE;AACxB,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,MAAM,GAAG,MAAM;AAC1B,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU;AAC1C,UAAU,KAAK;AACf,UAAU,IAAI;AACd,SAAS,EAAE;AACX,UAAU,IAAI,IAAI,EAAE;AACpB,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,MAAM,CAAC,KAAK,YAAY,WAAW,EAAE,2CAA2C,CAAC,CAAC;AAC5F,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI;AAC3B,UAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7B,SAAS,CAAC,CAAC;AACX,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI;AAChC,QAAQ,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI;AACxC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,MAAM,WAAW,CAAC;AAC5B,SAAS,CAAC,CAAC;AACX,OAAO,CAAC;AACR,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;AACjC,MAAM,OAAO;AACb,KAAK,KAAK;AACV,MAAM,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;AACxC,MAAM,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;AAC5C,MAAM,OAAO,OAAO,CAAC,UAAU,CAAC;AAChC,MAAM,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3E,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,EAAE;AACpD,MAAM,IAAI,MAAM,CAAC;AACjB,MAAM,QAAQ,EAAE,CAAC,IAAI;AACrB,QAAQ,KAAK,mBAAmB;AAChC,UAAU,MAAM,GAAG,IAAI,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9D,UAAU,MAAM;AAChB,QAAQ,KAAK,qBAAqB;AAClC,UAAU,MAAM,GAAG,IAAI,mBAAmB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AACvD,UAAU,MAAM;AAChB,QAAQ,KAAK,qBAAqB;AAClC,UAAU,MAAM,GAAG,IAAI,mBAAmB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AACvD,UAAU,MAAM;AAChB,QAAQ,KAAK,6BAA6B;AAC1C,UAAU,MAAM,GAAG,IAAI,2BAA2B,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AAC1E,UAAU,MAAM;AAChB,QAAQ,KAAK,uBAAuB;AACpC,UAAU,MAAM,GAAG,IAAI,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AACrE,UAAU,MAAM;AAChB,QAAQ;AACR,UAAU,WAAW,CAAC,wCAAwC,CAAC,CAAC;AAChE,OAAO;AACP,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7C,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,IAAI;AACtD,MAAM,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AACzD,MAAM,IAAI,WAAW,CAAC,UAAU,EAAE;AAClC,QAAQ,MAAM,cAAc,GAAG,QAAQ,IAAI;AAC3C,UAAU,IAAI,QAAQ,YAAY,KAAK,EAAE;AACzC,YAAY,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtD,WAAW,MAAM;AACjB,YAAY,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AAC7C,cAAc,QAAQ;AACtB,aAAa,CAAC,CAAC;AACf,WAAW;AACX,SAAS,CAAC;AACV,QAAQ,IAAI;AACZ,UAAU,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AACjE,SAAS,CAAC,OAAO,EAAE,EAAE;AACrB,UAAU,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9C,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAClG,OAAO;AACP,MAAM,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AAC9C,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,IAAI;AAC5C,MAAM,WAAW,CAAC,UAAU,GAAG;AAC/B,QAAQ,MAAM,EAAE,IAAI,CAAC,MAAM;AAC3B,QAAQ,KAAK,EAAE,IAAI,CAAC,MAAM;AAC1B,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChD,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,IAAI;AACjD,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvD,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9D,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK;AACjE,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,QAAQ,IAAI;AAClB,QAAQ,KAAK,MAAM;AACnB,UAAU,MAAM;AAChB,YAAY,eAAe;AAC3B,YAAY,mBAAmB;AAC/B,YAAY,MAAM;AAClB,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,UAAU,IAAI,OAAO,IAAI,YAAY,EAAE;AACvC,YAAY,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC;AACrD,YAAY,IAAI,CAAC,CAAC,2BAA2B,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAChE,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;AACvD,YAAY,MAAM;AAClB,WAAW;AACX,UAAU,MAAM,WAAW,GAAG,MAAM,IAAI,UAAU,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AAChJ,UAAU,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,YAAY,EAAE;AACxD,YAAY,eAAe;AAC3B,YAAY,WAAW;AACvB,WAAW,CAAC,CAAC;AACb,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,cAAc,CAAC,eAAe,CAAC,cAAc,EAAE;AAChG,YAAY,EAAE;AACd,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM;AAC5B,YAAY,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,IAAI,EAAE;AACnD,cAAc,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC/B,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9C,WAAW,CAAC,CAAC;AACb,UAAU,MAAM;AAChB,QAAQ,KAAK,gBAAgB;AAC7B,UAAU,MAAM;AAChB,YAAY,QAAQ;AACpB,WAAW,GAAG,YAAY,CAAC;AAC3B,UAAU,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;AAC5D,UAAU,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;AAC5D,YAAY,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;AACnD,cAAc,IAAI,IAAI,EAAE,GAAG,KAAK,QAAQ,EAAE;AAC1C,gBAAgB,SAAS;AACzB,eAAe;AACf,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjC,gBAAgB,OAAO,IAAI,CAAC;AAC5B,eAAe;AACf,cAAc,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,cAAc,OAAO,IAAI,CAAC,OAAO,CAAC;AAClC,aAAa;AACb,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,UAAU,CAAC;AACxB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,SAAS;AACtB,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AACpD,UAAU,MAAM;AAChB,QAAQ;AACR,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACpE,OAAO;AACP,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK;AACnE,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACvD,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAClC,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE;AAC9C,QAAQ,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACnC,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,QAAQ,IAAI;AAClB,QAAQ,KAAK,OAAO;AACpB,UAAU,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAChD,UAAU,IAAI,SAAS,EAAE,OAAO,GAAG,uBAAuB,EAAE;AAC5D,YAAY,SAAS,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACtD,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,SAAS;AACtB,UAAU,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAChD,UAAU,MAAM;AAChB,QAAQ;AACR,UAAU,MAAM,IAAI,KAAK,CAAC,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,IAAI;AAC7C,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,WAAW,CAAC,UAAU,GAAG;AAC/B,QAAQ,MAAM,EAAE,IAAI,CAAC,MAAM;AAC3B,QAAQ,KAAK,EAAE,IAAI,CAAC,KAAK;AACzB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,IAAI;AAClD,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAClE,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACnC,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC,CAAC;AACnH,OAAO;AACP,MAAM,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChD,KAAK,CAAC,CAAC;AACP,IAAI,cAAc,CAAC,EAAE,CAAC,uBAAuB,EAAE,IAAI,IAAI;AACvD,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAClE,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACzC,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC,CAAC;AACzH,OAAO;AACP,MAAM,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtD,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAChE,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,EAAE;AAC1C,MAAM,IAAI,CAAC,0DAA0D,GAAG,wCAAwC,CAAC,CAAC;AAClH,KAAK;AACL,IAAI,MAAM;AACV,MAAM,GAAG;AACT,MAAM,QAAQ;AACd,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;AAC5C,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,cAAc,EAAE;AAC/D,MAAM,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW;AACnC,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC9B,MAAM,iBAAiB,EAAE,GAAG;AAC5B,MAAM,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,IAAI;AAClD,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM;AAC/B,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAC7C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,CAAC,UAAU,EAAE;AACtB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE;AACzF,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAChE,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC;AACpC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACxD,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,OAAO,aAAa,CAAC;AAC3B,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE;AACnE,MAAM,SAAS;AACf,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI;AACxB,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC/C,OAAO;AACP,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC3B,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC5D,OAAO;AACP,MAAM,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACpF,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC3C,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/C,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,YAAY,CAAC,GAAG,EAAE;AACpB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC1B,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,cAAc,EAAE;AAC/D,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG;AAClB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG;AAClB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE;AACpC,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,EAAE;AACjE,MAAM,SAAS;AACf,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;AACnD,GAAG;AACH,EAAE,sBAAsB,GAAG;AAC3B,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;AAC/E,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACxE,GAAG;AACH,EAAE,cAAc,CAAC,EAAE,EAAE;AACrB,IAAI,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AAChC,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,EAAE;AACjE,MAAM,EAAE;AACR,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACtE,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACtE,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACpE,GAAG;AACH,EAAE,oBAAoB,GAAG;AACzB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;AAC7E,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACtE,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACvE,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,gBAAgB,CAAC,SAAS,EAAE;AAC9B,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,kBAAkB,EAAE;AACnE,MAAM,SAAS;AACf,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,aAAa,CAAC,SAAS,EAAE;AAC3B,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,eAAe,EAAE;AAChE,MAAM,SAAS;AACf,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,UAAU,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACnE,GAAG;AACH,EAAE,wBAAwB,CAAC,eAAe,EAAE;AAC5C,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;AAC9H,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACvE,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,MAAM,IAAI,GAAG,aAAa;AAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrD,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,OAAO,aAAa,CAAC;AAC3B,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK;AACrF,MAAM,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACtB,MAAM,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AAC5D,MAAM,0BAA0B,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,IAAI;AACpE,MAAM,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,IAAI,IAAI;AAC5D,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5C,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACpE,GAAG;AACH,EAAE,MAAM,YAAY,CAAC,eAAe,GAAG,KAAK,EAAE;AAC9C,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC/D,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;AACjD,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/C,MAAM,IAAI,CAAC,iBAAiB,EAAE;AAC9B,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACzF,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1B,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AACjC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;AACxB,GAAG;AACH,EAAE,gBAAgB,CAAC,GAAG,EAAE;AACxB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC1B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3E,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AAClD,GAAG;AACH,CAAC;AACD,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC5C,MAAM,UAAU,CAAC;AACjB,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,EAAE,UAAU,CAAC,KAAK,EAAE;AACpB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACjC,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE;AAChC,MAAM,IAAI,EAAE,YAAY;AACxB,KAAK,CAAC;AACN,GAAG;AACH,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE;AAC9B,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;AAC3C,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC;AACpB,GAAG;AACH,EAAE,GAAG,CAAC,KAAK,EAAE;AACb,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;AAC9C,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE;AAC9B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AAClB,GAAG;AACH,EAAE,KAAK,GAAG;AACV,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;AACpC,MAAM,MAAM;AACZ,QAAQ,IAAI;AACZ,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5B,MAAM,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;AACvB,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;AACpC,MAAM,MAAM;AACZ,QAAQ,IAAI;AACZ,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5B,MAAM,IAAI,IAAI,KAAK,YAAY,EAAE;AACjC,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1B,KAAK;AACL,GAAG;AACH,CAAC;AACD,MAAM,UAAU,CAAC;AACjB,EAAE,mBAAmB,GAAG,IAAI,CAAC;AAC7B,EAAE,WAAW,CAAC,kBAAkB,EAAE;AAClC,IAAI,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;AAClD,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC;AACvD,GAAG;AACH,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE;AACzB,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,IAAI,cAAc,GAAG;AACvB,IAAI,MAAM;AACV,MAAM,cAAc;AACpB,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;AAC9C,IAAI,IAAI,CAAC,cAAc,EAAE;AACzB,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,MAAM;AACV,MAAM,mBAAmB;AACzB,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACjC,IAAI,OAAO,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC,MAAM,IAAI,mBAAmB,EAAE,IAAI,GAAG,CAAC,CAAC;AACzF,GAAG;AACH,CAAC;AACD,MAAM,kBAAkB,CAAC;AACzB,EAAE,IAAI,GAAG,IAAI,CAAC;AACd,EAAE,OAAO,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AACtC,EAAE,WAAW,CAAC;AACd,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,IAAI;AACR,IAAI,UAAU;AACd,IAAI,mBAAmB;AACvB,IAAI,YAAY;AAChB,IAAI,SAAS;AACb,IAAI,aAAa;AACjB,IAAI,aAAa;AACjB,IAAI,wBAAwB,GAAG,KAAK;AACpC,IAAI,MAAM,GAAG,KAAK;AAClB,IAAI,UAAU,GAAG,IAAI;AACrB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,IAAI,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AACnD,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACvC,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACvC,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACzB,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACtC,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC/B,IAAI,IAAI,CAAC,yBAAyB,GAAG,wBAAwB,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,CAAC;AACxG,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AAC9C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;AAC/C,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;AACzD,GAAG;AACH,EAAE,kBAAkB,CAAC;AACrB,IAAI,YAAY,GAAG,KAAK;AACxB,IAAI,qBAAqB;AACzB,GAAG,EAAE;AACL,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC7D,QAAQ,MAAM,IAAI,KAAK,CAAC,kEAAkE,GAAG,0DAA0D,GAAG,yBAAyB,CAAC,CAAC;AACrL,OAAO;AACP,MAAM,kBAAkB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,cAAc,EAAE,OAAO,EAAE;AAC5D,MAAM,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvE,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;AACrE,KAAK;AACL,IAAI,MAAM;AACV,MAAM,aAAa;AACnB,MAAM,QAAQ;AACd,MAAM,SAAS;AACf,MAAM,UAAU;AAChB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AACpB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACrH,MAAM,qBAAqB;AAC3B,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;AAC1B,MAAM,SAAS;AACf,MAAM,QAAQ;AACd,MAAM,YAAY;AAClB,MAAM,UAAU;AAChB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC;AACnC,GAAG;AACH,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE;AACvC,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACzB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;AAC3B,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,MAAM,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB,KAAK;AACL,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,2BAA2B,CAAC,CAAC,0BAA0B,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5H,GAAG;AACH,EAAE,mBAAmB,GAAG;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC7B,MAAM,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,cAAc,CAAC;AACzD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxD,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACpD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,KAAK;AACL,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,IAAI,IAAI,CAAC,yBAAyB,EAAE;AACxC,MAAM,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM;AACrD,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnD,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvE,KAAK;AACL,GAAG;AACH,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACpI,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE;AACrE,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AAC3B,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;AACvC,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9B,QAAQ,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;AACxB,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;AACD,MAAM,OAAO,GAAG,QAAQ,CAAC;AACzB,MAAM,KAAK,GAAG,WAAW,CAAC;AAG1B,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACrF,CAAC;AACD,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AACD,MAAM,eAAe,CAAC;AACtB,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC9B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACrB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,GAAG;AACH,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACpB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACpB,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AACzB,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACrB,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,GAAG;AACH,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,OAAO,OAAO,CAAC,KAAK,EAAE;AACxB,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACpC,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,KAAK,EAAE;AACzB,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,GAAG;AACH,EAAE,OAAO,MAAM,GAAG;AAClB,IAAI,OAAO,WAAW,CAAC;AACvB,GAAG;AACH,EAAE,OAAO,KAAK,GAAG;AACjB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;AAClB,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAChC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3F,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAChC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjI,GAAG;AACH,EAAE,OAAO,SAAS,CAAC,UAAU,EAAE;AAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7B,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,GAAG;AACH,CAAC;AAGD;AACA,MAAM,QAAQ,CAAC;AACf,EAAE,OAAO,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;AAC1D,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC5C,MAAM,KAAK,EAAE,IAAI;AACjB,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,OAAO,CAAC,IAAI;AACxB,MAAM,KAAK,UAAU;AACrB,QAAQ,IAAI,UAAU,CAAC,KAAK,KAAK,IAAI,EAAE;AACvC,UAAU,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC;AAC9C,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,OAAO,EAAE;AAChC,UAAU,MAAM;AAChB,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI;AAChD,UAAU,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC/B,YAAY,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;AACrC,WAAW,CAAC,CAAC;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM;AACd,MAAM,KAAK,OAAO;AAClB,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;AAC3F,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;AAC7D,YAAY,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC/C,WAAW,MAAM,IAAI,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE;AACrE,YAAY,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAC5C,WAAW;AACX,UAAU,IAAI,MAAM,KAAK,OAAO,EAAE;AAClC,YAAY,MAAM;AAClB,WAAW;AACX,UAAU,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,IAAI;AACnD,YAAY,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACjC,cAAc,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;AACpH,aAAa,CAAC,CAAC;AACf,WAAW,CAAC,CAAC;AACb,SAAS,MAAM;AACf,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,IAAI,EAAE;AACzC,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACzD,WAAW;AACX,UAAU,IAAI,MAAM,KAAK,OAAO,EAAE;AAClC,YAAY,MAAM;AAClB,WAAW;AACX,UAAU,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI;AAClD,YAAY,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACjC,cAAc,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;AACvC,aAAa,CAAC,CAAC;AACf,WAAW,CAAC,CAAC;AACb,SAAS;AACT,QAAQ,MAAM;AACd,MAAM,KAAK,QAAQ;AACnB,QAAQ,IAAI,UAAU,CAAC,KAAK,KAAK,IAAI,EAAE;AACvC,UAAU,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACvD,UAAU,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;AACjD,YAAY,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE;AAC9D,cAAc,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;AAChD,aAAa,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AACrE,cAAc,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;AAChD,aAAa;AACb,WAAW;AACX,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI;AAChD,UAAU,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/C,UAAU,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;AACjG,UAAU,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC/B,YAAY,KAAK;AACjB,WAAW,CAAC,CAAC;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM;AACd,KAAK;AACL,GAAG;AACH,EAAE,OAAO,aAAa,CAAC;AACvB,IAAI,IAAI;AACR,IAAI,OAAO;AACX,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,MAAM;AACV,IAAI,WAAW;AACf,GAAG,EAAE;AACL,IAAI,MAAM;AACV,MAAM,UAAU;AAChB,KAAK,GAAG,OAAO,CAAC;AAChB,IAAI,MAAM,mBAAmB,GAAG,IAAI,YAAY,iBAAiB,CAAC;AAClE,IAAI,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE;AACrC,MAAM,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC3D,MAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACjD,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,QAAQ,GAAG;AACjB,QAAQ,KAAK,OAAO;AACpB,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE;AAC5B,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,QAAQ;AACrB,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACtD,UAAU,MAAM;AAChB,QAAQ,KAAK,OAAO;AACpB,UAAU,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3C,UAAU,MAAM;AAChB,QAAQ,KAAK,aAAa;AAC1B,UAAU,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACnC,UAAU,MAAM;AAChB,QAAQ;AACR,UAAU,IAAI,CAAC,mBAAmB,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,WAAW,EAAE;AAC7E,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1C,WAAW;AACX,OAAO;AACP,KAAK;AACL,IAAI,IAAI,mBAAmB,EAAE;AAC7B,MAAM,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;AACjF,KAAK;AACL,IAAI,IAAI,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE;AACtC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACnE,KAAK;AACL,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,UAAU,EAAE;AAC5B,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC;AACjD,IAAI,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;AAC/C,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC;AACpC,IAAI,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,SAAS,CAAC;AAClD,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,aAAa,CAAC;AACzB,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,MAAM;AACd,QAAQ,WAAW;AACnB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,MAAM,gBAAgB,GAAG,MAAM,KAAK,UAAU,CAAC;AACnD,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;AACnC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,IAAI,IAAI,UAAU,CAAC,QAAQ,EAAE;AAC7B,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,gBAAgB,EAAE;AAC1B,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACtB,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzD,QAAQ,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAQ,IAAI,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpE,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAS;AACT,OAAO;AACP,MAAM,OAAO;AACb,QAAQ,QAAQ;AAChB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzC,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC5C,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;AACpB,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AAC1B,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM;AACZ,QAAQ,IAAI;AACZ,OAAO,GAAG,KAAK,CAAC;AAChB,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;AAC5B,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1D,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,SAAS,GAAG,KAAK,EAAE,UAAU,EAAE,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACzI,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7B,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE;AAC5B,QAAQ,IAAI,CAAC,aAAa,CAAC;AAC3B,UAAU,IAAI,EAAE,SAAS;AACzB,UAAU,OAAO,EAAE,KAAK;AACxB,UAAU,OAAO;AACjB,UAAU,MAAM;AAChB,UAAU,WAAW;AACrB,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE;AACtC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAC3C,OAAO,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9B,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1D,QAAQ,IAAI,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AAC/D,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAS;AACT,QAAQ,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,OAAO;AACP,KAAK;AACL,IAAI,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,gBAAgB,CAAC,uDAAuD,CAAC,EAAE;AACxG,MAAM,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,OAAO;AACX,MAAM,QAAQ;AACd,KAAK,CAAC;AACN,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,UAAU,EAAE;AAC5B,IAAI,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/C,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AAClC,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,kCAAkC,GAAG,CAAC,CAAC;AAC7C,MAAM,oBAAoB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC3C,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC7B,GAAG,CAAC;AACJ,CAAC;AACD,MAAM,wBAAwB,CAAC;AAC/B,EAAE,OAAO,MAAM,CAAC,UAAU,EAAE;AAC5B,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;AACnD,IAAI,QAAQ,OAAO;AACnB,MAAM,KAAK,cAAc,CAAC,IAAI;AAC9B,QAAQ,OAAO,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC;AACrD,MAAM,KAAK,cAAc,CAAC,IAAI;AAC9B,QAAQ,OAAO,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC;AACrD,MAAM,KAAK,cAAc,CAAC,MAAM;AAChC,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AACpD,QAAQ,QAAQ,SAAS;AACzB,UAAU,KAAK,IAAI;AACnB,YAAY,OAAO,IAAI,2BAA2B,CAAC,UAAU,CAAC,CAAC;AAC/D,UAAU,KAAK,KAAK;AACpB,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE;AAC7C,cAAc,OAAO,IAAI,kCAAkC,CAAC,UAAU,CAAC,CAAC;AACxE,aAAa,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjD,cAAc,OAAO,IAAI,+BAA+B,CAAC,UAAU,CAAC,CAAC;AACrE,aAAa;AACb,YAAY,OAAO,IAAI,iCAAiC,CAAC,UAAU,CAAC,CAAC;AACrE,UAAU,KAAK,IAAI;AACnB,YAAY,OAAO,IAAI,6BAA6B,CAAC,UAAU,CAAC,CAAC;AACjE,UAAU,KAAK,KAAK;AACpB,YAAY,OAAO,IAAI,gCAAgC,CAAC,UAAU,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,OAAO,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC;AACvD,MAAM,KAAK,cAAc,CAAC,KAAK;AAC/B,QAAQ,OAAO,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACtD,MAAM,KAAK,cAAc,CAAC,QAAQ;AAClC,QAAQ,OAAO,IAAI,yBAAyB,CAAC,UAAU,CAAC,CAAC;AACzD,MAAM,KAAK,cAAc,CAAC,IAAI;AAC9B,QAAQ,OAAO,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC;AACrD,MAAM,KAAK,cAAc,CAAC,MAAM;AAChC,QAAQ,OAAO,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC;AACvD,MAAM,KAAK,cAAc,CAAC,MAAM;AAChC,QAAQ,OAAO,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC;AACvD,MAAM,KAAK,cAAc,CAAC,QAAQ;AAClC,QAAQ,OAAO,IAAI,yBAAyB,CAAC,UAAU,CAAC,CAAC;AACzD,MAAM,KAAK,cAAc,CAAC,KAAK;AAC/B,QAAQ,OAAO,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACtD,MAAM,KAAK,cAAc,CAAC,GAAG;AAC7B,QAAQ,OAAO,IAAI,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACpD,MAAM,KAAK,cAAc,CAAC,OAAO;AACjC,QAAQ,OAAO,IAAI,wBAAwB,CAAC,UAAU,CAAC,CAAC;AACxD,MAAM,KAAK,cAAc,CAAC,SAAS;AACnC,QAAQ,OAAO,IAAI,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAC1D,MAAM,KAAK,cAAc,CAAC,SAAS;AACnC,QAAQ,OAAO,IAAI,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAC1D,MAAM,KAAK,cAAc,CAAC,QAAQ;AAClC,QAAQ,OAAO,IAAI,yBAAyB,CAAC,UAAU,CAAC,CAAC;AACzD,MAAM,KAAK,cAAc,CAAC,SAAS;AACnC,QAAQ,OAAO,IAAI,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAC1D,MAAM,KAAK,cAAc,CAAC,KAAK;AAC/B,QAAQ,OAAO,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACtD,MAAM,KAAK,cAAc,CAAC,cAAc;AACxC,QAAQ,OAAO,IAAI,+BAA+B,CAAC,UAAU,CAAC,CAAC;AAC/D,MAAM;AACN,QAAQ,OAAO,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACjD,KAAK;AACL,GAAG;AACH,CAAC;AACD,MAAM,iBAAiB,CAAC;AACxB,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,UAAU,GAAG,KAAK,CAAC;AACrB,EAAE,aAAa,GAAG,IAAI,CAAC;AACvB,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,YAAY,GAAG,KAAK;AACxB,IAAI,YAAY,GAAG,KAAK;AACxB,IAAI,oBAAoB,GAAG,KAAK;AAChC,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACrC,IAAI,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAClC,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;AAC9C,IAAI,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;AACtD,IAAI,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC;AAC5D,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;AAC9C,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;AAC5C,IAAI,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC;AAC1D,IAAI,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;AACtD,IAAI,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;AAChD,IAAI,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC;AACjD,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AACpC,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,IAAI,oBAAoB,EAAE;AAC9B,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACnC,KAAK;AACL,GAAG;AACH,EAAE,OAAO,aAAa,CAAC;AACvB,IAAI,QAAQ;AACZ,IAAI,WAAW;AACf,IAAI,QAAQ;AACZ,GAAG,EAAE;AACL,IAAI,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,WAAW,EAAE,GAAG,IAAI,QAAQ,EAAE,GAAG,CAAC,CAAC;AAClE,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAChC,GAAG;AACH,EAAE,IAAI,YAAY,GAAG;AACrB,IAAI,OAAO,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,YAAY,CAAC,MAAM,EAAE;AACvB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACzB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,KAAK;AACtB,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,KAAK,CAAC;AACN,IAAI,MAAM;AACV,MAAM,IAAI;AACV,KAAK,GAAG,MAAM,CAAC;AACf,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACnD,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACxB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;AAC5C,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,GAAG;AACH,EAAE,cAAc,CAAC,IAAI,EAAE;AACvB,IAAI,MAAM;AACV,MAAM,SAAS,EAAE;AACjB,QAAQ,KAAK;AACb,OAAO;AACP,MAAM,IAAI,EAAE;AACZ,QAAQ,IAAI,EAAE,WAAW;AACzB,QAAQ,QAAQ;AAChB,OAAO;AACP,MAAM,MAAM,EAAE;AACd,QAAQ,QAAQ,EAAE;AAClB,UAAU,OAAO,EAAE;AACnB,YAAY,SAAS;AACrB,YAAY,UAAU;AACtB,YAAY,KAAK;AACjB,YAAY,KAAK;AACjB,WAAW;AACX,SAAS;AACT,OAAO;AACP,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AACvC,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACxE,IAAI,IAAI,QAAQ,KAAK,CAAC,EAAE;AACxB,MAAM,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAClD,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjC,KAAK;AACL,GAAG;AACH,EAAE,gBAAgB,CAAC,YAAY,EAAE;AACjC,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM,MAAM,EAAE;AACd,QAAQ,IAAI;AACZ,QAAQ,QAAQ;AAChB,OAAO;AACP,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACxD,IAAI,SAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1D,IAAI,IAAI,EAAE,IAAI,YAAY,uBAAuB,CAAC,EAAE;AACpD,MAAM,SAAS,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,SAAS,CAAC;AAClB,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACxC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,MAAM,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AAC7C,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,YAAY,sBAAsB,EAAE;AAC9D,MAAM,MAAM;AACZ,QAAQ,QAAQ;AAChB,OAAO,GAAG,IAAI,CAAC;AACf,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,QAAQ,KAAK,CAAC,EAAE;AAChD,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9C,OAAO;AACP,MAAM,OAAO,SAAS,CAAC;AACvB,KAAK;AACL,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;AACrD,MAAM,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;AACnE,MAAM,IAAI,gBAAgB,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE;AACtD,QAAQ,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,iCAAiC,EAAE,cAAc,CAAC,yBAAyB,CAAC,CAAC;AAC7H,QAAQ,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;AACpC,OAAO,MAAM,IAAI,IAAI,YAAY,kCAAkC,EAAE;AACrE,QAAQ,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,iCAAiC,EAAE,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1G,QAAQ,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;AACpC,OAAO;AACP,MAAM,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK;AACpC,QAAQ,KAAK,yBAAyB,CAAC,KAAK;AAC5C,UAAU,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AACtC,UAAU,MAAM;AAChB,QAAQ,KAAK,yBAAyB,CAAC,MAAM;AAC7C,UAAU,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;AACvC,UAAU,MAAM;AAChB,QAAQ,KAAK,yBAAyB,CAAC,OAAO;AAC9C,UAAU,IAAI,CAAC,qCAAqC,CAAC,CAAC;AACtD,UAAU,MAAM;AAChB,QAAQ,KAAK,yBAAyB,CAAC,KAAK;AAC5C,UAAU,IAAI,CAAC,mCAAmC,CAAC,CAAC;AACpD,UAAU,MAAM;AAChB,QAAQ,KAAK,yBAAyB,CAAC,SAAS;AAChD,UAAU,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC;AAC5C,UAAU,MAAM;AAGhB,OAAO;AACP,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;AACnD,MAAM,IAAI,WAAW,EAAE;AACvB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B,QAAQ,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1G,OAAO,MAAM;AACb,QAAQ,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;AAC9B,OAAO;AACP,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1J,IAAI,MAAM;AACV,MAAM,SAAS;AACf,MAAM,UAAU;AAChB,MAAM,KAAK;AACX,MAAM,KAAK;AACX,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;AACzB,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI,MAAM;AACV,MAAM,QAAQ;AACd,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,QAAQ,KAAK,CAAC,EAAE;AAC7C,MAAM,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAClD,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AACjD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACzB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,SAAS;AACf,MAAM,UAAU;AAChB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;AACrC,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,IAAI,IAAI,YAAY,EAAE,aAAa,CAAC;AACpC,IAAI,IAAI,KAAK,GAAG,GAAG,KAAK,CAAC,EAAE;AAC3B,MAAM,YAAY,GAAG,GAAG,GAAG,KAAK,GAAG,SAAS,CAAC;AAC7C,MAAM,aAAa,GAAG,GAAG,GAAG,MAAM,GAAG,UAAU,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,YAAY,GAAG,GAAG,GAAG,MAAM,GAAG,SAAS,CAAC;AAC9C,MAAM,aAAa,GAAG,GAAG,GAAG,KAAK,GAAG,UAAU,CAAC;AAC/C,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAC/C,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AACjD,IAAI,SAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AACtE,GAAG;AACH,EAAE,IAAI,cAAc,GAAG;AACvB,IAAI,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,KAAK;AACnD,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACzC,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxC,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AACvF,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACpD,QAAQ,CAAC,SAAS,GAAG,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;AACpE,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE;AAC1C,MAAM,OAAO,EAAE,KAAK,IAAI;AACxB,QAAQ,MAAM;AACd,UAAU,OAAO;AACjB,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;AACzB,QAAQ,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AACxE,QAAQ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACtD,UAAU,MAAM,EAAE,MAAM;AACxB,UAAU,OAAO,EAAE,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC;AACjD,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,KAAK,EAAE,KAAK,IAAI;AACtB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACtD,UAAU,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;AACtC,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,MAAM,EAAE,KAAK,IAAI;AACvB,QAAQ,MAAM;AACd,UAAU,MAAM;AAChB,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;AACzB,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AACxE,QAAQ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACtD,UAAU,OAAO,EAAE,MAAM;AACzB,UAAU,MAAM,EAAE,MAAM;AACxB,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,KAAK,EAAE,KAAK,IAAI;AACtB,QAAQ,UAAU,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5C,UAAU,aAAa,EAAE,KAAK;AAC9B,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AACf,OAAO;AACP,MAAM,QAAQ,EAAE,KAAK,IAAI;AACzB,QAAQ,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnD,OAAO;AACP,MAAM,QAAQ,EAAE,KAAK,IAAI;AACzB,QAAQ,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AACtD,OAAO;AACP,MAAM,QAAQ,EAAE,KAAK,IAAI;AACzB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/D,OAAO;AACP,MAAM,OAAO,EAAE,KAAK,IAAI;AACxB,QAAQ,QAAQ,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACtD,OAAO;AACP,MAAM,SAAS,EAAE,KAAK,IAAI;AAC1B,QAAQ,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACxD,OAAO;AACP,MAAM,OAAO,EAAE,KAAK,IAAI;AACxB,QAAQ,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,OAAO;AACP,MAAM,SAAS,EAAE,KAAK,IAAI;AAC1B,QAAQ,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9C,OAAO;AACP,MAAM,WAAW,EAAE,KAAK,IAAI;AAC5B,QAAQ,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACtD,OAAO;AACP,MAAM,WAAW,EAAE,KAAK,IAAI;AAC5B,QAAQ,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACtD,OAAO;AACP,MAAM,QAAQ,EAAE,KAAK,IAAI;AACzB,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC5C,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACtD,UAAU,QAAQ,EAAE,KAAK;AACzB,SAAS,CAAC,CAAC;AACX,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC9C,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;AAC9C,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACpD,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC;AACxB,KAAK;AACL,GAAG;AACH,EAAE,2BAA2B,CAAC,OAAO,EAAE;AACvC,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;AAC9C,IAAI,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACnE,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAC/C,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,MAAM,UAAU,GAAG;AAC3B,UAAU,MAAM,EAAE;AAClB,YAAY,CAAC,UAAU,GAAG,MAAM;AAChC,WAAW;AACX,UAAU,MAAM,EAAE,OAAO;AACzB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3B,QAAQ,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AACtC,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,qBAAqB,GAAG;AAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACzB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,UAAU;AAChB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;AAClB,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,MAAM,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,MAAM,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,EAAE;AACpF,QAAQ,OAAO;AACf,OAAO;AACP,KAAK;AACL,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;AACvB,IAAI,IAAI,SAAS,CAAC;AAClB,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,MAAM;AACZ,QAAQ,WAAW;AACnB,QAAQ,WAAW;AACnB,OAAO,GAAG,KAAK,CAAC;AAChB,MAAM,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;AAC5B,MAAM,SAAS,GAAG,CAAC,+BAA+B,EAAE,CAAC,uCAAuC,CAAC,EAAE,CAAC,8CAA8C,CAAC,EAAE,CAAC,8BAA8B,EAAE,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AACjO,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;AACpC,IAAI,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AACrC,IAAI,MAAM;AACV,MAAM,UAAU;AAChB,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,MAAM,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChD,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACjD,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACjC,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAClD,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC1D,IAAI,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpC,IAAI,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;AAChE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5D,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACpD,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,OAAO,IAAI,KAAK,CAAC;AACxC,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC;AACzC,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;AAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC5C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC9C,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,MAAM,SAAS,EAAE,IAAI,CAAC,CAAC,4CAA4C,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAClI,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACrC,MAAM,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM;AACV,MAAM,SAAS;AACf,MAAM,IAAI;AACV,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACtD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,sBAAsB,CAAC;AAClE,MAAM,IAAI,EAAE;AACZ,QAAQ,KAAK,EAAE,IAAI,CAAC,KAAK;AACzB,QAAQ,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC/B,QAAQ,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AAC/C,QAAQ,WAAW,EAAE,IAAI,CAAC,WAAW;AACrC,QAAQ,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC/B,QAAQ,UAAU,EAAE,IAAI,CAAC,IAAI;AAC7B,QAAQ,WAAW,EAAE,CAAC;AACtB,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9B,QAAQ,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC/B,OAAO;AACP,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB,MAAM,QAAQ,EAAE,CAAC,IAAI,CAAC;AACtB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,WAAW,CAAC,mDAAmD,CAAC,CAAC;AACrE,GAAG;AACH,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE;AAC1C,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5B,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAChD,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,KAAK,MAAM;AACnB,UAAU,IAAI;AACd,UAAU,EAAE;AACZ,UAAU,YAAY;AACtB,SAAS,IAAI,QAAQ,EAAE;AACvB,UAAU,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;AAC3B,YAAY,SAAS;AACrB,WAAW;AACX,UAAU,IAAI,EAAE,KAAK,MAAM,EAAE;AAC7B,YAAY,SAAS;AACrB,WAAW;AACX,UAAU,MAAM,WAAW,GAAG,OAAO,YAAY,KAAK,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC;AACrF,UAAU,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjF,UAAU,IAAI,UAAU,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACnE,YAAY,IAAI,CAAC,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,YAAY,SAAS;AACrB,WAAW;AACX,UAAU,MAAM,CAAC,IAAI,CAAC;AACtB,YAAY,EAAE;AACd,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,WAAW,CAAC,CAAC;AACb,SAAS;AACT,OAAO;AACP,MAAM,OAAO,MAAM,CAAC;AACpB,KAAK;AACL,IAAI,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AAC/D,MAAM,MAAM;AACZ,QAAQ,WAAW;AACnB,OAAO,GAAG,UAAU,CAAC;AACrB,MAAM,MAAM,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAC5D,MAAM,IAAI,EAAE,KAAK,MAAM,EAAE;AACzB,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACjD,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,CAAC,IAAI,CAAC;AAClB,QAAQ,EAAE;AACV,QAAQ,WAAW;AACnB,QAAQ,UAAU;AAClB,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,yBAAyB,GAAG;AAC9B,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACtD,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACjC,MAAM,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACtC,QAAQ,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK,MAAM;AACX,MAAM,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC9C,KAAK;AACL,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,oBAAoB,EAAE,IAAI;AAChC,MAAM,IAAI,EAAE;AACZ,QAAQ,EAAE,EAAE,MAAM;AAClB,OAAO;AACP,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM;AACtD,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,4BAA4B,EAAE;AACxE,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,IAAI;AACZ,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD,MAAM,qBAAqB,SAAS,iBAAiB,CAAC;AACtD,EAAE,WAAW,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,EAAE;AAC1C,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,YAAY;AAC3C,MAAM,oBAAoB,EAAE,IAAI;AAChC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;AACvD,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM,WAAW;AACjB,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClD,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;AAClB,MAAM,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACpE,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AAC5B,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/C,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;AAChC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACvE,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AACjC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACpD,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;AAC1B,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,EAAE;AACxJ,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACxD,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,MAAM,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE;AACjD,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACjC,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACnD,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AAC1D,GAAG;AACH,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE;AAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,MAAM,IAAI,WAAW,EAAE;AACvB,QAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AACtD,OAAO;AACP,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK,CAAC;AACN,IAAI,IAAI,WAAW,IAAI,WAAW,KAAK,EAAE,EAAE;AAC3C,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9B,KAAK;AACL,GAAG;AACH,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE;AACjC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE;AACjD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAClD,IAAI,IAAI,UAAU,CAAC,WAAW,EAAE;AAChC,MAAM,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,MAAM,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC9F,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE;AACjC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE;AAC5B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAClD,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAC3G,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAClD,MAAM,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM;AAC3B,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,EAAE;AACtE,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,MAAM,EAAE;AAClB,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE;AACvB,YAAY,IAAI;AAChB,WAAW;AACX,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,KAAK,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE;AACxC,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC;AAC1C,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC7B,MAAM,IAAI,CAAC,CAAC,yDAAyD,CAAC,GAAG,uDAAuD,CAAC,CAAC;AAClI,MAAM,IAAI,CAAC,gBAAgB,EAAE;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,KAAK,CAAC;AACnC,OAAO;AACP,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,MAAM,gBAAgB,IAAI,CAAC;AAC3B,MAAM,MAAM;AACZ,QAAQ,MAAM,EAAE,eAAe;AAC/B,QAAQ,IAAI,EAAE,aAAa;AAC3B,QAAQ,OAAO;AACf,OAAO,GAAG,SAAS,CAAC;AACpB,MAAM,MAAM,SAAS,GAAG,EAAE,CAAC;AAC3B,MAAM,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AACtE,QAAQ,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;AAChD,QAAQ,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE;AACjD,UAAU,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAC7D,UAAU,KAAK,MAAM;AACrB,YAAY,EAAE;AACd,WAAW,IAAI,MAAM,EAAE;AACvB,YAAY,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7B,WAAW;AACX,SAAS;AACT,QAAQ,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAChE,UAAU,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACtC,YAAY,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO,EAAE;AACpD,cAAc,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,aAAa;AACb,WAAW;AACX,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAChE,UAAU,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;AACpC,SAAS;AACT,OAAO;AACP,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC7C,MAAM,MAAM,MAAM,GAAG,EAAE,CAAC;AACxB,MAAM,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE;AACrC,QAAQ,MAAM;AACd,UAAU,EAAE;AACZ,SAAS,GAAG,KAAK,CAAC;AAClB,QAAQ,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,QAAQ,QAAQ,KAAK,CAAC,IAAI;AAC1B,UAAU,KAAK,MAAM;AACrB,YAAY;AACZ,cAAc,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;AACrD,cAAc,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnC,gBAAgB,KAAK;AACrB,eAAe,CAAC,CAAC;AACjB,cAAc,MAAM;AACpB,aAAa;AACb,UAAU,KAAK,UAAU,CAAC;AAC1B,UAAU,KAAK,aAAa;AAC5B,YAAY;AACZ,cAAc,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,CAAC;AACtE,cAAc,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnC,gBAAgB,KAAK;AACrB,eAAe,CAAC,CAAC;AACjB,cAAc,MAAM;AACpB,aAAa;AACb,UAAU,KAAK,UAAU,CAAC;AAC1B,UAAU,KAAK,SAAS;AACxB,YAAY;AACZ,cAAc,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;AACrD,cAAc,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnC,gBAAgB,KAAK;AACrB,eAAe,CAAC,CAAC;AACjB,cAAc,MAAM;AACpB,aAAa;AACb,UAAU;AACV,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,UAAU,SAAS;AACnB,SAAS,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC1D,UAAU,IAAI,CAAC,CAAC,4CAA4C,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,UAAU,SAAS;AACnB,SAAS;AACT,QAAQ,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AACzD,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;AAChC,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,EAAE;AACtE,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,MAAM,EAAE;AAClB,YAAY,EAAE,EAAE,KAAK;AACrB,YAAY,GAAG,EAAE,MAAM;AACvB,YAAY,IAAI,EAAE,WAAW;AAC7B,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD,MAAM,qBAAqB,SAAS,iBAAiB,CAAC;AACtD,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACnD,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChD,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,GAAG,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC;AAChG,IAAI,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,4BAA4B,CAAC,CAAC;AACrE,IAAI,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC;AACxD,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1B,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,uBAAuB,SAAS,iBAAiB,CAAC;AACxD,EAAE,MAAM,GAAG;AACX,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,wBAAwB,CAAC,OAAO,EAAE;AACpC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE,QAAQ,KAAK,QAAQ,EAAE;AAC1D,QAAQ,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC;AAC9C,OAAO;AACP,MAAM,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,GAAG;AACH,EAAE,eAAe,CAAC,KAAK,EAAE;AACzB,IAAI,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC3E,GAAG;AACH,EAAE,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE;AAC5E,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACpC,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,IAAI;AAClD,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,EAAE;AACtE,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,MAAM,EAAE;AAClB,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;AACrC,YAAY,KAAK,EAAE,KAAK,CAAC,QAAQ;AACjC,YAAY,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACjD,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,IAAI;AAClD,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE;AACjC,UAAU,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC5D,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AACtC,SAAS,MAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;AACzC,UAAU,IAAI,WAAW,CAAC,OAAO,EAAE;AACnC,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;AACrC,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,EAAE;AACtE,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,MAAM,EAAE;AAClB,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;AACrC,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH,EAAE,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1D,IAAI,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,KAAK,EAAE;AAC/C,MAAM,IAAI,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE;AACpE,QAAQ,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,EAAE;AAC3D,UAAU,WAAW,KAAK;AAC1B,YAAY,OAAO,EAAE,KAAK;AAC1B,WAAW,CAAC;AACZ,SAAS;AACT,QAAQ,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAClF,QAAQ,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AAC/D,UAAU,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7E,SAAS,MAAM,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AACtE,UAAU,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/E,SAAS;AACT,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,mBAAmB,CAAC,OAAO,EAAE;AAC/B,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;AACpD,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,KAAK,IAAI,GAAG,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrH,GAAG;AACH,EAAE,aAAa,CAAC,OAAO,EAAE;AACzB,IAAI,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACvD,IAAI,MAAM;AACV,MAAM,SAAS;AACf,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACxC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,IAAI,kCAAkC,CAAC;AACpG,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAChC,IAAI,IAAI,gBAAgB,CAAC;AACzB,IAAI,MAAM,WAAW,GAAG,CAAC,CAAC;AAC1B,IAAI,MAAM,iBAAiB,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAC3D,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7B,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;AACnF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,WAAW,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/E,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa,CAAC;AAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC;AACzF,KAAK,MAAM;AACX,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;AACnF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;AACrF,KAAK;AACL,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;AACzE,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;AAC1C,MAAM,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAChE,KAAK;AACL,GAAG;AACH,EAAE,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE;AACpC,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC7C,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AACtD,GAAG;AACH,CAAC;AACD,MAAM,2BAA2B,SAAS,uBAAuB,CAAC;AAClE,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;AAClJ,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY;AAClB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE;AACxD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC3C,IAAI,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE;AACvE,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE;AAC9B,QAAQ,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACxC,OAAO;AACP,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE;AACnC,QAAQ,CAAC,YAAY,GAAG,KAAK;AAC7B,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC3C,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACzD,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC;AACvB,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC9C,QAAQ,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;AACnC,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,WAAW,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;AAC/C,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1C,QAAQ,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;AACnC,OAAO,CAAC,CAAC,SAAS,CAAC;AACnB,MAAM,IAAI,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE;AACjD,QAAQ,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACnD,OAAO;AACP,MAAM,IAAI,oBAAoB,GAAG,UAAU,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACxG,MAAM,IAAI,oBAAoB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAClD,QAAQ,oBAAoB,GAAG,oBAAoB,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC3E,OAAO;AACP,MAAM,MAAM,WAAW,GAAG;AAC1B,QAAQ,SAAS,EAAE,WAAW;AAC9B,QAAQ,cAAc,EAAE,oBAAoB;AAC5C,QAAQ,kBAAkB,EAAE,IAAI;AAChC,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,OAAO,EAAE,KAAK;AACtB,OAAO,CAAC;AACR,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAQ,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACrD,QAAQ,OAAO,CAAC,WAAW,GAAG,oBAAoB,IAAI,WAAW,CAAC;AAClE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnC,UAAU,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC7C,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAClD,QAAQ,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;AAC9B,QAAQ,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,oBAAoB,IAAI,WAAW,CAAC,CAAC;AAC3E,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnC,UAAU,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC7C,SAAS;AACT,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAClC,QAAQ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;AAC9B,OAAO;AACP,MAAM,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACxC,MAAM,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAClD,MAAM,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,MAAM,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,MAAM,OAAO,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrD,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;AACnC,OAAO;AACP,MAAM,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI;AACjD,QAAQ,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC7B,UAAU,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;AACnC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClF,QAAQ,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC;AAC1C,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,IAAI;AACrD,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC;AAC/D,QAAQ,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,GAAG,YAAY,CAAC;AAC7D,QAAQ,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC;AAC1C,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,YAAY,GAAG,KAAK,IAAI;AAClC,QAAQ,MAAM;AACd,UAAU,cAAc;AACxB,SAAS,GAAG,WAAW,CAAC;AACxB,QAAQ,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,SAAS,EAAE;AACrE,UAAU,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC;AAC9C,SAAS;AACT,QAAQ,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;AACpC,OAAO,CAAC;AACR,MAAM,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,EAAE;AACrD,QAAQ,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI;AACnD,UAAU,IAAI,WAAW,CAAC,OAAO,EAAE;AACnC,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,MAAM;AAChB,YAAY,MAAM;AAClB,WAAW,GAAG,KAAK,CAAC;AACpB,UAAU,IAAI,WAAW,CAAC,SAAS,EAAE;AACrC,YAAY,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;AACjD,WAAW;AACX,UAAU,WAAW,CAAC,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC;AACxD,UAAU,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;AACpC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AACzC,YAAY,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;AACvC,WAAW;AACX,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,IAAI;AACjE,UAAU,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxD,UAAU,MAAM,OAAO,GAAG;AAC1B,YAAY,KAAK,CAAC,KAAK,EAAE;AACzB,cAAc,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AAC/D,cAAc,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnC,gBAAgB,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE;AACvD,eAAe,CAAC,CAAC;AACjB,cAAc,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;AACzD,aAAa;AACb,YAAY,cAAc,CAAC,KAAK,EAAE;AAClC,cAAc,MAAM;AACpB,gBAAgB,cAAc;AAC9B,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;AAC/B,cAAc,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC;AAC1D,cAAc,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,aAAa,EAAE;AACtH,gBAAgB,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC;AACpD,eAAe;AACf,cAAc,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnC,gBAAgB,cAAc;AAC9B,eAAe,CAAC,CAAC;AACjB,aAAa;AACb,YAAY,QAAQ,CAAC,KAAK,EAAE;AAC5B,cAAc,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvE,aAAa;AACb,YAAY,SAAS,EAAE,KAAK,IAAI;AAChC,cAAc,MAAM;AACpB,gBAAgB,SAAS;AACzB,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;AAC/B,cAAc,MAAM;AACpB,gBAAgB,MAAM;AACtB,eAAe,GAAG,KAAK,CAAC;AACxB,cAAc,IAAI,SAAS,KAAK,CAAC,EAAE;AACnC,gBAAgB,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AACpD,gBAAgB,OAAO;AACvB,eAAe;AACf,cAAc,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAC1D,cAAc,IAAI,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;AAChD,cAAc,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE;AACvD,gBAAgB,OAAO;AACvB,eAAe;AACf,cAAc,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAChD,cAAc,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3D,cAAc,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnC,gBAAgB,KAAK;AACrB,eAAe,CAAC,CAAC;AACjB,cAAc,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,EAAE;AAC5E,gBAAgB,MAAM,EAAE,IAAI;AAC5B,gBAAgB,MAAM,EAAE;AACxB,kBAAkB,EAAE;AACpB,kBAAkB,IAAI,EAAE,WAAW;AACnC,kBAAkB,KAAK;AACvB,kBAAkB,UAAU,EAAE,IAAI;AAClC,kBAAkB,SAAS,EAAE,CAAC;AAC9B,kBAAkB,QAAQ,EAAE,MAAM,CAAC,cAAc;AACjD,kBAAkB,MAAM,EAAE,MAAM,CAAC,YAAY;AAC7C,iBAAiB;AACjB,eAAe,CAAC,CAAC;AACjB,aAAa;AACb,WAAW,CAAC;AACZ,UAAU,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3D,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,IAAI;AACrD,UAAU,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;AACpC,UAAU,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;AAC7B,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AACtC,YAAY,SAAS,GAAG,CAAC,CAAC;AAC1B,WAAW,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACpE,YAAY,SAAS,GAAG,CAAC,CAAC;AAC1B,WAAW,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AAC1C,YAAY,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;AACtC,WAAW;AACX,UAAU,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;AAChC,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,MAAM;AAChB,YAAY,KAAK;AACjB,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;AAC3B,UAAU,IAAI,WAAW,CAAC,kBAAkB,KAAK,KAAK,EAAE;AACxD,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,WAAW,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACjD,UAAU,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;AACxC,UAAU,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,EAAE;AACxE,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,MAAM,EAAE;AACpB,cAAc,EAAE;AAChB,cAAc,IAAI,EAAE,WAAW;AAC/B,cAAc,KAAK;AACnB,cAAc,UAAU,EAAE,IAAI;AAC9B,cAAc,SAAS;AACvB,cAAc,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;AACnD,cAAc,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;AAC/C,aAAa;AACb,WAAW,CAAC,CAAC;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,aAAa,GAAG,YAAY,CAAC;AAC3C,QAAQ,YAAY,GAAG,IAAI,CAAC;AAC5B,QAAQ,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,IAAI;AAClD,UAAU,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC5D,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AACxC,YAAY,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AACxC,WAAW;AACX,UAAU,MAAM;AAChB,YAAY,KAAK;AACjB,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;AAC3B,UAAU,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;AACxC,UAAU,IAAI,WAAW,CAAC,kBAAkB,KAAK,KAAK,EAAE;AACxD,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,EAAE;AAC1E,cAAc,MAAM,EAAE,IAAI;AAC1B,cAAc,MAAM,EAAE;AACtB,gBAAgB,EAAE;AAClB,gBAAgB,IAAI,EAAE,WAAW;AACjC,gBAAgB,KAAK;AACrB,gBAAgB,UAAU,EAAE,IAAI;AAChC,gBAAgB,SAAS,EAAE,WAAW,CAAC,SAAS;AAChD,gBAAgB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;AACrD,gBAAgB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;AACjD,eAAe;AACf,aAAa,CAAC,CAAC;AACf,WAAW;AACX,UAAU,aAAa,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;AAC1C,UAAU,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,IAAI;AAC3D,YAAY,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAClD,YAAY,MAAM;AAClB,cAAc,IAAI;AAClB,cAAc,MAAM;AACpB,aAAa,GAAG,KAAK,CAAC;AACtB,YAAY,MAAM;AAClB,cAAc,KAAK;AACnB,cAAc,cAAc;AAC5B,cAAc,YAAY;AAC1B,aAAa,GAAG,MAAM,CAAC;AACvB,YAAY,IAAI,QAAQ,GAAG,cAAc;AACzC,cAAc,MAAM,GAAG,YAAY,CAAC;AACpC,YAAY,QAAQ,KAAK,CAAC,SAAS;AACnC,cAAc,KAAK,oBAAoB;AACvC,gBAAgB;AAChB,kBAAkB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACvF,kBAAkB,IAAI,KAAK,EAAE;AAC7B,oBAAoB,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAChD,mBAAmB;AACnB,kBAAkB,MAAM;AACxB,iBAAiB;AACjB,cAAc,KAAK,mBAAmB;AACtC,gBAAgB;AAChB,kBAAkB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACpF,kBAAkB,IAAI,KAAK,EAAE;AAC7B,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,mBAAmB;AACnB,kBAAkB,MAAM;AACxB,iBAAiB;AACjB,cAAc,KAAK,uBAAuB;AAC1C,gBAAgB,IAAI,cAAc,KAAK,YAAY,EAAE;AACrD,kBAAkB,QAAQ,IAAI,CAAC,CAAC;AAChC,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,cAAc,KAAK,sBAAsB;AACzC,gBAAgB,IAAI,cAAc,KAAK,YAAY,EAAE;AACrD,kBAAkB,MAAM,IAAI,CAAC,CAAC;AAC9B,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,KAAK,CAAC,cAAc,EAAE,CAAC;AACnC,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,EAAE;AAC1E,cAAc,MAAM,EAAE,IAAI;AAC1B,cAAc,MAAM,EAAE;AACtB,gBAAgB,EAAE;AAClB,gBAAgB,IAAI,EAAE,WAAW;AACjC,gBAAgB,KAAK;AACrB,gBAAgB,MAAM,EAAE,IAAI,IAAI,EAAE;AAClC,gBAAgB,UAAU,EAAE,KAAK;AACjC,gBAAgB,QAAQ;AACxB,gBAAgB,MAAM;AACtB,eAAe;AACf,aAAa,CAAC,CAAC;AACf,WAAW,CAAC,CAAC;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9O,OAAO;AACP,MAAM,IAAI,YAAY,EAAE;AACxB,QAAQ,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACvD,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAC1B,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjE,QAAQ,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAC9C,QAAQ,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,QAAQ,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,+BAA+B,CAAC,CAAC;AACzF,OAAO;AACP,KAAK,MAAM;AACX,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACjD,MAAM,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC7C,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC;AAC3C,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAClC,QAAQ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;AAC9B,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,gCAAgC,SAAS,uBAAuB,CAAC;AACvE,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY;AAClD,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD,MAAM,+BAA+B,SAAS,uBAAuB,CAAC;AACtE,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,UAAU,CAAC,WAAW;AAC1C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC3C,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACvB,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACrC,MAAM,KAAK,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,UAAU;AACjD,KAAK,CAAC,CAAC,KAAK,CAAC;AACb,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,MAAM,KAAK,GAAG,KAAK,KAAK,KAAK,CAAC;AAC9B,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC3B,QAAQ,KAAK;AACb,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC;AACvE,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACpD,IAAI,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtC,IAAI,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAChD,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;AAC9B,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AAClC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1D,IAAI,OAAO,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AACzC,IAAI,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,IAAI;AAChD,MAAM,MAAM;AACZ,QAAQ,IAAI;AACZ,QAAQ,OAAO;AACf,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;AACvB,MAAM,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;AAChE,QAAQ,MAAM,UAAU,GAAG,OAAO,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC;AAChF,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE;AACjC,UAAU,QAAQ,CAAC,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC;AACnD,SAAS;AACT,QAAQ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtC,UAAU,KAAK,EAAE,UAAU;AAC3B,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC3B,QAAQ,KAAK,EAAE,OAAO;AACtB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,IAAI;AACnD,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC;AAC3D,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,YAAY,KAAK,IAAI,CAAC,WAAW,CAAC;AAC/D,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,EAAE;AACnD,MAAM,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,IAAI;AAC/D,QAAQ,MAAM,OAAO,GAAG;AACxB,UAAU,KAAK,CAAC,KAAK,EAAE;AACvB,YAAY,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;AAChE,YAAY,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACjC,cAAc,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;AACzC,aAAa,CAAC,CAAC;AACf,WAAW;AACX,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrR,KAAK;AACL,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,kCAAkC,SAAS,uBAAuB,CAAC;AACzE,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,UAAU,CAAC,WAAW;AAC1C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;AAC1E,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC3C,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACvB,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACrC,MAAM,KAAK,EAAE,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW;AACjD,KAAK,CAAC,CAAC,KAAK,CAAC;AACb,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC;AACzC,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC3B,QAAQ,KAAK;AACb,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE;AACvE,QAAQ,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE;AACnC,UAAU,KAAK,EAAE,KAAK;AACtB,SAAS,CAAC,CAAC;AACX,OAAO;AACP,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACpD,IAAI,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtC,IAAI,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAChD,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,IAAI,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;AAC3B,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AAClC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AACzC,IAAI,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,IAAI;AAChD,MAAM,MAAM;AACZ,QAAQ,IAAI;AACZ,QAAQ,OAAO;AACf,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;AACvB,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;AAC7D,QAAQ,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE;AACnC,UAAU,KAAK,EAAE,KAAK;AACtB,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC3B,QAAQ,KAAK,EAAE,OAAO;AACtB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,IAAI;AACnD,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAClD,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,CAAC,WAAW,CAAC;AACtH,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,EAAE;AACnD,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;AAC9C,MAAM,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,IAAI;AAC/D,QAAQ,MAAM,OAAO,GAAG;AACxB,UAAU,KAAK,EAAE,KAAK,IAAI;AAC1B,YAAY,MAAM,OAAO,GAAG,cAAc,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAClE,YAAY,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC5E,cAAc,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AAC5D,cAAc,IAAI,KAAK,CAAC,UAAU,EAAE;AACpC,gBAAgB,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC;AACtD,eAAe;AACf,cAAc,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE;AACzC,gBAAgB,KAAK,EAAE,UAAU;AACjC,eAAe,CAAC,CAAC;AACjB,aAAa;AACb,WAAW;AACX,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrR,KAAK;AACL,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACnC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,iCAAiC,SAAS,qBAAqB,CAAC;AACtE,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,aAAa;AACjD,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AACrC,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;AACpE,IAAI,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC;AAC5C,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,IAAI,WAAW,EAAE;AAClE,MAAM,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;AACpD,MAAM,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,IAAI;AACnE,QAAQ,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACpD,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,GAAG;AACH,CAAC;AACD,MAAM,6BAA6B,SAAS,uBAAuB,CAAC;AACpE,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,UAAU,CAAC,WAAW;AAC1C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC3D,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC3C,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5B,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC5C,MAAM,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;AACjC,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC3D,IAAI,oBAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC5C,IAAI,aAAa,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AACtD,IAAI,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChD,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzD,IAAI,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7C,IAAI,aAAa,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AAC/C,IAAI,IAAI,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1E,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC1B,MAAM,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACpD,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACjC,QAAQ,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtC,OAAO;AACP,KAAK;AACL,IAAI,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,IAAI;AACzD,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACvD,MAAM,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AAClD,QAAQ,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC;AACxD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC5C,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC7D,MAAM,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;AACtD,MAAM,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;AAC/C,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AACzD,QAAQ,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACrD,QAAQ,eAAe,GAAG,KAAK,CAAC;AAChC,OAAO;AACP,MAAM,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,gBAAgB,GAAG,IAAI,CAAC;AAChC,IAAI,IAAI,eAAe,EAAE;AACzB,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjE,MAAM,iBAAiB,CAAC,KAAK,GAAG,GAAG,CAAC;AACpC,MAAM,iBAAiB,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACrD,MAAM,iBAAiB,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACvD,MAAM,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC/C,MAAM,gBAAgB,GAAG,MAAM;AAC/B,QAAQ,iBAAiB,CAAC,MAAM,EAAE,CAAC;AACnC,QAAQ,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACrE,QAAQ,gBAAgB,GAAG,IAAI,CAAC;AAChC,OAAO,CAAC;AACR,MAAM,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAChE,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,QAAQ,IAAI;AACjC,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;AACtD,MAAM,MAAM;AACZ,QAAQ,OAAO;AACf,QAAQ,QAAQ;AAChB,OAAO,GAAG,aAAa,CAAC;AACxB,MAAM,IAAI,CAAC,QAAQ,EAAE;AACrB,QAAQ,OAAO,OAAO,CAAC,aAAa,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1F,OAAO;AACP,MAAM,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACzG,KAAK,CAAC;AACN,IAAI,IAAI,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzC,IAAI,MAAM,QAAQ,GAAG,KAAK,IAAI;AAC9B,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3C,MAAM,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1D,QAAQ,YAAY,EAAE,MAAM,CAAC,WAAW;AACxC,QAAQ,WAAW,EAAE,MAAM,CAAC,KAAK;AACjC,OAAO,CAAC,CAAC,CAAC;AACV,KAAK,CAAC;AACN,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,EAAE;AACnD,MAAM,aAAa,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,IAAI;AACrE,QAAQ,MAAM,OAAO,GAAG;AACxB,UAAU,KAAK,CAAC,KAAK,EAAE;AACvB,YAAY,gBAAgB,IAAI,CAAC;AACjC,YAAY,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC7C,YAAY,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E,YAAY,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AACxD,cAAc,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,aAAa;AACb,YAAY,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACjC,cAAc,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;AACnC,aAAa,CAAC,CAAC;AACf,YAAY,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,WAAW;AACX,UAAU,iBAAiB,CAAC,KAAK,EAAE;AACnC,YAAY,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1C,WAAW;AACX,UAAU,MAAM,CAAC,KAAK,EAAE;AACxB,YAAY,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;AAClD,YAAY,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC5C,YAAY,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,cAAc,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3F,cAAc,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC5B,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC3C,eAAe;AACf,aAAa;AACb,YAAY,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACjC,cAAc,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;AACnC,cAAc,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AACpC,aAAa,CAAC,CAAC;AACf,YAAY,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,WAAW;AACX,UAAU,KAAK,CAAC,KAAK,EAAE;AACvB,YAAY,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/C,cAAc,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,aAAa;AACb,YAAY,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACjC,cAAc,KAAK,EAAE,IAAI;AACzB,cAAc,KAAK,EAAE,EAAE;AACvB,aAAa,CAAC,CAAC;AACf,YAAY,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,WAAW;AACX,UAAU,MAAM,CAAC,KAAK,EAAE;AACxB,YAAY,MAAM;AAClB,cAAc,KAAK;AACnB,cAAc,YAAY;AAC1B,cAAc,WAAW;AACzB,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AACpC,YAAY,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9D,YAAY,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnE,YAAY,aAAa,CAAC,WAAW,GAAG,YAAY,CAAC;AACrD,YAAY,aAAa,CAAC,KAAK,GAAG,WAAW,CAAC;AAC9C,YAAY,IAAI,WAAW,EAAE;AAC7B,cAAc,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAChD,aAAa,MAAM;AACnB,cAAc,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAClD,aAAa;AACb,YAAY,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACjC,cAAc,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;AACnC,cAAc,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AACpC,aAAa,CAAC,CAAC;AACf,YAAY,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,WAAW;AACX,UAAU,KAAK,CAAC,KAAK,EAAE;AACvB,YAAY,MAAM;AAClB,cAAc,KAAK;AACnB,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B,YAAY,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/C,cAAc,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,aAAa;AACb,YAAY,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtC,cAAc,MAAM;AACpB,gBAAgB,YAAY;AAC5B,gBAAgB,WAAW;AAC3B,eAAe,GAAG,IAAI,CAAC;AACvB,cAAc,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACrE,cAAc,aAAa,CAAC,WAAW,GAAG,YAAY,CAAC;AACvD,cAAc,aAAa,CAAC,KAAK,GAAG,WAAW,CAAC;AAChD,cAAc,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAClD,aAAa;AACb,YAAY,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,cAAc,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvD,aAAa;AACb,YAAY,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACjC,cAAc,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;AACnC,cAAc,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AACpC,aAAa,CAAC,CAAC;AACf,YAAY,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,WAAW;AACX,UAAU,OAAO,CAAC,KAAK,EAAE;AACzB,YAAY,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1D,YAAY,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;AACvD,cAAc,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,aAAa;AACb,YAAY,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACjC,cAAc,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;AACnC,aAAa,CAAC,CAAC;AACf,YAAY,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,WAAW;AACX,UAAU,QAAQ,CAAC,KAAK,EAAE;AAC1B,YAAY,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3D,WAAW;AACX,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,OAAO,CAAC,CAAC;AACT,MAAM,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI;AACvD,QAAQ,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvC,QAAQ,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC7B,UAAU,KAAK,EAAE,WAAW;AAC5B,SAAS,CAAC,CAAC;AACX,QAAQ,KAAK,CAAC,cAAc,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,EAAE;AACtE,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,MAAM,EAAE;AAClB,YAAY,EAAE;AACd,YAAY,IAAI,EAAE,WAAW;AAC7B,YAAY,KAAK,EAAE,cAAc;AACjC,YAAY,MAAM;AAClB,YAAY,QAAQ,EAAE,WAAW;AACjC,YAAY,UAAU,EAAE,KAAK;AAC7B,YAAY,SAAS,EAAE,CAAC;AACxB,YAAY,OAAO,EAAE,KAAK;AAC1B,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvR,KAAK,MAAM;AACX,MAAM,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,KAAK,EAAE;AAC/D,QAAQ,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC7B,UAAU,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC/B,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACzB,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AACxC,KAAa;AACb,IAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACzC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,sBAAsB,SAAS,iBAAiB,CAAC;AACvD,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM,QAAQ;AACd,KAAK,GAAG,UAAU,CAAC;AACnB,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC;AACzD,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACpD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC;AAChD,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;AAC5B,MAAM,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;AAClC,MAAM,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;AAClD,MAAM,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;AACxC,MAAM,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;AAClC,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1B,MAAM,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI;AAC9C,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1B,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,UAAU,GAAG,EAAE,CAAC;AAC1B,IAAI,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzC,MAAM,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7G,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,YAAY,CAAC;AACnB,EAAE,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,EAAE,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,EAAE,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,EAAE,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,EAAE,MAAM,GAAG,IAAI,CAAC;AAChB,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,YAAY,GAAG,IAAI,CAAC;AACtB,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,SAAS,GAAG,IAAI,CAAC;AACnB,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,WAAW,GAAG,IAAI,CAAC;AACrB,EAAE,OAAO,GAAG,KAAK,CAAC;AAClB,EAAE,MAAM,GAAG,IAAI,CAAC;AAChB,EAAE,SAAS,GAAG,IAAI,CAAC;AACnB,EAAE,KAAK,GAAG,IAAI,CAAC;AACf,EAAE,SAAS,GAAG,IAAI,CAAC;AACnB,EAAE,SAAS,GAAG,IAAI,CAAC;AACnB,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,WAAW,GAAG,KAAK,CAAC;AACtB,EAAE,WAAW,CAAC;AACd,IAAI,SAAS;AACb,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,gBAAgB;AACpB,IAAI,WAAW;AACf,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,IAAI;AACR,IAAI,UAAU;AACd,IAAI,IAAI;AACR,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC9B,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACpC,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAClC,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC;AACxE,IAAI,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;AACxC,MAAM,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3D,MAAM,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9D,MAAM,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9D,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACpC,MAAM,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;AAClC,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9D,IAAI,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;AAC9B,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACrF,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,oCAAoC,CAAC,EAAE;AAClF,QAAQ,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;AACpF,OAAO,MAAM;AACb,QAAQ,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACvC,QAAQ,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjI,OAAO;AACP,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAClD,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;AAChC,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC/C,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,IAAI,CAAC;AACL,MAAM,GAAG,EAAE,KAAK,CAAC,GAAG;AACpB,MAAM,GAAG,EAAE,KAAK,CAAC,WAAW;AAC5B,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AACxB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACzB,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9D,MAAM,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAClD,MAAM,gBAAgB,CAAC,YAAY,CAAC,cAAc,EAAE,mCAAmC,CAAC,CAAC;AACzF,MAAM,gBAAgB,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC;AACrE,QAAQ,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AACxC,OAAO,CAAC,CAAC,CAAC;AACV,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5B,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,QAAQ,CAAC,MAAM,CAAC;AACtB,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,MAAM,EAAE,UAAU;AAC1B,QAAQ,GAAG,EAAE,KAAK;AAClB,OAAO,CAAC,CAAC;AACT,MAAM,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAChE,KAAK,MAAM;AACX,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/D,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,GAAG;AACH,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;AACpC,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1C,IAAI,IAAI,QAAQ,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI,WAAW,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,EAAE;AAClF,MAAM,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;AACxD,GAAG;AACH,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC;AACxD,GAAG;AACH,EAAE,iBAAiB,CAAC,IAAI,EAAE;AAC1B,IAAI,MAAM,UAAU,GAAG,EAAE,CAAC;AAC1B,IAAI,MAAM,YAAY,GAAG;AACzB,MAAM,GAAG,EAAE,IAAI;AACf,MAAM,IAAI,EAAE;AACZ,QAAQ,IAAI,EAAE,KAAK;AACnB,QAAQ,UAAU,EAAE;AACpB,UAAU,GAAG,EAAE,MAAM;AACrB,SAAS;AACT,QAAQ,QAAQ,EAAE,CAAC;AACnB,UAAU,IAAI,EAAE,GAAG;AACnB,UAAU,QAAQ,EAAE,UAAU;AAC9B,SAAS,CAAC;AACV,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,cAAc,GAAG;AAC3B,MAAM,KAAK,EAAE;AACb,QAAQ,KAAK,EAAE,IAAI,CAAC,UAAU;AAC9B,QAAQ,QAAQ,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE;AACzF,OAAO;AACP,KAAK,CAAC;AACN,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACzC,MAAM,UAAU,CAAC,IAAI,CAAC;AACtB,QAAQ,IAAI,EAAE,MAAM;AACpB,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,UAAU,EAAE,cAAc;AAClC,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH,EAAE,eAAe,CAAC;AAClB,IAAI,GAAG;AACP,IAAI,GAAG;AACP,GAAG,EAAE;AACL,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC1C,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACpC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AAChB,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC5C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;AACpD,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;AACtB,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH,EAAE,QAAQ,CAAC,KAAK,EAAE;AAClB,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;AAC1E,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AACzE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,KAAK;AACL,GAAG;AACH,EAAE,YAAY,CAAC;AACf,IAAI,IAAI;AACR,IAAI,YAAY;AAChB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,QAAQ,KAAK;AACtB,MAAM,WAAW,EAAE,IAAI,CAAC,YAAY;AACpC,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC9B,KAAK,CAAC;AACN,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;AAC5D,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACxB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,CAAC;AACL,MAAM,WAAW,EAAE,IAAI,CAAC,YAAY;AACpC,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC9B,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AACvB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;AACjC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,IAAI,EAAE;AACZ,QAAQ,IAAI;AACZ,OAAO;AACP,MAAM,QAAQ,EAAE;AAChB,QAAQ,OAAO,EAAE;AACjB,UAAU,SAAS;AACnB,UAAU,UAAU;AACpB,UAAU,KAAK;AACf,UAAU,KAAK;AACf,SAAS;AACT,OAAO;AACP,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AACrB,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3C,IAAI,IAAI,IAAI,GAAG,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7D,IAAI,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1C,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;AACrE,QAAQ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,QAAQ,aAAa,GAAG,IAAI,CAAC;AAC7B,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5H,IAAI,MAAM,iCAAiC,GAAG,CAAC,CAAC;AAChD,IAAI,MAAM,WAAW,GAAG,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,iCAAiC,GAAG,CAAC,CAAC;AAClG,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;AACtD,IAAI,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,SAAS,GAAG,KAAK,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC;AACpG,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;AACxB,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACnB,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACnE,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACtE,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACnB,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACtE,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACzE,KAAK;AACL,GAAG;AACH,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;AACrC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACnF,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/C,KAAK;AACL,GAAG;AACH,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAChD,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACzC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;AAClC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACjF,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;AACtC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;AAClC,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACnB,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,SAAS,GAAG;AAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC;AAC5C,GAAG;AACH,CAAC;AACD,MAAM,yBAAyB,SAAS,iBAAiB,CAAC;AAC1D,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;AACnD,IAAI,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AACrD,IAAI,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AAC9D,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACvD,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACrD,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC9C,MAAM,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC3C,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACxD,QAAQ,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,QAAQ,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACjC,OAAO;AACP,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9B,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,qBAAqB,SAAS,iBAAiB,CAAC;AACtD,EAAE,KAAK,GAAG,IAAI,CAAC;AACf,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACnD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5D,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACxE,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC7C,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7C,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,yBAAyB,GAAG;AAC9B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAClD,GAAG;AACH,CAAC;AACD,MAAM,uBAAuB,SAAS,iBAAiB,CAAC;AACxD,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACrD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC/C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC5E,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;AAC9C,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;AAC9C,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AACtD,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;AACxD,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC;AAC1D,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACjD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC/C,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7C,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,yBAAyB,GAAG;AAC9B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAClD,GAAG;AACH,CAAC;AACD,MAAM,uBAAuB,SAAS,iBAAiB,CAAC;AACxD,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACrD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC/C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AAC/E,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACzC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;AAC3D,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;AAC5D,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC;AAC1D,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACjD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC/C,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7C,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,yBAAyB,GAAG;AAC9B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAClD,GAAG;AACH,CAAC;AACD,MAAM,yBAAyB,SAAS,iBAAiB,CAAC;AAC1D,EAAE,SAAS,GAAG,IAAI,CAAC;AACnB,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;AACnD,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACzC,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC1D,IAAI,MAAM;AACV,MAAM,IAAI,EAAE;AACZ,QAAQ,IAAI;AACZ,QAAQ,QAAQ;AAChB,QAAQ,WAAW;AACnB,QAAQ,QAAQ;AAChB,OAAO;AACP,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,OAAO,IAAI,CAAC,SAAS,CAAC;AAC5B,KAAK;AACL,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5D,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1D,MAAM,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACzF,IAAI,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC5C,IAAI,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AAClE,IAAI,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACnD,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AACjD,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AACxC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,yBAAyB,GAAG;AAC9B,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAClD,GAAG;AACH,CAAC;AACD,MAAM,wBAAwB,SAAS,yBAAyB,CAAC;AACjE,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC;AAClD,IAAI,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACxC,GAAG;AACH,CAAC;AACD,MAAM,sBAAsB,SAAS,iBAAiB,CAAC;AACvD,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,oBAAoB,SAAS,iBAAiB,CAAC;AACrD,EAAE,UAAU,GAAG,EAAE,CAAC;AAClB,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC;AAC9C,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACzC,IAAI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,cAAc,GAAG,oBAAoB,CAAC,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC;AAC5H,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC1D,IAAI,MAAM;AACV,MAAM,IAAI,EAAE;AACZ,QAAQ,IAAI;AACZ,QAAQ,QAAQ;AAChB,QAAQ,WAAW;AACnB,QAAQ,QAAQ;AAChB,OAAO;AACP,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5D,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACpC,MAAM,IAAI,MAAM,GAAG,EAAE,CAAC;AACtB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC3D,QAAQ,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,OAAO;AACP,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1E,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC,MAAM,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC9C,MAAM,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AACpE,MAAM,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACrD,MAAM,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AACnD,MAAM,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC1C,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,OAAO;AACP,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9B,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,yBAAyB,GAAG;AAC9B,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;AAC3B,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAClD,GAAG;AACH,CAAC;AACD,MAAM,0BAA0B,SAAS,iBAAiB,CAAC;AAC3D,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,oBAAoB,EAAE,IAAI;AAChC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,SAAS,CAAC;AAC/D,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9B,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,0BAA0B,SAAS,iBAAiB,CAAC;AAC3D,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,oBAAoB,EAAE,IAAI;AAChC,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACxD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,yBAAyB,SAAS,iBAAiB,CAAC;AAC1D,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,oBAAoB,EAAE,IAAI;AAChC,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACvD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,0BAA0B,SAAS,iBAAiB,CAAC;AAC3D,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,oBAAoB,EAAE,IAAI;AAChC,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACxD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,sBAAsB,SAAS,iBAAiB,CAAC;AACvD,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAC3D,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9B,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,CAAC;AACD,MAAM,+BAA+B,SAAS,iBAAiB,CAAC;AAChE,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,WAAW,CAAC,UAAU,EAAE;AAC1B,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM;AACV,MAAM,IAAI;AACV,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;AAClB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAClC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAChC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,0BAA0B,EAAE;AACpE,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,GAAG,IAAI;AACb,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAC7D,IAAI,MAAM;AACV,MAAM,SAAS;AACf,MAAM,IAAI;AACV,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;AACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,KAAK,MAAM;AACX,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,MAAM,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACzH,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;AAChD,QAAQ,OAAO,CAAC,KAAK,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACjF,OAAO;AACP,KAAK;AACL,IAAI,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC5B,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAClC,IAAI,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,IAAI;AACjD,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,KAAK,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE;AACtE,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7C,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC9B,IAAI,OAAO,SAAS,CAAC;AACrB,GAAG;AACH,EAAE,yBAAyB,GAAG;AAC9B,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;AACzB,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAClD,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1E,GAAG;AACH,CAAC;AACD,MAAM,eAAe,CAAC;AACtB,EAAE,qBAAqB,GAAG,IAAI,CAAC;AAC/B,EAAE,oBAAoB,GAAG,IAAI,CAAC;AAC9B,EAAE,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;AACnC,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAC1B,EAAE,WAAW,CAAC;AACd,IAAI,GAAG;AACP,IAAI,oBAAoB;AACxB,IAAI,mBAAmB;AACvB,IAAI,yBAAyB;AAC7B,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,IAAI,eAAe;AACnB,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACnB,IAAI,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;AACtD,IAAI,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;AACpD,IAAI,IAAI,CAAC,gBAAgB,GAAG,eAAe,IAAI,IAAI,CAAC;AACpD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,0BAA0B,GAAG,yBAAyB,CAAC;AAChE,GAAG;AACH,EAAE,sBAAsB,GAAG;AAC3B,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,MAAM,cAAc,CAAC,OAAO,EAAE,EAAE,EAAE;AACpC,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC;AACzD,IAAI,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACxE,IAAI,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;AACxF,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE;AACjD,QAAQ,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAChD,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AAC3F,GAAG;AACH,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE;AACvB,IAAI,MAAM;AACV,MAAM,WAAW;AACjB,KAAK,GAAG,MAAM,CAAC;AACf,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AAC3B,IAAI,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,IAAI,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;AACtC,IAAI,MAAM,aAAa,GAAG;AAC1B,MAAM,IAAI,EAAE,IAAI;AAChB,MAAM,KAAK;AACX,MAAM,WAAW,EAAE,MAAM,CAAC,WAAW;AACrC,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe;AAC7C,MAAM,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE;AACzD,MAAM,WAAW,EAAE,MAAM,CAAC,WAAW,KAAK,KAAK;AAC/C,MAAM,UAAU,EAAE,IAAI,aAAa,EAAE;AACrC,MAAM,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI,iBAAiB,EAAE;AAC5E,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe,KAAK,IAAI;AACtD,MAAM,YAAY,EAAE,MAAM,CAAC,YAAY;AACvC,MAAM,YAAY,EAAE,MAAM,CAAC,YAAY;AACvC,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC;AACN,IAAI,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AACpC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACvB,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,KAAK,CAAC;AAC7E,MAAM,IAAI,CAAC,iBAAiB,EAAE;AAC9B,QAAQ,MAAM;AACd,UAAU,KAAK;AACf,UAAU,MAAM;AAChB,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,QAAQ,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;AACvC,UAAU,SAAS;AACnB,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,UAAU,SAAS;AACnB,SAAS;AACT,QAAQ,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC1C,OAAO;AACP,MAAM,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;AAChC,MAAM,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACrE,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACjC,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC/C,QAAQ,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,UAAU,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,SAAS,MAAM;AACf,UAAU,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,SAAS;AACT,OAAO;AACP,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AACxC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACvB,QAAQ,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC7C,OAAO;AACP,MAAM,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnD,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE;AAC/B,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,0BAA0B,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC1E,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACnC,GAAG;AACH,EAAE,MAAM,CAAC;AACT,IAAI,QAAQ;AACZ,GAAG,EAAE;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AAC3B,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC9B,MAAM,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AACjC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACnC,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;AACzB,GAAG;AACH,EAAE,uBAAuB,GAAG;AAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACpC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AAC3B,IAAI,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC1D,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,qBAAqB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC;AAC7C,MAAM,MAAM;AACZ,QAAQ,UAAU;AAClB,OAAO,GAAG,OAAO,CAAC;AAClB,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,OAAO,MAAM,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACnD,QAAQ,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACvC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AACtE,QAAQ,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,OAAO,MAAM;AACb,QAAQ,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjC,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;AACtC,GAAG;AACH,EAAE,sBAAsB,GAAG;AAC3B,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1D,GAAG;AACH,EAAE,qBAAqB,CAAC,EAAE,EAAE;AAC5B,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7C,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,cAAc,SAAS,gBAAgB,CAAC;AAC9C,EAAE,MAAM,CAAC;AACT,EAAE,QAAQ,GAAG,EAAE,CAAC;AAChB,EAAE,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AACrC,EAAE,WAAW,GAAG,IAAI,CAAC;AACrB,EAAE,SAAS,CAAC;AACZ,EAAE,OAAO,uBAAuB,GAAG,EAAE,CAAC;AACtC,EAAE,OAAO,gBAAgB,GAAG,CAAC,CAAC;AAC9B,EAAE,OAAO,aAAa,GAAG,IAAI,CAAC;AAC9B,EAAE,OAAO,gBAAgB,GAAG,EAAE,CAAC;AAC/B,EAAE,WAAW,gBAAgB,GAAG;AAChC,IAAI,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC;AAC3C,IAAI,MAAM,YAAY,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD,IAAI,MAAM,KAAK,GAAG,yBAAyB,CAAC,eAAe,CAAC;AAC5D,IAAI,MAAM,GAAG,GAAG,yBAAyB,CAAC,aAAa,CAAC;AACxD,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE;AAC1I,MAAM,OAAO,EAAE,IAAI;AACnB,KAAK,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,eAAe,EAAE;AAClJ,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACvB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EAAE,KAAK,CAAC,eAAe,EAAE;AAC3E,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACrB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC,eAAe,EAAE;AAClE,MAAM,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,KAAK,CAAC,eAAe,EAAE;AAC7E,MAAM,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,eAAe,EAAE;AAC5D,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACvB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAAE,KAAK,CAAC,eAAe,EAAE;AACvE,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;AACrB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,eAAe,EAAE;AAChE,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;AACtB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EAAE,KAAK,CAAC,eAAe,EAAE;AAC3E,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AACpB,MAAM,OAAO,EAAE,YAAY;AAC3B,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACV,GAAG;AACH,EAAE,OAAO,KAAK,GAAG,UAAU,CAAC;AAC5B,EAAE,OAAO,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AACrD,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,KAAK,CAAC;AACV,MAAM,GAAG,MAAM;AACf,MAAM,IAAI,EAAE,gBAAgB;AAC5B,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,cAAc,CAAC,aAAa,IAAI,gBAAgB,CAAC,iBAAiB,CAAC;AACrG,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,IAAI,cAAc,CAAC,gBAAgB,CAAC;AACxE,GAAG;AACH,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE;AACrC,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE;AACjD,MAAM,OAAO,EAAE,CAAC,iCAAiC,CAAC;AAClD,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC7D,IAAI,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACrF,GAAG;AACH,EAAE,OAAO,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE;AAC1C,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,0BAA0B,CAAC,aAAa;AACnD,QAAQ,cAAc,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAChD,QAAQ,MAAM;AACd,MAAM,KAAK,0BAA0B,CAAC,cAAc;AACpD,QAAQ,cAAc,CAAC,aAAa,GAAG,KAAK,CAAC;AAC7C,QAAQ,MAAM;AACd,KAAK;AACL,GAAG;AACH,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;AAC5B,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,0BAA0B,CAAC,aAAa;AACnD,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,QAAQ,MAAM;AACd,MAAM,KAAK,0BAA0B,CAAC,cAAc;AACpD,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM;AACd,KAAK;AACL,GAAG;AACH,EAAE,WAAW,yBAAyB,GAAG;AACzC,IAAI,OAAO,CAAC,CAAC,0BAA0B,CAAC,aAAa,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAC,0BAA0B,CAAC,cAAc,EAAE,cAAc,CAAC,aAAa,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC1M,GAAG;AACH,EAAE,IAAI,kBAAkB,GAAG;AAC3B,IAAI,OAAO,CAAC,CAAC,0BAA0B,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,0BAA0B,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAClI,GAAG;AACH,EAAE,eAAe,CAAC,QAAQ,EAAE;AAC5B,IAAI,MAAM,WAAW,GAAG,IAAI,IAAI;AAChC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC9E,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AACrE,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAClC,KAAK,CAAC;AACN,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC3C,MAAM,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;AACjD,MAAM,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AAChE,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,IAAI,EAAE,0BAA0B,CAAC,aAAa;AACpD,MAAM,mBAAmB,EAAE,IAAI;AAC/B,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,MAAM,QAAQ,GAAG,GAAG,IAAI;AAC5B,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AACrD,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;AACnC,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACrC,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AAC3C,MAAM,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AAChE,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,IAAI,EAAE,0BAA0B,CAAC,cAAc;AACrD,MAAM,mBAAmB,EAAE,IAAI;AAC/B,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;AACxB,IAAI,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACzD,GAAG;AACH,EAAE,qBAAqB,GAAG;AAC1B,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AACnC,IAAI,OAAO,CAAC,CAAC,cAAc,CAAC,gBAAgB,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC;AACnH,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AACpB,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AAC7B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAC7D,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAChD,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC;AAC1C,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;AAC7C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACjF,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC7E,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3E,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC7E,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC7E,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,KAAK,CAAC;AAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACtE,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;AAC9B,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACnB,MAAM,aAAa,EAAE,IAAI;AACzB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACrD,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,EAAE;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE;AACzC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC7B,KAAK;AACL,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC3B,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;AAC1C,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACrE,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;AAC/B,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC;AACzB,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AACnD,MAAM,IAAI,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC7E,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,MAAM,SAAS,GAAG,KAAK,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE,oBAAoB,GAAG;AACzB,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;AAC9C,KAAK,MAAM;AACX,MAAM,MAAM;AACZ,QAAQ,YAAY;AACpB,QAAQ,GAAG;AACX,OAAO,GAAG,IAAI,CAAC;AACf,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAC7C,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/D,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrC,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;AACnC,MAAM,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,MAAM,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;AACzC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;AACnB,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC;AACvC,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,GAAG,KAAK,IAAI,CAAC,cAAc,GAAG,GAAG,EAAE;AAC3D,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;AAC5C,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;AAC/C,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;AAC7C,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC;AAClE,IAAI,IAAI,SAAS,KAAK,OAAO,EAAE;AAC/B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,IAAI;AAC5B,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC3B,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAClC,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG,EAAE,MAAM;AACjB,QAAQ,OAAO,CAAC,OAAO,CAAC,CAAC;AACzB,OAAO;AACP,MAAM,IAAI,EAAE,MAAM;AAClB,QAAQ,OAAO,CAAC,SAAS,CAAC,CAAC;AAC3B,OAAO;AACP,MAAM,QAAQ,EAAE,KAAK;AACrB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChC,GAAG;AACH,EAAE,uBAAuB,GAAG;AAC5B,IAAI,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AAC/B,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE,QAAQ,CAAC,KAAK,EAAE;AAClB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,EAAE;AACjB,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AAC5D,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAC7B,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;AAC7B,KAAK;AACL,GAAG;AACH,EAAE,gBAAgB,CAAC,KAAK,EAAE;AAC1B,IAAI,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE;AACxB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACxE,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;AACrD,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACxD,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;AAClB,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC;AACrB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACrB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC;AAC1C,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,IAAI,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3I,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC;AAC1C,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;AACvB,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AACvE,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACxD,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAChE,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACpC,QAAQ,MAAM;AACd,UAAU,QAAQ;AAClB,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;AAC9B,QAAQ,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACpD,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACxD,QAAQ,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC5D,QAAQ,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,IAAI,EAAE,IAAI,CAAC;AACvB,QAAQ,QAAQ,IAAI,CAAC,QAAQ;AAC7B,UAAU,KAAK,CAAC;AAChB,YAAY,IAAI,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,SAAS,CAAC;AAC7D,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,UAAU,CAAC;AAC5E,YAAY,MAAM;AAClB,UAAU,KAAK,EAAE;AACjB,YAAY,IAAI,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,SAAS,CAAC;AAC7D,YAAY,IAAI,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,UAAU,CAAC;AAC9D,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM;AAClB,UAAU,KAAK,GAAG;AAClB,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,SAAS,CAAC;AAC1E,YAAY,IAAI,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,UAAU,CAAC;AAC9D,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAClC,YAAY,MAAM;AAClB,UAAU,KAAK,GAAG;AAClB,YAAY,IAAI,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,IAAI,SAAS,CAAC;AACxF,YAAY,IAAI,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,IAAI,UAAU,CAAC;AACvF,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,WAAW,EAAE,IAAI,GAAG,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpE,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,EAAE,KAAK,GAAG,YAAY,EAAE,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;AACpH,OAAO;AACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AACzB,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7C,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC;AACpB,GAAG;AACH,EAAE,OAAO,eAAe,CAAC,IAAI,EAAE;AAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC5G,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE;AACxB,IAAI,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC;AACtE,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,aAAa,CAAC;AACtB,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE;AACzD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,MAAM,KAAK,GAAG,cAAc,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACxH,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAC/B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;AAC/B,IAAI,SAAS,CAAC,kBAAkB,EAAE,CAAC;AACnC,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC/B,MAAM,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;AACjC,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;AAClC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,cAAc;AACpB,MAAM,WAAW;AACjB,KAAK,GAAG,KAAK,CAAC;AACd,IAAI,MAAM,YAAY,GAAG,EAAE,CAAC;AAC5B,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC;AAC3B,IAAI,IAAI,cAAc,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;AACpD,MAAM,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC;AAClD,MAAM,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;AAChG,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE;AACrC,QAAQ,IAAI,MAAM,GAAG,YAAY,CAAC;AAClC,QAAQ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AACvD,UAAU,IAAI,KAAK,KAAK,MAAM,EAAE;AAChC,YAAY,MAAM,GAAG,WAAW,CAAC;AACjC,YAAY,SAAS;AACrB,WAAW;AACX,UAAU,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,SAAS;AACT,OAAO;AACP,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;AACpG,KAAK,MAAM,IAAI,cAAc,KAAK,IAAI,CAAC,SAAS,EAAE;AAClD,MAAM,IAAI,MAAM,GAAG,YAAY,CAAC;AAChC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AACrD,QAAQ,IAAI,CAAC,EAAE,KAAK,WAAW,EAAE;AACjC,UAAU,MAAM,GAAG,WAAW,CAAC;AAC/B,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,IAAI,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;AACjC,IAAI,IAAI,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAChF,IAAI,KAAK,MAAM;AACf,MAAM,UAAU;AAChB,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AACpC,MAAM,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;AAClD,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;AACnD,QAAQ,IAAI,YAAY,IAAI,MAAM,EAAE;AACpC,UAAU,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACtD,UAAU,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACpD,UAAU,MAAM;AAChB,SAAS;AACT,QAAQ,YAAY,IAAI,MAAM,CAAC;AAC/B,OAAO;AACP,KAAK;AACL,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;AAChC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;AACrC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACxB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AACtF,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACjC,KAAK;AACL,GAAG;AACH,EAAE,iBAAiB,GAAG;AACtB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,OAAO,mBAAmB,CAAC,OAAO,EAAE;AACtC,IAAI,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAG;AACH,EAAE,aAAa,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;AACpD,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,IAAI,YAAY,yBAAyB,EAAE;AACnD,MAAM,MAAM;AACZ,QAAQ,IAAI,EAAE;AACd,UAAU,qBAAqB,EAAE;AACjC,YAAY,QAAQ;AACpB,YAAY,SAAS;AACrB,WAAW;AACX,UAAU,IAAI;AACd,UAAU,QAAQ;AAClB,UAAU,EAAE;AACZ,UAAU,QAAQ;AAClB,SAAS;AACT,QAAQ,WAAW;AACnB,QAAQ,YAAY;AACpB,QAAQ,MAAM,EAAE;AAChB,UAAU,IAAI,EAAE;AAChB,YAAY,UAAU;AACtB,WAAW;AACX,SAAS;AACT,OAAO,GAAG,IAAI,CAAC;AACf,MAAM,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,WAAW,GAAG,IAAI,GAAG;AAC3B,QAAQ,cAAc,EAAE,oBAAoB,CAAC,QAAQ;AACrD,QAAQ,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACpC,QAAQ,QAAQ;AAChB,QAAQ,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,QAAQ,QAAQ,EAAE,YAAY;AAC9B,QAAQ,SAAS,EAAE,UAAU,GAAG,CAAC;AACjC,QAAQ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,QAAQ,QAAQ;AAChB,QAAQ,EAAE;AACV,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,QAAQ;AAChB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACpE,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrC,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,IAAI,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrE,IAAI,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC;AACjD,IAAI,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC;AACtC,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,SAAS,CAAC,YAAY,GAAG,KAAK,EAAE;AAClC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACxB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;AACvE,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChD,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACtI,IAAI,MAAM,UAAU,GAAG;AACvB,MAAM,cAAc,EAAE,oBAAoB,CAAC,QAAQ;AACnD,MAAM,KAAK;AACX,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC9B,MAAM,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE;AACrC,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,IAAI;AACV,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;AAClD,KAAK,CAAC;AACN,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,OAAO,UAAU,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;AAC1E,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC7C,IAAI,OAAO,UAAU,CAAC;AACtB,GAAG;AACH,EAAE,kBAAkB,CAAC,UAAU,EAAE;AACjC,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,QAAQ;AACd,MAAM,KAAK;AACX,MAAM,SAAS;AACf,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1B,IAAI,OAAO,IAAI,CAAC,aAAa,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC;AACzL,GAAG;AACH,EAAE,uBAAuB,CAAC,UAAU,EAAE;AACtC,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC9D,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,OAAO,CAAC;AAChB,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AACvE,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;AAC9B,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AACtF,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;AACvE,IAAI,UAAU,CAAC,YAAY,CAAC;AAC5B,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;AAC1C,MAAM,YAAY,EAAE,IAAI,CAAC,QAAQ;AACjC,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,sBAAsB,CAAC,UAAU,EAAE;AACrC,IAAI,KAAK,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;AAC7C,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;AAC7B,GAAG;AACH,CAAC;AAGD;AACA,MAAM,QAAQ,CAAC;AACf,EAAE,IAAI,CAAC;AACP,EAAE,cAAc,GAAG,EAAE,CAAC;AACtB,EAAE,UAAU,GAAG,EAAE,CAAC;AAClB,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE;AACrE,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;AACzB,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;AACzB,IAAI,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC/B,IAAI,MAAM,OAAO,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC5C,IAAI,KAAK,MAAM;AACf,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,IAAI,KAAK,EAAE;AAChB,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,OAAO,CAAC;AACnE,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,OAAO,CAAC;AAC1E,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,OAAO,CAAC;AACnE,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,OAAO,CAAC;AAC3E,MAAM,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACtC,MAAM,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC;AACpD,IAAI,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC;AACrD,IAAI,MAAM,WAAW,GAAG,IAAI,GAAG,WAAW,CAAC;AAC3C,IAAI,MAAM,WAAW,GAAG,IAAI,GAAG,WAAW,CAAC;AAC3C,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7D,IAAI,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC5C,MAAM,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;AAC/B,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,IAAI,SAAS,CAAC;AAC9C,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,WAAW,IAAI,UAAU,CAAC;AAChD,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,WAAW,IAAI,UAAU,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,GAAG;AAChB,MAAM,CAAC,EAAE,WAAW;AACpB,MAAM,CAAC,EAAE,WAAW;AACpB,MAAM,KAAK,EAAE,SAAS;AACtB,MAAM,MAAM,EAAE,UAAU;AACxB,MAAM,SAAS;AACf,KAAK,CAAC;AACN,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,IAAI,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACpC,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC5C,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;AACnB,QAAQ,oBAAoB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3B,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAQ,oBAAoB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;AACnD,GAAG;AACH,EAAE,YAAY,CAAC,oBAAoB,EAAE;AACrC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;AAC/B,IAAI,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE;AAC7C,MAAM,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;AAC/B,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACvD,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,OAAO,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AAC9B,MAAM,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;AAClD,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;AAC3C,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,MAAM,IAAI,UAAU,GAAG,CAAC,CAAC;AACzB,MAAM,IAAI,UAAU,GAAG,EAAE,CAAC;AAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxB,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,MAAM,OAAO,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,CAAC;AACd,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACjC,UAAU,CAAC,GAAG,KAAK,CAAC;AACpB,SAAS,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACxC,UAAU,CAAC,GAAG,KAAK,CAAC;AACpB,SAAS,MAAM;AACf,UAAU,MAAM;AAChB,SAAS;AACT,QAAQ,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACtC,QAAQ,IAAI,UAAU,KAAK,CAAC,EAAE;AAC9B,UAAU,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC/E,UAAU,UAAU,GAAG,CAAC,CAAC;AACzB,SAAS;AACT,QAAQ,UAAU,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACjD,OAAO;AACP,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,OAAO,IAAI,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,GAAG;AACH,EAAE,aAAa,CAAC,CAAC,EAAE;AACnB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;AAClC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/B,IAAI,OAAO,KAAK,IAAI,GAAG,EAAE;AACzB,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC;AACtC,MAAM,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE;AACpB,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO;AACP,MAAM,IAAI,EAAE,GAAG,CAAC,EAAE;AAClB,QAAQ,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;AAC3B,OAAO,MAAM;AACb,QAAQ,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC;AACzB,OAAO;AACP,KAAK;AACL,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC;AACnB,GAAG;AACH,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;AACtB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,GAAG;AACH,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;AACtB,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACzC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzD,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,IAAI,KAAK,KAAK,EAAE,EAAE;AACxB,QAAQ,MAAM;AACd,OAAO;AACP,MAAM,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;AACtC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,QAAQ,OAAO;AACf,OAAO;AACP,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACzC,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,IAAI,KAAK,KAAK,EAAE,EAAE;AACxB,QAAQ,MAAM;AACd,OAAO;AACP,MAAM,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;AACtC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,QAAQ,OAAO;AACf,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,UAAU,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;AAC7B,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACzC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACpC,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACxD,QAAQ,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE;AACtC,UAAU,SAAS;AACnB,SAAS;AACT,QAAQ,IAAI,EAAE,IAAI,KAAK,EAAE;AACzB,UAAU,IAAI,EAAE,GAAG,GAAG,EAAE;AACxB,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAChC,WAAW,MAAM;AACjB,YAAY,IAAI,EAAE,KAAK,CAAC,EAAE;AAC1B,cAAc,OAAO,EAAE,CAAC;AACxB,aAAa;AACb,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,YAAY,CAAC,EAAE,CAAC;AAChB,YAAY,EAAE,EAAE,CAAC;AACjB,WAAW;AACX,UAAU,SAAS;AACnB,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC9B,QAAQ,IAAI,EAAE,GAAG,GAAG,EAAE;AACtB,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACrC,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,CAAC;AACD,MAAM,OAAO,CAAC;AACd,EAAE,SAAS,GAAG;AACd,IAAI,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACxE,GAAG;AACH,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAClE,GAAG;AACH,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE;AAC9B,IAAI,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACxE,GAAG;AACH,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,YAAY,oBAAoB,CAAC;AAChD,GAAG;AACH,CAAC;AACD,MAAM,gBAAgB,SAAS,OAAO,CAAC;AACvC,EAAE,IAAI,CAAC;AACP,EAAE,SAAS,CAAC;AACZ,EAAE,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE;AAC7B,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC9B,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACpB,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1C,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC;AACnC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACxC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAClD,QAAQ,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,KAAK,EAAE;AACzB,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,UAAU,KAAK,GAAG,CAAC,CAAC;AACpB,SAAS,MAAM,IAAI,CAAC,KAAK,KAAK,EAAE;AAChC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,UAAU,KAAK,GAAG,CAAC,CAAC;AACpB,SAAS;AACT,OAAO;AACP,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE;AAC7C,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5B,IAAI,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AAC7B,IAAI,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1C,MAAM,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/C,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAClD,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7C,QAAQ,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AACtD,OAAO;AACP,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG;AACH,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,GAAG;AACH,CAAC;AACD,MAAM,YAAY,CAAC;AACnB,EAAE,IAAI,CAAC;AACP,EAAE,OAAO,GAAG,EAAE,CAAC;AACf,EAAE,YAAY,CAAC;AACf,EAAE,MAAM,CAAC;AACT,EAAE,IAAI,GAAG,EAAE,CAAC;AACZ,EAAE,KAAK,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;AAC/B,EAAE,MAAM,CAAC;AACT,EAAE,MAAM,CAAC;AACT,EAAE,IAAI,CAAC;AACP,EAAE,SAAS,CAAC;AACZ,EAAE,YAAY,CAAC;AACf,EAAE,UAAU,CAAC;AACb,EAAE,OAAO,GAAG,EAAE,CAAC;AACf,EAAE,OAAO,SAAS,GAAG,CAAC,CAAC;AACvB,EAAE,OAAO,SAAS,GAAG,CAAC,CAAC;AACvB,EAAE,OAAO,IAAI,GAAG,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;AAChE,EAAE,WAAW,CAAC;AACd,IAAI,CAAC;AACL,IAAI,CAAC;AACL,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,EAAE;AAC1D,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACpB,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAC9C,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACpC,IAAI,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,GAAG,WAAW,CAAC;AAC1D,IAAI,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,WAAW,CAAC;AAChD,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACpC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,IAAI,IAAI,GAAG;AACb,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACnD,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AAC5C,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC;AACtQ,GAAG;AACH,EAAE,GAAG,CAAC;AACN,IAAI,CAAC;AACL,IAAI,CAAC;AACL,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AAChE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtD,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;AACzB,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;AACzB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACvB,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;AAChB,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;AAChB,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,IAAI,MAAM,CAAC;AACjB,IAAI,EAAE,IAAI,MAAM,CAAC;AACjB,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,IAAI,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AAC/B,IAAI,MAAM,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC;AAC9B,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7C,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9B,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,IAAI,WAAW,CAAC,CAAC;AAChH,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,IAAI,WAAW,CAAC,CAAC;AACnH,OAAO;AACP,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACtF,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;AAC7B,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,WAAW,CAAC,CAAC;AACxH,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACrD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,WAAW,CAAC,CAAC;AAC3H,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,WAAW,CAAC,CAAC;AAChR,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,IAAI,WAAW,CAAC,CAAC;AACnR,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACxB,MAAM,OAAO,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAChC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACnD,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AAC5C,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACjF,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACjD,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7U,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AACzB,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,OAAO;AACP,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACrM,IAAI,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACpD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1H,OAAO;AACP,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAChC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AAChE,IAAI,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5D,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC;AAC1D,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW,CAAC;AACnE,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,UAAU,CAAC;AACpE,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,WAAW,CAAC;AACrE,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACjF,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC3C,MAAM,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;AAC3C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7c,MAAM,OAAO,IAAI,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACrH,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClF,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;AACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACnC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AACzB,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC1C,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3S,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,IAAI,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACpD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACrC,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAClC,UAAU,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5C,UAAU,CAAC,IAAI,CAAC,CAAC;AACjB,UAAU,SAAS;AACnB,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,OAAO;AACP,KAAK;AACL,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,OAAO,IAAI,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACnH,GAAG;AACH,CAAC;AACD,MAAM,oBAAoB,SAAS,OAAO,CAAC;AAC3C,EAAE,IAAI,CAAC;AACP,EAAE,KAAK,GAAG,IAAI,CAAC;AACf,EAAE,YAAY,CAAC;AACf,EAAE,MAAM,CAAC;AACT,EAAE,OAAO,CAAC;AACV,EAAE,YAAY,CAAC;AACf,EAAE,QAAQ,CAAC;AACX,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE;AACrE,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC5B,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACpB,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACpC,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACpC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAI,MAAM;AACV,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AAC5C,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;AACrD,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACxD,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AAC1C,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;AACnD,KAAK;AACL,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/D,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClK,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE;AAC5C,IAAI,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5B,IAAI,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AAC7B,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,QAAQ,QAAQ;AACpB,MAAM,KAAK,CAAC;AACZ,QAAQ,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;AACzE,QAAQ,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;AACvE,QAAQ,MAAM;AACd,MAAM,KAAK,EAAE;AACb,QAAQ,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/E,QAAQ,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7E,QAAQ,MAAM;AACd,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzE,QAAQ,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvE,QAAQ,MAAM;AACd,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;AACjF,QAAQ,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;AAC/E,QAAQ,MAAM;AACd,KAAK;AACL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,MAAM,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,KAAK,CAAC;AACN,GAAG;AACH,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChC,IAAI,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACrD,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACjC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACvC,IAAI,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACrD,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACrC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE;AACxB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AAClC,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC;AACrB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC;AACrB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC;AACrB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC;AACrB,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC;AAC3B,IAAI,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACpD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7B,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACzC,UAAU,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,UAAU,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,SAAS,MAAM,IAAI,UAAU,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAClD,UAAU,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/D,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtF,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE;AAClC,UAAU,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,UAAU,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAS,MAAM,IAAI,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AAC3C,UAAU,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,SAAS;AACT,OAAO;AACP,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY;AACtC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY;AAClC,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY;AACjD,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AACnD,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;AACzC,KAAK,CAAC;AACN,GAAG;AACH,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG;AACH,EAAE,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE;AACxC,IAAI,MAAM;AACV,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACnB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AAChE,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,UAAU,CAAC;AAClC,IAAI,MAAM,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC;AACpC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,UAAU,GAAG,MAAM,CAAC;AACvC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC;AACxC,IAAI,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC;AACtC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE;AAClC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE;AAClC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/F,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrD,MAAM,QAAQ,CAAC,GAAG,CAAC;AACnB,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE;AACpC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE;AACxC,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;AAClC,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA,MAAM,WAAW,CAAC;AAClB,EAAE,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,EAAE,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,aAAa,GAAG,IAAI,CAAC;AACvB,EAAE,aAAa,CAAC;AAChB,EAAE,SAAS,GAAG,IAAI,CAAC;AACnB,EAAE,wBAAwB,GAAG,KAAK,CAAC;AACnC,EAAE,kBAAkB,GAAG,KAAK,CAAC;AAC7B,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,SAAS,CAAC;AACZ,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,KAAK,CAAC;AACR,EAAE,OAAO,UAAU,GAAG,IAAI,CAAC;AAC3B,EAAE,WAAW,gBAAgB,GAAG;AAChC,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAClhB,GAAG;AACH,EAAE,WAAW,CAAC;AACd,IAAI,MAAM,GAAG,IAAI;AACjB,IAAI,SAAS,GAAG,IAAI;AACpB,GAAG,EAAE;AACL,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACtC,MAAM,IAAI,CAAC,KAAK,GAAG,0BAA0B,CAAC,eAAe,CAAC;AAC9D,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5B,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACrC,MAAM,IAAI,CAAC,KAAK,GAAG,0BAA0B,CAAC,uBAAuB,CAAC;AACtE,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,SAAS,CAAC;AACtD,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC/C,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,SAAS,CAAC;AAC9G,IAAI,WAAW,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC;AAC7C,MAAM,IAAI,EAAE,+BAA+B;AAC3C,MAAM,KAAK,EAAE,gCAAgC;AAC7C,MAAM,IAAI,EAAE,+BAA+B;AAC3C,MAAM,GAAG,EAAE,8BAA8B;AACzC,MAAM,MAAM,EAAE,iCAAiC;AAC/C,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnE,IAAI,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC;AACrC,IAAI,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC;AAC1B,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;AAC3E,IAAI,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AAC/C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAC3C,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpE,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE;AAC3D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACvE,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;AAChC,IAAI,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAC7C,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;AACtD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1B,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9D,IAAI,QAAQ,CAAC,YAAY,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;AAC5D,IAAI,QAAQ,CAAC,YAAY,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;AAC1E,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAC3C,IAAI,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE;AACvD,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC;AAC/B,IAAI,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC;AACzB,IAAI,GAAG,CAAC,YAAY,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACpD,IAAI,GAAG,CAAC,YAAY,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AACrD,IAAI,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,mCAAmC,CAAC,CAAC;AAC1E,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;AACjE,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACtD,MAAM,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC;AAC5B,MAAM,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC7B,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC/C,MAAM,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,MAAM,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACpD,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,MAAM,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;AAClC,MAAM,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;AAC3C,MAAM,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;AACzE,MAAM,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAC5E,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE;AACxD,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE;AAC7B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,8BAA8B,EAAE;AAC5D,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK;AACtB,MAAM,KAAK,EAAE,KAAK;AAClB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,wBAAwB,CAAC,KAAK,EAAE;AAClC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE;AACvC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACpC,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAClC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE;AACvC,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;AACzC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;AACtC,GAAG;AACH,EAAE,eAAe,CAAC,KAAK,EAAE;AACzB,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE;AACtF,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACnC,QAAQ,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACzC,OAAO;AACP,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAClC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;AAC1C,GAAG;AACH,EAAE,gBAAgB,CAAC,KAAK,EAAE;AAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAClC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;AACvC,GAAG;AACH,EAAE,UAAU,CAAC,KAAK,EAAE;AACpB,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAClC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;AACtC,GAAG;AACH,EAAE,QAAQ,CAAC,KAAK,EAAE;AAClB,IAAI,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnD,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACjC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AACvD,IAAI,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE;AACnE,MAAM,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;AACrC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AAChD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5C,IAAI,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACtE,GAAG;AACH,EAAE,IAAI,kBAAkB,GAAG;AAC3B,IAAI,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1E,GAAG;AACH,EAAE,yBAAyB,GAAG;AAC9B,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACjC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAClC,MAAM,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACvB,MAAM,aAAa,EAAE,IAAI;AACzB,MAAM,YAAY,EAAE,IAAI,CAAC,wBAAwB;AACjD,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5B,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;AACvD,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACzB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;AACvD,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACjD,MAAM,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACpE,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;AAC7B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,SAAS,gBAAgB,CAAC;AAC/C,EAAE,WAAW,GAAG,IAAI,CAAC;AACrB,EAAE,aAAa,GAAG,CAAC,CAAC;AACpB,EAAE,MAAM,CAAC;AACT,EAAE,WAAW,GAAG,IAAI,CAAC;AACrB,EAAE,YAAY,GAAG,IAAI,CAAC;AACtB,EAAE,cAAc,GAAG,IAAI,CAAC;AACxB,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,YAAY,GAAG,CAAC,CAAC;AACnB,EAAE,aAAa,GAAG,IAAI,CAAC;AACvB,EAAE,kBAAkB,GAAG,IAAI,CAAC;AAC5B,EAAE,GAAG,GAAG,IAAI,CAAC;AACb,EAAE,gBAAgB,GAAG,KAAK,CAAC;AAC3B,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,QAAQ,CAAC;AACX,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,KAAK,GAAG,EAAE,CAAC;AACb,EAAE,UAAU,CAAC;AACb,EAAE,iBAAiB,GAAG,EAAE,CAAC;AACzB,EAAE,OAAO,aAAa,GAAG,IAAI,CAAC;AAC9B,EAAE,OAAO,eAAe,GAAG,CAAC,CAAC;AAC7B,EAAE,OAAO,iBAAiB,GAAG,EAAE,CAAC;AAChC,EAAE,OAAO,KAAK,GAAG,WAAW,CAAC;AAC7B,EAAE,OAAO,WAAW,GAAG,oBAAoB,CAAC,SAAS,CAAC;AACtD,EAAE,OAAO,gBAAgB,GAAG,CAAC,CAAC,CAAC;AAC/B,EAAE,OAAO,cAAc,GAAG,IAAI,CAAC;AAC/B,EAAE,OAAO,oBAAoB,GAAG,EAAE,CAAC;AACnC,EAAE,WAAW,gBAAgB,GAAG;AAChC,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC;AAC5C,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE;AACpH,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;AACf,KAAK,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE;AAC7D,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;AACf,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE;AACvD,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;AACf,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE;AAC3D,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;AACf,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACV,GAAG;AACH,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,KAAK,CAAC;AACV,MAAM,GAAG,MAAM;AACf,MAAM,IAAI,EAAE,iBAAiB;AAC7B,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,aAAa,CAAC;AAC/D,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,IAAI,eAAe,CAAC,iBAAiB,CAAC;AAC5E,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC,eAAe,CAAC;AACtE,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;AACvC,IAAI,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;AAC3D,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC9B,IAAI,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;AACjC,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACnC,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACvC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAC7B,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AAC5B,MAAM,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3C,MAAM,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;AAC/C,MAAM,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AACzC,MAAM,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAC7C,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAC7B,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,KAAK;AACL,GAAG;AACH,EAAE,IAAI,oBAAoB,GAAG;AAC7B,IAAI,OAAO;AACX,MAAM,MAAM,EAAE,OAAO;AACrB,MAAM,IAAI,EAAE,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,GAAG,WAAW;AAClE,MAAM,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAChE,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU;AAChC,MAAM,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;AAC9C,KAAK,CAAC;AACN,GAAG;AACH,EAAE,IAAI,kBAAkB,GAAG;AAC3B,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAChE,KAAK,CAAC;AACN,GAAG;AACH,EAAE,OAAO,yBAAyB,CAAC,IAAI,EAAE;AACzC,IAAI,OAAO;AACX,MAAM,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI;AAC5C,KAAK,CAAC;AACN,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AACrD,IAAI,CAAC;AACL,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;AACf,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;AACf,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK;AACvB,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE;AACrC,IAAI,MAAM,kBAAkB,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC;AAC7G,IAAI,IAAI,CAAC,cAAc,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;AAC3D,IAAI,MAAM;AACV,MAAM,SAAS;AACf,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AAChC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AACpG,GAAG;AACH,EAAE,mBAAmB,CAAC;AACtB,IAAI,iBAAiB;AACrB,IAAI,WAAW;AACf,IAAI,UAAU;AACd,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;AAChD,IAAI,MAAM,cAAc,GAAG,GAAG,CAAC;AAC/B,IAAI,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,cAAc,EAAE,MAAM,CAAC,CAAC;AACxG,IAAI,IAAI,WAAW,IAAI,CAAC,EAAE;AAC1B,MAAM,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC;AAC7B,MAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AACpC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AACzE,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpF,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AAC5B,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAClD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;AACpE,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AAC/I,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC7E,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACpH,KAAK;AACL,IAAI,MAAM;AACV,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC;AAC9B,IAAI,QAAQ,IAAI,CAAC,QAAQ;AACzB,MAAM,KAAK,CAAC;AACZ,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,MAAM;AACd,MAAM,KAAK,EAAE;AACb,QAAQ;AACR,UAAU,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAChE,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,UAAU,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AACtD,UAAU,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AACxD,UAAU,MAAM;AAChB,SAAS;AACT,MAAM,KAAK,GAAG;AACd,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,MAAM;AACd,MAAM,KAAK,GAAG;AACd,QAAQ;AACR,UAAU,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAChE,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,UAAU,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AACtD,UAAU,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AACxD,UAAU,MAAM;AAChB,SAAS;AACT,KAAK;AACL,IAAI,MAAM;AACV,MAAM,SAAS;AACf,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AAChC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC;AAChF,GAAG;AACH,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE;AACrC,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,IAAI,eAAe,CAAC,aAAa,KAAK,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,SAAS,CAAC;AACpG,GAAG;AACH,EAAE,OAAO,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE;AAC1C,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,0BAA0B,CAAC,uBAAuB;AAC7D,QAAQ,eAAe,CAAC,aAAa,GAAG,KAAK,CAAC;AAC9C,QAAQ,MAAM;AACd,MAAM,KAAK,0BAA0B,CAAC,mBAAmB;AACzD,QAAQ,eAAe,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAClD,QAAQ,MAAM;AACd,KAAK;AACL,GAAG;AACH,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,EAAE,IAAI,eAAe,GAAG;AACxB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC;AAC3B,GAAG;AACH,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;AAC5B,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,0BAA0B,CAAC,eAAe;AACrD,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM;AACd,MAAM,KAAK,0BAA0B,CAAC,mBAAmB;AACzD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACrC,QAAQ,MAAM;AACd,KAAK;AACL,GAAG;AACH,EAAE,WAAW,yBAAyB,GAAG;AACzC,IAAI,OAAO,CAAC,CAAC,0BAA0B,CAAC,uBAAuB,EAAE,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC,0BAA0B,CAAC,mBAAmB,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACtL,GAAG;AACH,EAAE,IAAI,kBAAkB,GAAG;AAC3B,IAAI,OAAO,CAAC,CAAC,0BAA0B,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,IAAI,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC,0BAA0B,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,IAAI,eAAe,CAAC,iBAAiB,CAAC,EAAE,CAAC,0BAA0B,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnR,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AAC7C,MAAM,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACvB,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxD,MAAM,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1C,MAAM,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;AAC1B,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1D,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;AAClC,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;AACvC,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,eAAe,CAAC;AAChF,MAAM,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC;AACnE,MAAM,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AAChE,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,IAAI,EAAE,0BAA0B,CAAC,eAAe;AACtD,MAAM,mBAAmB,EAAE,IAAI;AAC/B,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,gBAAgB,CAAC;AAC1B,MAAM,MAAM,EAAE,eAAe;AAC7B,MAAM,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3D,KAAK,EAAE,IAAI,CAAC,CAAC;AACb,GAAG;AACH,EAAE,gBAAgB,CAAC,SAAS,EAAE;AAC9B,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;AAC3C,IAAI,MAAM,YAAY,GAAG,EAAE,IAAI;AAC/B,MAAM,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC3B,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAChC,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;AAC7C,MAAM,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;AACnD,MAAM,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AAChE,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,IAAI,EAAE,0BAA0B,CAAC,aAAa;AACpD,MAAM,mBAAmB,EAAE,IAAI;AAC/B,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,gBAAgB,CAAC;AAC1B,MAAM,MAAM,EAAE,mBAAmB;AACjC,MAAM,SAAS;AACf,KAAK,EAAE,IAAI,CAAC,CAAC;AACb,GAAG;AACH,EAAE,MAAM,cAAc,GAAG;AACzB,IAAI,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;AACjD,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;AACzC,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC;AAC1C,QAAQ,MAAM,EAAE,IAAI;AACpB,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,iBAAiB,GAAG;AACtB,IAAI,OAAO,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACxD,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,GAAG;AACH,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE;AAClB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACnC,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACrB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,gBAAgB,CAAC;AAC1B,MAAM,MAAM,EAAE,SAAS;AACvB,KAAK,CAAC,CAAC;AACP,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AACpB,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,IAAI,cAAc,GAAG,KAAK,CAAC;AAC/B,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE;AAChC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAC7B,KAAK,MAAM,IAAI,MAAM,EAAE;AACvB,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACnC,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACtF,KAAK;AACL,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/B,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK;AACL,GAAG;AACH,EAAE,gBAAgB,CAAC,SAAS,EAAE;AAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,mBAAmB,CAAC;AAC7B,MAAM,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;AAC7E,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;AACvE,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC3C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACpB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,GAAG;AACH,EAAE,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AACxC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,CAAC;AACL,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG;AAClB,MAAM,UAAU,EAAE,IAAI,CAAC,WAAW;AAClC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;AACxF,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC7E,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5B,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;AAC3D,KAAK;AACL,GAAG;AACH,EAAE,OAAO,WAAW,CAAC;AACrB,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,KAAK;AACT,IAAI,MAAM;AACV,GAAG,EAAE,KAAK,EAAE;AACZ,IAAI,QAAQ,KAAK;AACjB,MAAM,KAAK,EAAE;AACb,QAAQ,OAAO;AACf,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM;AAC3B,UAAU,CAAC,EAAE,CAAC;AACd,UAAU,KAAK,EAAE,MAAM;AACvB,UAAU,MAAM,EAAE,KAAK;AACvB,SAAS,CAAC;AACV,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO;AACf,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK;AAC1B,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM;AAC3B,UAAU,KAAK;AACf,UAAU,MAAM;AAChB,SAAS,CAAC;AACV,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO;AACf,UAAU,CAAC,EAAE,CAAC;AACd,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK;AAC1B,UAAU,KAAK,EAAE,MAAM;AACvB,UAAU,MAAM,EAAE,KAAK;AACvB,SAAS,CAAC;AACV,KAAK;AACL,IAAI,OAAO;AACX,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,CAAC,KAAK,EAAE;AAChB,IAAI,MAAM;AACV,MAAM,SAAS;AACf,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AACpB,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC/B,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,IAAI,GAAG,CAAC;AAClD,MAAM,GAAG,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5E,KAAK,MAAM;AACX,MAAM,GAAG,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtC,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC7C,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACtG,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;AAClB,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AAC/B,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACjD,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC/B,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAChC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrE,QAAQ,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;AACvC,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5E,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7B,IAAI,YAAY,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACrD,IAAI,YAAY,CAAC,SAAS,GAAG,UAAU,CAAC;AACxC,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;AACnD,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;AACvE,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;AAC1E,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAClE,GAAG;AACH,EAAE,QAAQ,CAAC,KAAK,EAAE;AAClB,IAAI,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,UAAU,CAAC,SAAS,EAAE;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI,QAAQ,SAAS;AACrB,MAAM,KAAK,CAAC,CAAC;AACb,MAAM,KAAK,CAAC;AACZ,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAQ,MAAM;AACd,MAAM,KAAK,CAAC,CAAC;AACb,MAAM,KAAK,CAAC;AACZ,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9B,QAAQ,MAAM;AACd,KAAK;AACL,GAAG;AACH,EAAE,SAAS,CAAC,KAAK,EAAE;AACnB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAC5C,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAClE,KAAK,MAAM;AACX,MAAM,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAChE,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACjE,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAChC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,EAAE,IAAI,gBAAgB,GAAG;AACzB,IAAI,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAClC,GAAG;AACH,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACpD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC3D,KAAK;AACL,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACrD,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC/B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AACxD,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;AAChD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,KAAK,MAAM;AACf,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,IAAI,KAAK,EAAE;AAChB,MAAM,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;AACvC,MAAM,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,UAAU,GAAG,KAAK,CAAC;AACvD,MAAM,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAC7C,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACjD,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,CAAC;AACrE,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,UAAU,CAAC;AACvE,MAAM,CAAC,IAAI,CAAC,CAAC;AACb,KAAK;AACL,IAAI,OAAO,UAAU,CAAC;AACtB,GAAG;AACH,EAAE,kBAAkB,CAAC,IAAI,EAAE;AAC3B,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACxE,GAAG;AACH,EAAE,OAAO,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE;AAC1C,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,CAAC;AACL,IAAI,CAAC;AACL,GAAG,EAAE;AACL,IAAI,MAAM;AACV,MAAM,CAAC,EAAE,MAAM;AACf,MAAM,CAAC,EAAE,MAAM;AACf,MAAM,KAAK,EAAE,WAAW;AACxB,MAAM,MAAM,EAAE,YAAY;AAC1B,KAAK,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAC1C,IAAI,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;AACrC,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC7C,IAAI,MAAM,WAAW,GAAG,CAAC,IAAI;AAC7B,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;AACzB,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;AAC1B,KAAK,CAAC;AACN,IAAI,MAAM,iBAAiB,GAAG,CAAC,IAAI;AACnC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;AACjB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACpC,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,EAAE;AACvD,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,EAAE;AAC5D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE;AACxD,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE;AAC1D,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AACtF,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,CAAC;AAC3C,MAAM,CAAC;AACP,MAAM,CAAC;AACP,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5G,IAAI,CAAC;AACL,MAAM,EAAE,EAAE,IAAI,CAAC,gBAAgB;AAC/B,MAAM,UAAU,EAAE,IAAI,CAAC,oBAAoB;AAC3C,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE;AACzG,GAAG;AACH,EAAE,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE;AACvC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACxC,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9E,KAAK;AACL,GAAG;AACH,EAAE,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE;AACtC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE;AACxC,MAAM,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE;AACjD,QAAQ,WAAW,EAAE,IAAI,CAAC,gBAAgB;AAC1C,QAAQ,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AAC5D,QAAQ,UAAU,EAAE,IAAI,CAAC,oBAAoB;AAC7C,QAAQ,gBAAgB,EAAE,cAAc;AACxC,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B,IAAI,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AACnC,GAAG;AACH,EAAE,aAAa,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;AACpD,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,IAAI,YAAY,0BAA0B,EAAE;AACpD,MAAM,MAAM;AACZ,QAAQ,IAAI,EAAE;AACd,UAAU,UAAU;AACpB,UAAU,IAAI;AACd,UAAU,QAAQ;AAClB,UAAU,EAAE;AACZ,UAAU,KAAK;AACf,UAAU,OAAO;AACjB,UAAU,QAAQ;AAClB,SAAS;AACT,QAAQ,MAAM,EAAE;AAChB,UAAU,IAAI,EAAE;AAChB,YAAY,UAAU;AACtB,WAAW;AACX,SAAS;AACT,OAAO,GAAG,IAAI,CAAC;AACf,MAAM,WAAW,GAAG,IAAI,GAAG;AAC3B,QAAQ,cAAc,EAAE,oBAAoB,CAAC,SAAS;AACtD,QAAQ,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,QAAQ,OAAO;AACf,QAAQ,UAAU;AAClB,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,SAAS,EAAE,UAAU,GAAG,CAAC;AACjC,QAAQ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,QAAQ,QAAQ;AAChB,QAAQ,EAAE;AACV,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,QAAQ;AAChB,OAAO,CAAC;AACR,KAAK,MAAM,IAAI,IAAI,YAAY,oBAAoB,EAAE;AACrD,MAAM,MAAM;AACZ,QAAQ,IAAI,EAAE;AACd,UAAU,QAAQ;AAClB,UAAU,IAAI;AACd,UAAU,QAAQ;AAClB,UAAU,EAAE;AACZ,UAAU,KAAK;AACf,UAAU,WAAW,EAAE;AACvB,YAAY,QAAQ,EAAE,SAAS;AAC/B,WAAW;AACX,UAAU,QAAQ;AAClB,SAAS;AACT,QAAQ,MAAM,EAAE;AAChB,UAAU,IAAI,EAAE;AAChB,YAAY,UAAU;AACtB,WAAW;AACX,SAAS;AACT,OAAO,GAAG,IAAI,CAAC;AACf,MAAM,WAAW,GAAG,IAAI,GAAG;AAC3B,QAAQ,cAAc,EAAE,oBAAoB,CAAC,SAAS;AACtD,QAAQ,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,QAAQ,SAAS;AACjB,QAAQ,QAAQ;AAChB,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,SAAS,EAAE,UAAU,GAAG,CAAC;AACjC,QAAQ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,QAAQ,QAAQ;AAChB,QAAQ,EAAE;AACV,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,QAAQ;AAChB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,UAAU;AAChB,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACpE,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC;AAC/C,IAAI,MAAM,CAAC,QAAQ,GAAG,OAAO,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC,KAAK;AACL,IAAI,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC;AACjD,IAAI,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC;AACtC,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;AAC1D,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;AAClD,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;AACvC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrD,QAAQ,KAAK,CAAC,IAAI,CAAC;AACnB,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,SAAS;AAChD,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,UAAU;AACzD,UAAU,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS;AAChE,UAAU,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU;AACtE,SAAS,CAAC,CAAC;AACX,OAAO;AACP,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;AAC/B,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;AAC/B,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrC,KAAK,MAAM,IAAI,QAAQ,EAAE;AACzB,MAAM,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,MAAM,KAAK,GAAG;AACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK;AAC5B,QAAQ,CAAC,EAAE,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC3C,OAAO,CAAC;AACR,MAAM,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACrH,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1D,QAAQ,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACpC,QAAQ,KAAK,CAAC,CAAC,GAAG,UAAU,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACvD,QAAQ,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,OAAO;AACP,MAAM,MAAM;AACZ,QAAQ,EAAE;AACV,QAAQ,UAAU;AAClB,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AAC3F,MAAM,MAAM,CAAC,mBAAmB,CAAC;AACjC,QAAQ,iBAAiB,EAAE,QAAQ,CAAC,WAAW,EAAE;AACjD,QAAQ,WAAW,EAAE,EAAE;AACvB,QAAQ,UAAU;AAClB,OAAO,CAAC,CAAC;AACT,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,SAAS,CAAC,YAAY,GAAG,KAAK,EAAE;AAClC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,YAAY,EAAE;AACxC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrE,IAAI,MAAM,UAAU,GAAG;AACvB,MAAM,cAAc,EAAE,oBAAoB,CAAC,SAAS;AACpD,MAAM,KAAK;AACX,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ;AAC5B,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU;AAChC,MAAM,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE;AACxC,MAAM,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC7C,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,IAAI;AACV,MAAM,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE;AACnC,MAAM,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;AAClD,KAAK,CAAC;AACN,IAAI,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;AAC1E,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC7C,IAAI,OAAO,UAAU,CAAC;AACtB,GAAG;AACH,EAAE,kBAAkB,CAAC,UAAU,EAAE;AACjC,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1B,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,GAAG;AACH,EAAE,uBAAuB,CAAC,UAAU,EAAE;AACtC,IAAI,UAAU,CAAC,YAAY,CAAC;AAC5B,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,OAAO,uBAAuB,GAAG;AACnC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,SAAS,gBAAgB,CAAC;AACzC,EAAE,WAAW,GAAG,CAAC,CAAC;AAClB,EAAE,UAAU,GAAG,CAAC,CAAC;AACjB,EAAE,2BAA2B,GAAG,IAAI,CAAC;AACrC,EAAE,cAAc,GAAG,IAAI,MAAM,EAAE,CAAC;AAChC,EAAE,eAAe,GAAG,KAAK,CAAC;AAC1B,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,mBAAmB,GAAG,KAAK,CAAC;AAC9B,EAAE,oBAAoB,GAAG,KAAK,CAAC;AAC/B,EAAE,SAAS,GAAG,IAAI,CAAC;AACnB,EAAE,cAAc,GAAG,IAAI,CAAC;AACxB,EAAE,UAAU,GAAG,CAAC,CAAC;AACjB,EAAE,WAAW,GAAG,CAAC,CAAC;AAClB,EAAE,qBAAqB,GAAG,IAAI,CAAC;AAC/B,EAAE,OAAO,aAAa,GAAG,IAAI,CAAC;AAC9B,EAAE,OAAO,eAAe,GAAG,CAAC,CAAC;AAC7B,EAAE,OAAO,iBAAiB,GAAG,CAAC,CAAC;AAC/B,EAAE,OAAO,KAAK,GAAG,KAAK,CAAC;AACvB,EAAE,OAAO,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC;AAChD,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,KAAK,CAAC;AACV,MAAM,GAAG,MAAM;AACf,MAAM,IAAI,EAAE,WAAW;AACvB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;AACtC,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;AAC9C,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;AAC1C,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACrC,GAAG;AACH,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE;AACrC,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,OAAO,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE;AAC1C,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,0BAA0B,CAAC,aAAa;AACnD,QAAQ,SAAS,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC5C,QAAQ,MAAM;AACd,MAAM,KAAK,0BAA0B,CAAC,SAAS;AAC/C,QAAQ,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC;AACxC,QAAQ,MAAM;AACd,MAAM,KAAK,0BAA0B,CAAC,WAAW;AACjD,QAAQ,SAAS,CAAC,eAAe,GAAG,KAAK,GAAG,GAAG,CAAC;AAChD,QAAQ,MAAM;AACd,KAAK;AACL,GAAG;AACH,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;AAC5B,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,0BAA0B,CAAC,aAAa;AACnD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACrC,QAAQ,MAAM;AACd,MAAM,KAAK,0BAA0B,CAAC,SAAS;AAC/C,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM;AACd,MAAM,KAAK,0BAA0B,CAAC,WAAW;AACjD,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACnC,QAAQ,MAAM;AACd,KAAK;AACL,GAAG;AACH,EAAE,WAAW,yBAAyB,GAAG;AACzC,IAAI,OAAO,CAAC,CAAC,0BAA0B,CAAC,aAAa,EAAE,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,aAAa,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnR,GAAG;AACH,EAAE,IAAI,kBAAkB,GAAG;AAC3B,IAAI,OAAO,CAAC,CAAC,0BAA0B,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,aAAa,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACrU,GAAG;AACH,EAAE,gBAAgB,CAAC,SAAS,EAAE;AAC9B,IAAI,MAAM,YAAY,GAAG,EAAE,IAAI;AAC/B,MAAM,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAC1B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,KAAK,CAAC;AACN,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;AAC1C,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;AAC7C,MAAM,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;AACnD,MAAM,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AAChE,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,IAAI,EAAE,0BAA0B,CAAC,aAAa;AACpD,MAAM,mBAAmB,EAAE,IAAI;AAC/B,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE;AACtB,IAAI,MAAM,QAAQ,GAAG,GAAG,IAAI;AAC5B,MAAM,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACvB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;AAClC,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACrC,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AAC3C,MAAM,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AAChE,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,IAAI,EAAE,0BAA0B,CAAC,SAAS;AAChD,MAAM,mBAAmB,EAAE,IAAI;AAC/B,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,cAAc,CAAC,OAAO,EAAE;AAC1B,IAAI,MAAM,UAAU,GAAG,EAAE,IAAI;AAC7B,MAAM,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACxB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,KAAK,CAAC;AACN,IAAI,OAAO,IAAI,GAAG,CAAC;AACnB,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;AACtC,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AACzC,MAAM,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;AAC/C,MAAM,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AAChE,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,IAAI,EAAE,0BAA0B,CAAC,WAAW;AAClD,MAAM,mBAAmB,EAAE,IAAI;AAC/B,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AACpB,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACzB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,IAAI,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAC1C,MAAM,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;AACrD,MAAM,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;AACjC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE;AAChC,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAChD,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC/C,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;AAC3C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;AAC9C,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtC,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AACtD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC9B,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACnC,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AACtD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACtC,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5F,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,MAAM;AACV,MAAM,cAAc;AACpB,MAAM,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AACvC,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,QAAQ,cAAc;AAC1B,MAAM,KAAK,EAAE;AACb,QAAQ,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1C,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9C,MAAM,KAAK,GAAG;AACd,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACzC,MAAM;AACN,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACrC,KAAK;AACL,GAAG;AACH,EAAE,UAAU,GAAG;AACf,IAAI,MAAM;AACV,MAAM,GAAG;AACT,MAAM,KAAK;AACX,MAAM,OAAO;AACb,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,MAAM,WAAW;AACjB,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,GAAG,CAAC,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAC1D,IAAI,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;AAC1B,IAAI,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC3B,IAAI,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC;AACxB,IAAI,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG;AACH,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE;AAC/D,MAAM,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;AACrC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACtC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AAC5C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrF,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnF,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC/E,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACpC,MAAM,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5B,MAAM,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,iBAAiB,CAAC;AACrD,MAAM,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,aAAa,IAAI,gBAAgB,CAAC,iBAAiB,CAAC;AACnF,MAAM,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,eAAe,CAAC;AACjD,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,IAAI,IAAI,CAAC,qBAAqB,GAAG,MAAM;AACvC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AACzB,MAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACtC,QAAQ,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACjE,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC7D,GAAG;AACH,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;AACd,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,EAAE;AACnE,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACzC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;AACrC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACpC,IAAI,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AACjC,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,MAAM,IAAI,CAAC,cAAc,GAAG,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAClD,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AACrB,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACtC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpD,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC5C,KAAK,MAAM;AACX,MAAM,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;AACvC,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACzC,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,EAAE,CAAC;AACvC,IAAI,MAAM,GAAG,GAAG,MAAM;AACtB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpC,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,GAAG,MAAM;AACvB,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACvB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AAC9B,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;AAC/B,UAAU,IAAI,CAAC,eAAe,EAAE,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,OAAO;AACP,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG;AACT,MAAM,IAAI;AACV,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACrC,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AACnE,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAiB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;AAC5C,IAAiB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;AAC5C,IAAiB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;AAC5C,IAAiB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;AAC5C,IAAI,MAAM;AACV,MAAM,GAAG;AACT,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AACf,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/D,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC1C,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AAClB,GAAG;AACH,EAAE,gBAAgB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACnD,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAChC,IAAI,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAChC,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7B,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7B,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7I,GAAG;AACH,EAAE,qBAAqB,GAAG;AAC1B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAClC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AAC1B,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,MAAM,YAAY,GAAG,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,MAAM,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,MAAM,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,MAAM,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACxB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,IAAI,MAAM;AACV,MAAM,MAAM;AACZ,MAAM,GAAG;AACT,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC1C,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AACrB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACnB,MAAM,aAAa,EAAE,IAAI;AACzB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,CAAC,KAAK,EAAE;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,GAAG;AACH,EAAE,uBAAuB,GAAG;AAC5B,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,eAAe,EAAE,CAAC;AAChD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACvE,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnF,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,0BAA0B,GAAG;AAC/B,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;AAChC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,GAAG;AACH,EAAE,iBAAiB,CAAC,KAAK,EAAE;AAC3B,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE;AAC5E,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACpD,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAQ,aAAa,EAAE,IAAI;AAC3B,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACrD,GAAG;AACH,EAAE,iBAAiB,CAAC,KAAK,EAAE;AAC3B,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,eAAe,CAAC,KAAK,EAAE;AACzB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,kBAAkB,CAAC,KAAK,EAAE;AAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;AAC7B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACnC,IAAI,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAC1C,MAAM,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,IAAI,CAAC,2BAA2B,GAAG,UAAU,CAAC,MAAM;AACxD,MAAM,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACpE,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACpD,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC;AAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,OAAO,IAAI;AACnD,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC1C,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AACrC,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACpD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AAC5D,MAAM,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,KAAK,EAAE;AACP,MAAM,IAAI,EAAE,IAAI;AAChB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC;AACnD,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;AAClB,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC;AACrB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACrB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AACvD,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAChD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAChE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;AAChF,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,EAAE,KAAK,GAAG,YAAY,EAAE,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;AAClH,MAAM,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACvC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;AACzE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACzC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC;AACpB,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACpC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC;AAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7C,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,EAAE;AAChF,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;AACnC,IAAI,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;AACrC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC5C,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC;AACrC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;AACxC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;AAC7C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE;AACjC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,IAAI,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC;AAC7D,IAAI,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC;AAC/D,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE,gBAAgB,GAAG;AACrB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC;AACpK,GAAG;AACH,EAAE,OAAO,YAAY,CAAC,MAAM,EAAE;AAC9B,IAAI,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAChC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACrD,MAAM,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5D,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;AACnB,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;AAChC,OAAO;AACP,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrG,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,OAAO,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AACnD,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AACtC,IAAI,QAAQ,QAAQ;AACpB,MAAM,KAAK,CAAC;AACZ,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5D,UAAU,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,SAAS;AACT,QAAQ,MAAM;AACd,MAAM,KAAK,EAAE;AACb,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5D,UAAU,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,UAAU,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC1C,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAClC,SAAS;AACT,QAAQ,MAAM;AACd,MAAM,KAAK,GAAG;AACd,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5D,UAAU,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AAC/B,SAAS;AACT,QAAQ,MAAM;AACd,MAAM,KAAK,GAAG;AACd,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5D,UAAU,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,UAAU,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAClC,SAAS;AACT,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AACrD,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AACtC,IAAI,QAAQ,QAAQ;AACpB,MAAM,KAAK,CAAC;AACZ,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5D,UAAU,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC3B,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,SAAS;AACT,QAAQ,MAAM;AACd,MAAM,KAAK,EAAE;AACb,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5D,UAAU,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,UAAU,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC1C,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAClC,SAAS;AACT,QAAQ,MAAM;AACd,MAAM,KAAK,GAAG;AACd,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5D,UAAU,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AAC/B,SAAS;AACT,QAAQ,MAAM;AACd,MAAM,KAAK,GAAG;AACd,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5D,UAAU,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,UAAU,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAClC,SAAS;AACT,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;AACnC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACvC,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;AACpC,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;AACpC,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACrC,MAAM,MAAM,MAAM,GAAG,EAAE,CAAC;AACxB,MAAM,MAAM,MAAM,GAAG,EAAE,CAAC;AACxB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACvD,QAAQ,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAC1E,UAAU,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC3C,UAAU,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC3C,UAAU,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,UAAU,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,UAAU,MAAM;AAChB,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1C,QAAQ,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1C,QAAQ,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC7C,QAAQ,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC7C,QAAQ,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC7C,QAAQ,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC7C,QAAQ,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC3C,QAAQ,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC3C,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE;AACrB,UAAU,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,UAAU,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAClD,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AAC1B,UAAU,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,SAAS;AACT,OAAO;AACP,MAAM,KAAK,CAAC,IAAI,CAAC;AACjB,QAAQ,MAAM,EAAE,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AACxE,QAAQ,MAAM,EAAE,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AACxE,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;AACzB,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;AACzB,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACnC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;AAC9D,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC;AAC3F,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,OAAO;AACP,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACnF,GAAG;AACH,EAAE,aAAa,CAAC,SAAS,GAAG,KAAK,EAAE;AACnC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACxB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1E,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5E,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC;AACrC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;AACxC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/C,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/C,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC5B,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChC,IAAI,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3E,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,GAAG,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC;AACnI,GAAG;AACH,EAAE,aAAa,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;AACpD,IAAI,IAAI,IAAI,YAAY,oBAAoB,EAAE;AAC9C,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACpE,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACtC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAClC,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;AAC1D,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;AAC3C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;AAC9C,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC3C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;AAClC,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,MAAM;AACV,MAAM,KAAK;AACX,MAAM,IAAI;AACV,MAAM,QAAQ;AACd,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,KAAK,IAAI;AACb,MAAM,MAAM;AACZ,KAAK,IAAI,KAAK,EAAE;AAChB,MAAM,MAAM,GAAG,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrE,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;AACtB,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,MAAM,IAAI,EAAE,GAAG,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AACnD,MAAM,IAAI,EAAE,GAAG,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AACnD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1D,QAAQ,MAAM,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AACxD,QAAQ,MAAM,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAC5D,QAAQ,MAAM,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAC5D,QAAQ,MAAM,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAC5D,QAAQ,MAAM,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAC5D,QAAQ,MAAM,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,QAAQ,EAAE,GAAG,GAAG,CAAC;AACjB,QAAQ,EAAE,GAAG,GAAG,CAAC;AACjB,OAAO;AACP,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC7C,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AACnC,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,IAAI,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1C,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACxB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/E,IAAI,OAAO;AACX,MAAM,cAAc,EAAE,oBAAoB,CAAC,GAAG;AAC9C,MAAM,KAAK;AACX,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;AAClH,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,IAAI;AACV,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;AAClD,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA;AACA,MAAM,WAAW,SAAS,gBAAgB,CAAC;AAC3C,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,SAAS,GAAG,IAAI,CAAC;AACnB,EAAE,cAAc,GAAG,IAAI,CAAC;AACxB,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,WAAW,GAAG,IAAI,CAAC;AACrB,EAAE,eAAe,GAAG,EAAE,CAAC;AACvB,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,SAAS,GAAG,IAAI,CAAC;AACnB,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAC1B,EAAE,MAAM,GAAG,KAAK,CAAC;AACjB,EAAE,wBAAwB,GAAG,KAAK,CAAC;AACnC,EAAE,OAAO,KAAK,GAAG,OAAO,CAAC;AACzB,EAAE,OAAO,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAClD,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,KAAK,CAAC;AACV,MAAM,GAAG,MAAM;AACf,MAAM,IAAI,EAAE,aAAa;AACzB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AACvC,IAAI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AACzC,GAAG;AACH,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE;AACrC,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,WAAW,cAAc,GAAG;AAC9B,IAAI,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC7F,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,GAAG;AACH,EAAE,WAAW,iBAAiB,GAAG;AACjC,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,GAAG;AACH,EAAE,OAAO,wBAAwB,CAAC,IAAI,EAAE;AACxC,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,OAAO,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE;AAC7B,IAAI,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAK,EAAE;AACnD,MAAM,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE;AAClC,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;AAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AAC9B,KAAK;AACL,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;AAC1B,GAAG;AACH,EAAE,IAAI,kBAAkB,GAAG;AAC3B,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,OAAO;AACnB,MAAM,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO;AAC7C,KAAK,CAAC;AACN,GAAG;AACH,EAAE,OAAO,yBAAyB,CAAC,IAAI,EAAE;AACzC,IAAI,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACnD,IAAI,OAAO;AACX,MAAM,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD,MAAM,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AACnD,KAAK,CAAC;AACN,GAAG;AACH,EAAE,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE;AAC1C,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;AAC/B,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;AAC/B,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,MAAM,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,GAAG;AACH,EAAE,cAAc,GAAG;AACnB,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,4BAA4B,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3G,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC/B,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9C,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,4BAA4B,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,EAAE;AAC5G,MAAM,IAAI,CAAC,gBAAgB,CAAC;AAC5B,QAAQ,MAAM,EAAE,yBAAyB;AACzC,QAAQ,IAAI,EAAE;AACd,UAAU,cAAc,EAAE,KAAK;AAC/B,UAAU,aAAa,EAAE,OAAO;AAChC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,MAAM,IAAI;AACV,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;AAC9B,OAAO,CAAC,MAAM,EAAE;AAChB,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACrB,GAAG;AACH,EAAE,MAAM,cAAc,CAAC,SAAS,GAAG,IAAI,EAAE,iBAAiB,GAAG,IAAI,EAAE;AACnE,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AAC/B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM;AACV,MAAM,SAAS;AACf,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;AACxB,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,EAAE,MAAM,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE;AACpD,MAAM,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;AACjE,IAAI,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC;AAC3C,MAAM,IAAI,EAAE,SAAS;AACrB,MAAM,OAAO,EAAE;AACf,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,QAAQ,QAAQ,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC;AAChD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,MAAM,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE;AACzB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC1B,MAAM,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAChE,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;AACpC,IAAI,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC1C,IAAI,IAAI,iBAAiB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AACrD,MAAM,IAAI,CAAC,WAAW,GAAG;AACzB,QAAQ,GAAG,EAAE,OAAO;AACpB,QAAQ,UAAU,EAAE,KAAK;AACzB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,UAAU,GAAG;AACf,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1C,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AACnJ,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AAClC,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1C,MAAM,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AACzJ,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AACpC,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9B,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1C,MAAM,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAC3J,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAClD,IAAI,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AACxB,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAC;AACjD,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAC3C,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI;AACjD,MAAM,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY;AACnD,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtD,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;AACxB,SAAS,MAAM;AACf,UAAU,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9C,UAAU,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,UAAU,IAAI,CAAC,gBAAgB,CAAC;AAChC,YAAY,MAAM,EAAE,4BAA4B;AAChD,YAAY,IAAI,EAAE;AAClB,cAAc,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB;AAC/D,aAAa;AACb,WAAW,CAAC,CAAC;AACb,UAAU,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,EAAE,CAAC;AAClB,OAAO,EAAE;AACT,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,MAAM,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM;AAC7C,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,QAAQ,OAAO,EAAE,CAAC;AAClB,OAAO,EAAE;AACT,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAC5C,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;AAClB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5D,MAAM,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B,MAAM,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACjC,QAAQ,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACrC,OAAO;AACP,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,OAAO;AACP,MAAM,OAAO;AACb,KAAK;AACL,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AACpB,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC3B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AACjD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACrB,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,OAAO,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3G,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;AAClB,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC;AACrB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACrB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5B,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACjD,MAAM,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAChE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,EAAE,KAAK,GAAG,YAAY,EAAE,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;AAClH,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC;AACpB,GAAG;AACH,EAAE,aAAa,GAAG;AAClB,IAAI,MAAM;AACV,MAAM,GAAG;AACT,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,IAAI;AACR,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AACrB,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AACxD,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AACxC,KAAK,MAAM,IAAI,KAAK,GAAG,SAAS,GAAG,SAAS,IAAI,MAAM,GAAG,SAAS,GAAG,UAAU,EAAE;AACjF,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,GAAG,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC;AAC9F,MAAM,KAAK,IAAI,MAAM,CAAC;AACtB,MAAM,MAAM,IAAI,MAAM,CAAC;AACvB,KAAK;AACL,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,WAAW,GAAG,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC;AACtF,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnE,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,4BAA4B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACzH,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AACxC,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC1C,MAAM,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,CAAC,gBAAgB,CAAC;AAC1B,MAAM,MAAM,EAAE,gBAAgB;AAC9B,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC9D,KAAK;AACL,GAAG;AACH,EAAE,UAAU,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,GAAG,KAAK,EAAE;AAC7E,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM;AACV,MAAM,KAAK,EAAE,WAAW;AACxB,MAAM,MAAM,EAAE,YAAY;AAC1B,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AACrB,IAAI,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAC1C,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9B,IAAI,IAAI,KAAK,GAAG,WAAW;AAC3B,MAAM,MAAM,GAAG,YAAY,CAAC;AAC5B,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,mBAAmB,EAAE;AAC7B,MAAM,IAAI,WAAW,GAAG,mBAAmB,IAAI,YAAY,GAAG,mBAAmB,EAAE;AACnF,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,GAAG,WAAW,EAAE,mBAAmB,GAAG,YAAY,CAAC,CAAC;AACtG,QAAQ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;AAChD,QAAQ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;AAClD,OAAO;AACP,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AAC3E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AAC9E,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxB,QAAQ,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAC9D,OAAO;AACP,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1C,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC7C,MAAM,IAAI,KAAK,GAAG,OAAO;AACzB,QAAQ,KAAK,GAAG,SAAS,CAAC;AAC1B,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,MAAM,EAAE;AAChD,QAAQ,KAAK,GAAG,OAAO,CAAC;AACxB,OAAO,MAAM,IAAI,MAAM,CAAC,UAAU,GAAG,8BAA8B,CAAC,CAAC,OAAO,EAAE;AAC9E,QAAQ,KAAK,GAAG,SAAS,CAAC;AAC1B,QAAQ,KAAK,GAAG,SAAS,CAAC;AAC1B,OAAO;AACP,MAAM,MAAM,MAAM,GAAG,EAAE,CAAC;AACxB,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC;AACnD,MAAM,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,WAAW,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClD,MAAM,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;AACnC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;AACnE,MAAM,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;AACnC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAC3D,MAAM,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAChF,MAAM,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3D,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AACpD,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAChG,KAAK;AACL,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC;AACzB,IAAI,IAAI,eAAe,EAAE;AACzB,MAAM,IAAI,SAAS,EAAE,UAAU,CAAC;AAChC,MAAM,IAAI,WAAW,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,GAAG,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,gBAAgB,EAAE;AACxG,QAAQ,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,QAAQ,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC,OAAO,MAAM;AACb,QAAQ,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9B,QAAQ,IAAI,WAAW,GAAG,gBAAgB,IAAI,YAAY,GAAG,gBAAgB,EAAE;AAC/E,UAAU,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,WAAW,EAAE,gBAAgB,GAAG,YAAY,CAAC,CAAC;AAClG,UAAU,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;AACtD,UAAU,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;AACxD,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAY,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC9D,WAAW;AACX,SAAS;AACT,OAAO;AACP,MAAM,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACnE,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE;AACtD,QAAQ,kBAAkB,EAAE,IAAI;AAChC,OAAO,CAAC,CAAC;AACT,MAAM,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACrG,MAAM,SAAS,GAAG;AAClB,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,MAAM,EAAE,UAAU;AAC1B,QAAQ,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,IAAI;AACzE,OAAO,CAAC;AACR,KAAK;AACL,IAAI,OAAO;AACX,MAAM,MAAM;AACZ,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,KAAK,CAAC;AACN,GAAG;AACH,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE;AAChC,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC9D,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC;AACrC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;AACxC,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;AAC1C,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;AACxC,MAAM,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,MAAM,YAAY,GAAG,GAAG,CAAC;AAC7B,IAAI,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAM;AAC7C,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACnC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtC,KAAK,EAAE,YAAY,CAAC,CAAC;AACrB,GAAG;AACH,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;AAC9B,IAAI,MAAM;AACV,MAAM,KAAK,EAAE,WAAW;AACxB,MAAM,MAAM,EAAE,YAAY;AAC1B,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AACrB,IAAI,IAAI,QAAQ,GAAG,WAAW,CAAC;AAC/B,IAAI,IAAI,SAAS,GAAG,YAAY,CAAC;AACjC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9B,IAAI,OAAO,QAAQ,GAAG,CAAC,GAAG,KAAK,IAAI,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE;AAC3D,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;AACjC,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE;AAChC,QAAQ,QAAQ,GAAG,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC9F,OAAO;AACP,MAAM,IAAI,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE;AAClC,QAAQ,SAAS,GAAG,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAClG,OAAO;AACP,MAAM,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACjE,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC7C,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACpF,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;AACjD,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC7B,IAAI,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAC1C,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AAC1D,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AAC5D,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAChC,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE;AACnF,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;AAC/B,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;AACjC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAC7F,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC3C,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAC9F,GAAG;AACH,EAAE,kBAAkB,GAAG;AACvB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAG;AACH,EAAE,gBAAgB,CAAC,KAAK,EAAE;AAC1B,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACvB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3E,QAAQ,IAAI,GAAG,EAAE;AACjB,UAAU,OAAO,GAAG,CAAC;AACrB,SAAS;AACT,OAAO;AACP,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACtD,MAAM,CAAC;AACP,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM;AAC7B,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AACxB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1C,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,MAAM,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC1D,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;AACxF,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAC3F,MAAM,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3D,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC7C,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACtG,MAAM,OAAO,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAC/C,KAAK;AACL,IAAI,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAClC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,OAAO,IAAI;AACnD,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC1C,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AACrC,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AAC5D,MAAM,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC5B,KAAK,EAAE;AACP,MAAM,IAAI,EAAE,IAAI;AAChB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,aAAa,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;AACpD,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,IAAI,YAAY,sBAAsB,EAAE;AAChD,MAAM,MAAM;AACZ,QAAQ,IAAI,EAAE;AACd,UAAU,IAAI;AACd,UAAU,QAAQ;AAClB,UAAU,EAAE;AACZ,UAAU,YAAY;AACtB,UAAU,QAAQ;AAClB,SAAS;AACT,QAAQ,SAAS;AACjB,QAAQ,MAAM,EAAE;AAChB,UAAU,IAAI,EAAE;AAChB,YAAY,UAAU;AACtB,WAAW;AACX,SAAS;AACT,OAAO,GAAG,IAAI,CAAC;AACf,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACvD,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACnF,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AACtB,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACxH,MAAM,WAAW,GAAG,IAAI,GAAG;AAC3B,QAAQ,cAAc,EAAE,oBAAoB,CAAC,KAAK;AAClD,QAAQ,QAAQ,EAAE,SAAS,CAAC,EAAE;AAC9B,QAAQ,MAAM,EAAE,SAAS,CAAC,MAAM;AAChC,QAAQ,SAAS,EAAE,UAAU,GAAG,CAAC;AACjC,QAAQ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,QAAQ,QAAQ;AAChB,QAAQ,EAAE;AACV,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,iBAAiB,EAAE;AAC3B,UAAU,UAAU,EAAE,KAAK;AAC3B,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,YAAY;AACpB,QAAQ,QAAQ;AAChB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACpE,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,MAAM,QAAQ;AACd,MAAM,KAAK;AACX,MAAM,iBAAiB;AACvB,KAAK,GAAG,IAAI,CAAC;AACb,IAAI,IAAI,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AAChE,MAAM,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;AAClC,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;AAChC,OAAO;AACP,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;AACpC,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AAC1B,IAAI,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9D,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;AACrD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;AACvD,IAAI,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC;AACjD,IAAI,IAAI,iBAAiB,EAAE;AAC3B,MAAM,MAAM,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC;AACtC,IAAI,MAAM,CAAC,wBAAwB,GAAG,CAAC,CAAC,WAAW,CAAC;AACpD,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,SAAS,CAAC,YAAY,GAAG,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE;AAClD,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACxB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,UAAU,GAAG;AACvB,MAAM,cAAc,EAAE,oBAAoB,CAAC,KAAK;AAChD,MAAM,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC9B,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,KAAK,EAAE,IAAI,CAAC,MAAM;AACxB,MAAM,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;AAClD,KAAK,CAAC;AACN,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACzD,MAAM,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACjE,MAAM,OAAO,UAAU,CAAC;AACxB,KAAK;AACL,IAAI,MAAM;AACV,MAAM,UAAU;AAChB,MAAM,OAAO;AACb,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,EAAE;AAChC,MAAM,UAAU,CAAC,iBAAiB,GAAG;AACrC,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,GAAG,EAAE,OAAO;AACpB,OAAO,CAAC;AACR,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAClC,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;AAC1D,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,IAAI,OAAO,CAAC,aAAa,EAAE;AACjC,QAAQ,OAAO,UAAU,CAAC,iBAAiB,CAAC;AAC5C,OAAO,MAAM;AACb,QAAQ,UAAU,CAAC,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;AACzF,OAAO;AACP,KAAK;AACL,IAAI,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC7C,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE;AAC1B,MAAM,OAAO,UAAU,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;AACjC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC5H,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE;AACzC,QAAQ,IAAI;AACZ,QAAQ,UAAU;AAClB,OAAO,CAAC,CAAC;AACT,MAAM,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACvD,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AAC5B,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1D,MAAM,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE;AAChC,QAAQ,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,QAAQ,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAC3C,QAAQ,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAClE,OAAO;AACP,KAAK;AACL,IAAI,OAAO,UAAU,CAAC;AACtB,GAAG;AACH,EAAE,kBAAkB,CAAC,UAAU,EAAE;AACjC,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM,SAAS;AACf,MAAM,iBAAiB,EAAE;AACzB,QAAQ,OAAO;AACf,OAAO;AACP,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1B,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClF,IAAI,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC;AAC/D,IAAI,MAAM,aAAa,GAAG,CAAC,UAAU,CAAC,iBAAiB,EAAE,GAAG,IAAI,EAAE,MAAM,OAAO,CAAC;AAChF,IAAI,OAAO;AACX,MAAM,MAAM,EAAE,UAAU,IAAI,eAAe,IAAI,aAAa;AAC5D,MAAM,aAAa;AACnB,KAAK,CAAC;AACN,GAAG;AACH,EAAE,uBAAuB,CAAC,UAAU,EAAE;AACtC,IAAI,UAAU,CAAC,YAAY,CAAC;AAC5B,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,CAAC;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB,CAAC;AAC5B,EAAE,qBAAqB,CAAC;AACxB,EAAE,WAAW,GAAG,KAAK,CAAC;AACtB,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAC1B,EAAE,QAAQ,GAAG,IAAI,CAAC;AAClB,EAAE,qBAAqB,GAAG,IAAI,CAAC;AAC/B,EAAE,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,EAAE,eAAe,GAAG,KAAK,CAAC;AAC1B,EAAE,aAAa,GAAG,KAAK,CAAC;AACxB,EAAE,YAAY,GAAG,KAAK,CAAC;AACvB,EAAE,UAAU,GAAG,IAAI,CAAC;AACpB,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAC1B,EAAE,UAAU,CAAC;AACb,EAAE,OAAO,YAAY,GAAG,KAAK,CAAC;AAC9B,EAAE,OAAO,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACjI,EAAE,WAAW,CAAC;AACd,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,GAAG;AACP,IAAI,eAAe;AACnB,IAAI,oBAAoB;AACxB,IAAI,eAAe;AACnB,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,IAAI;AACR,GAAG,EAAE;AACL,IAAI,MAAM,WAAW,GAAG,CAAC,GAAG,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;AACzE,IAAI,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE;AAC7C,MAAM,qBAAqB,CAAC,YAAY,GAAG,IAAI,CAAC;AAChD,MAAM,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AAC5C,QAAQ,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK;AACL,IAAI,SAAS,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACnB,IAAI,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;AACtD,IAAI,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;AAC5C,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,IAAI,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC;AACvC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;AACpC,GAAG;AACH,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,oBAAoB,CAAC,IAAI,CAAC;AACnF,GAAG;AACH,EAAE,aAAa,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE;AAC/C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB,IAAI,QAAQ,IAAI;AAChB,MAAM,KAAK,oBAAoB,CAAC,IAAI;AACpC,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAQ,OAAO;AACf,MAAM,KAAK,oBAAoB,CAAC,GAAG;AACnC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAQ,MAAM;AACd,MAAM,KAAK,oBAAoB,CAAC,SAAS;AACzC,QAAQ,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACnC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAQ,MAAM;AACd,MAAM;AACN,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;AACnD,IAAI,MAAM;AACV,MAAM,SAAS;AACf,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACjB,IAAI,KAAK,MAAM,UAAU,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE;AAC1E,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC;AACtF,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,GAAG;AACH,EAAE,YAAY,CAAC,SAAS,EAAE;AAC1B,IAAI,OAAO,SAAS,KAAK,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;AAC9C,GAAG;AACH,EAAE,oBAAoB,CAAC,YAAY,EAAE;AACrC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,oBAAoB,CAAC,GAAG,EAAE;AAChE,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,MAAM,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AACnD,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;AAC9B,UAAU,MAAM,CAAC,eAAe,EAAE,CAAC;AACnC,UAAU,OAAO;AACjB,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC9C,MAAM,OAAO,EAAE,CAAC;AAChB,MAAM,OAAO,EAAE,CAAC;AAChB,KAAK,EAAE,KAAK,CAAC,CAAC;AACd,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;AAC7B,GAAG;AACH,EAAE,eAAe,CAAC,SAAS,EAAE;AAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAC/C,GAAG;AACH,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,aAAa,CAAC,OAAO,GAAG,KAAK,EAAE;AACjC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;AACnD,GAAG;AACH,EAAE,mBAAmB,CAAC,OAAO,GAAG,KAAK,EAAE;AACvC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;AACpD,GAAG;AACH,EAAE,kCAAkC,CAAC,OAAO,GAAG,KAAK,EAAE;AACtD,IAAI,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;AACtE,GAAG;AACH,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3C,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AACjD,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;AAC7B,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,MAAM,IAAI,MAAM,CAAC,mBAAmB,EAAE;AACtC,QAAQ,IAAI,CAAC,UAAU,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC;AAChE,QAAQ,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC7D,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC;AACrE,IAAI,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACtC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AACtB,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AACxE,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,IAAI,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AACtD,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACtD,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAChC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACpC,IAAI,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;AACzC,IAAI,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;AACvC,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AACjD,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;AAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;AACvC,QAAQ,SAAS;AACjB,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;AACvC,QAAQ,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AACnE,QAAQ,SAAS;AACjB,OAAO,MAAM;AACb,QAAQ,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AACjE,OAAO;AACP,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC;AACrE,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC/B,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC;AACvE,MAAM,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACxC,QAAQ,MAAM;AACd,UAAU,EAAE;AACZ,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC1B,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE;AAC5D,UAAU,SAAS;AACnB,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9C,QAAQ,IAAI,MAAM,EAAE;AACpB,UAAU,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAClD,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,UAAU,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC1B,UAAU,SAAS;AACnB,SAAS;AACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5C,QAAQ,IAAI,MAAM,EAAE;AACpB,UAAU,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC/D,UAAU,IAAI,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE;AACxD,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,WAAW;AACX,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;AACxB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM;AACV,MAAM,SAAS;AACf,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACjB,IAAI,KAAK,MAAM,UAAU,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE;AAC1E,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChC,IAAI,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,CAAC;AAClD,IAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC9B,GAAG;AACH,EAAE,qBAAqB,CAAC,EAAE,EAAE;AAC5B,IAAI,OAAO,IAAI,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AACpE,GAAG;AACH,EAAE,eAAe,CAAC,MAAM,EAAE;AAC1B,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;AACtD,IAAI,IAAI,aAAa,KAAK,MAAM,EAAE;AAClC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC5C,GAAG;AACH,EAAE,mBAAmB,GAAG;AACxB,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxD,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;AACpD,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC3E,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACjG,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACxD,KAAK;AACL,GAAG;AACH,EAAE,oBAAoB,GAAG;AACzB,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvD,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AACpC,MAAM,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACnC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC3D,KAAK;AACL,GAAG;AACH,EAAE,qBAAqB,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAClC,IAAI,MAAM;AACV,MAAM,MAAM;AACZ,KAAK,GAAG,KAAK,CAAC;AACd,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACxK,MAAM,MAAM;AACZ,QAAQ,KAAK;AACb,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AACpC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE;AACxD,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9D,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAChD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,MAAM,eAAe,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,KAAK,EAAE;AACnF,QAAQ,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;AACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;AAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;AAClB,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM;AAC9D,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACjC,OAAO,EAAE;AACT,QAAQ,IAAI,EAAE,IAAI;AAClB,QAAQ,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;AACvC,OAAO,CAAC,CAAC;AACT,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;AAC7B,KAAK;AACL,GAAG;AACH,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;AAC1C,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1E,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtE,MAAM,MAAM;AACZ,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC3B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACzC,IAAI,MAAM;AACV,MAAM,mBAAmB;AACzB,KAAK,GAAG,MAAM,CAAC;AACf,IAAI,IAAI,mBAAmB,IAAI,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,EAAE;AAChG,MAAM,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;AAC7D,KAAK;AACL,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5E,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,mBAAmB,EAAE;AAC1D,MAAM,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC1D,KAAK;AACL,GAAG;AACH,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACzC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AACxB,IAAI,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;AACnC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC7B,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACvC,KAAK;AACL,GAAG;AACH,EAAE,YAAY,CAAC,MAAM,EAAE;AACvB,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,mBAAmB,EAAE;AACrD,MAAM,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC9E,MAAM,gBAAgB,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACvD,MAAM,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE;AAC9C,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,KAAK;AACL,GAAG;AACH,EAAE,GAAG,CAAC,MAAM,EAAE;AACd,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,eAAe,EAAE;AAC1D,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AACjC,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AAClC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,MAAM,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;AACpC,KAAK;AACL,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC/B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;AACvB,IAAI,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACnD,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACzD,GAAG;AACH,EAAE,eAAe,CAAC,MAAM,EAAE;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AACjC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,aAAa;AACnB,KAAK,GAAG,QAAQ,CAAC;AACjB,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC3E,MAAM,MAAM,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACzC,MAAM,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,MAAM;AACpD,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAC1C,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC1D,UAAU,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM;AACvD,YAAY,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC9C,WAAW,EAAE;AACb,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;AAC3C,WAAW,CAAC,CAAC;AACb,UAAU,aAAa,CAAC,KAAK,EAAE,CAAC;AAChC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC5C,SAAS;AACT,OAAO,EAAE,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC7H,GAAG;AACH,EAAE,YAAY,CAAC,MAAM,EAAE;AACvB,IAAI,IAAI,MAAM,CAAC,gBAAgB,EAAE,EAAE;AACnC,MAAM,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;AAC7B,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AACvB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;AACpB,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvB,KAAK;AACL,GAAG;AACH,EAAE,iBAAiB,CAAC,MAAM,EAAE;AAC5B,IAAI,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxD,IAAI,MAAM,IAAI,GAAG,MAAM;AACvB,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AACtB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,WAAW,CAAC;AACrB,MAAM,GAAG;AACT,MAAM,IAAI;AACV,MAAM,QAAQ,EAAE,KAAK;AACrB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,SAAS,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,kBAAkB,GAAG;AAC3B,IAAI,OAAO,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7E,GAAG;AACH,EAAE,cAAc,CAAC,EAAE,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,gBAAgB,CAAC,MAAM,EAAE;AAC3B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAC/C,IAAI,OAAO,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5E,GAAG;AACH,EAAE,uBAAuB,GAAG;AAC5B,IAAI,OAAO,IAAI,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,CAAC;AAC9D,GAAG;AACH,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACrC,IAAI,MAAM;AACV,MAAM,OAAO;AACb,MAAM,OAAO;AACb,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAChC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACzC,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,EAAE;AACR,MAAM,CAAC,EAAE,OAAO;AAChB,MAAM,CAAC,EAAE,OAAO;AAChB,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU;AAChC,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,GAAG,MAAM;AACf,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvB,KAAK;AACL,GAAG;AACH,EAAE,MAAM,WAAW,CAAC,IAAI,EAAE;AAC1B,IAAI,OAAO,CAAC,MAAM,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AAC9J,GAAG;AACH,EAAE,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE;AACtD,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAChC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACzC,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,EAAE;AACR,MAAM,CAAC,EAAE,KAAK,CAAC,OAAO;AACtB,MAAM,CAAC,EAAE,KAAK,CAAC,OAAO;AACtB,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU;AAChC,MAAM,UAAU;AAChB,MAAM,GAAG,IAAI;AACb,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,eAAe,GAAG;AACpB,IAAI,MAAM;AACV,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;AACzC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AACvD,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;AACzD,IAAI,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,IAAI,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5G,IAAI,OAAO;AACX,MAAM,OAAO;AACb,MAAM,OAAO;AACb,KAAK,CAAC;AACN,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7D,GAAG;AACH,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,cAAc,CAAC,MAAM,EAAE;AACzB,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,QAAQ,CAAC,MAAM,EAAE;AACnB,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,SAAS,CAAC,KAAK,EAAE;AACnB,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE;AACtD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC/B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACjC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3B,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC9B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,oBAAoB,CAAC,KAAK,EAAE;AAClE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACpC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,oBAAoB,CAAC,SAAS,EAAE;AACtE,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,MAAM,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE;AACtD,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAChC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;AAC/C,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;AACnD,GAAG;AACH,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE;AAC1C,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,MAAM,KAAK,IAAI,EAAE;AACtD,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AACvC,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACpC,MAAM,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/C,MAAM,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACxC,KAAK;AACL,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AACjD,MAAM,IAAI,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC9E,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7B,MAAM,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;AACrC,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtC,GAAG;AACH,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AACjD,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;AAC5B,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;AACxB,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC/B,GAAG;AACH,EAAE,MAAM,CAAC;AACT,IAAI,QAAQ;AACZ,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACrE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,GAAG;AACH,EAAE,MAAM,CAAC;AACT,IAAI,QAAQ;AACZ,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AACrC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC/C,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACvC,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE;AACjC,MAAM,QAAQ;AACd,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,WAAW,KAAK,QAAQ,EAAE;AAClC,MAAM,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AACnD,QAAQ,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChC,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,IAAI,cAAc,GAAG;AACvB,IAAI,MAAM;AACV,MAAM,SAAS;AACf,MAAM,UAAU;AAChB,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC9B,IAAI,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC;AACpD,GAAG;AACH,CAAC;AAGD;AACA;AACA,MAAM,SAAS,CAAC;AAChB,EAAE,OAAO,GAAG,IAAI,CAAC;AACjB,EAAE,GAAG,GAAG,CAAC,CAAC;AACV,EAAE,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,EAAE,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AACxB,EAAE,WAAW,CAAC;AACd,IAAI,SAAS;AACb,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,GAAG;AACH,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;AACjC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AAClC,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AACnD,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;AACxB,UAAU,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAS;AACT,OAAO;AACP,MAAM,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,EAAE,WAAW,WAAW,GAAG;AAC3B,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;AAC5D,GAAG;AACH,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE;AAC1B,IAAI,CAAC,GAAG,CAAC;AACT,IAAI,CAAC,GAAG,CAAC;AACT,IAAI,KAAK,GAAG,CAAC;AACb,IAAI,MAAM,GAAG,CAAC;AACd,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,MAAM;AACV,MAAM,KAAK;AACX,KAAK,GAAG,OAAO,CAAC;AAChB,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,GAAG;AACH,EAAE,UAAU,CAAC,GAAG,EAAE;AAClB,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAC1C,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE;AAChC,IAAI,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACrE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,IAAI,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACxC,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC5C,IAAI,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;AAChE,IAAI,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnE,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACjC,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACnD,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,IAAI,OAAO,UAAU,CAAC;AACtB,GAAG;AACH,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,GAAG,KAAK,EAAE;AAC/D,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACpC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;AACvB,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,IAAI,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;AACjD,IAAI,IAAI,eAAe,EAAE;AACzB,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1D,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAC/C,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,IAAI,OAAO;AACX,MAAM,EAAE;AACR,MAAM,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC;AACN,GAAG;AACH,EAAE,gBAAgB,CAAC,QAAQ,EAAE;AAC7B,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC3C,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,IAAI,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;AAC7D,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;AACvB,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACjC,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/D,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxB,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;AAC1D,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/D,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxB,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACtC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACvC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACzC,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7D,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvB,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7C,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACzC,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxC,MAAM,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAC/C,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE;AACzB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE;AACvB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,mBAAmB,CAAC,EAAE,EAAE;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE;AACvB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE;AACrB,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD,GAAG;AACH,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;AACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;AAC/D,GAAG;AACH,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;AACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;AACpE,GAAG;AACH,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE;AACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE;AAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAChE,GAAG;AACH,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE;AAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACnD,GAAG;AACH,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE;AAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,UAAU,CAAC,EAAE,EAAE;AACjB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,MAAM,CAAC,EAAE,EAAE;AACb,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AAC/B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AAC/C,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC1B,GAAG;AACH,CAAC;AAiBD;AACA,IAAI,iCAAiC,GAAG,mBAAmB,CAAC,cAAc,CAAC;AAC3E,IAAI,wCAAwC,GAAG,mBAAmB,CAAC,qBAAqB,CAAC;AACzF,IAAI,6CAA6C,GAAG,mBAAmB,CAAC,0BAA0B,CAAC;AACnG,IAAI,uCAAuC,GAAG,mBAAmB,CAAC,oBAAoB,CAAC;AACvF,IAAI,4CAA4C,GAAG,mBAAmB,CAAC,yBAAyB,CAAC;AACjG,IAAI,kCAAkC,GAAG,mBAAmB,CAAC,eAAe,CAAC;AAC7E,IAAI,iCAAiC,GAAG,mBAAmB,CAAC,cAAc,CAAC;AAC3E,IAAI,sCAAsC,GAAG,mBAAmB,CAAC,mBAAmB,CAAC;AACrF,IAAI,8BAA8B,GAAG,mBAAmB,CAAC,WAAW,CAAC;AACrE,IAAI,gCAAgC,GAAG,mBAAmB,CAAC,aAAa,CAAC;AACzE,IAAI,4BAA4B,GAAG,mBAAmB,CAAC,SAAS,CAAC;AACjE,IAAI,8BAA8B,GAAG,mBAAmB,CAAC,WAAW,CAAC;AACrE,IAAI,sCAAsC,GAAG,mBAAmB,CAAC,mBAAmB,CAAC;AACrF,IAAI,4BAA4B,GAAG,mBAAmB,CAAC,SAAS,CAAC;AACjE,IAAI,sCAAsC,GAAG,mBAAmB,CAAC,mBAAmB,CAAC;AACrF,IAAI,sCAAsC,GAAG,mBAAmB,CAAC,mBAAmB,CAAC;AACrF,IAAI,sBAAsB,GAAG,mBAAmB,CAAC,GAAG,CAAC;AACrD,IAAI,8BAA8B,GAAG,mBAAmB,CAAC,WAAW,CAAC;AACrE,IAAI,wCAAwC,GAAG,mBAAmB,CAAC,qBAAqB,CAAC;AACzF,IAAI,gCAAgC,GAAG,mBAAmB,CAAC,aAAa,CAAC;AACzE,IAAI,4BAA4B,GAAG,mBAAmB,CAAC,SAAS,CAAC;AACjE,IAAI,oCAAoC,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;AACjF,IAAI,iCAAiC,GAAG,mBAAmB,CAAC,cAAc,CAAC;AAC3E,IAAI,gCAAgC,GAAG,mBAAmB,CAAC,aAAa,CAAC;AACzE,IAAI,8CAA8C,GAAG,mBAAmB,CAAC,2BAA2B,CAAC;AACrG,IAAI,4BAA4B,GAAG,mBAAmB,CAAC,SAAS,CAAC;AACjE,IAAI,8CAA8C,GAAG,mBAAmB,CAAC,2BAA2B,CAAC;AACrG,IAAI,uBAAuB,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACvD,IAAI,iCAAiC,GAAG,mBAAmB,CAAC,cAAc,CAAC;AAC3E,IAAI,2BAA2B,GAAG,mBAAmB,CAAC,QAAQ,CAAC;AAC/D,IAAI,wBAAwB,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACzD,IAAI,yCAAyC,GAAG,mBAAmB,CAAC,sBAAsB,CAAC;AAC3F,IAAI,4BAA4B,GAAG,mBAAmB,CAAC,SAAS,CAAC;AACjE,IAAI,8BAA8B,GAAG,mBAAmB,CAAC,WAAW,CAAC;AACrE,IAAI,qCAAqC,GAAG,mBAAmB,CAAC,kBAAkB,CAAC;AACnF,IAAI,wCAAwC,GAAG,mBAAmB,CAAC,qBAAqB,CAAC;AACzF,IAAI,qCAAqC,GAAG,mBAAmB,CAAC,kBAAkB,CAAC;AACnF,IAAI,+BAA+B,GAAG,mBAAmB,CAAC,YAAY,CAAC;AACvE,IAAI,4BAA4B,GAAG,mBAAmB,CAAC,SAAS,CAAC;AACjE,IAAI,gCAAgC,GAAG,mBAAmB,CAAC,aAAa,CAAC;AACzE,IAAI,mCAAmC,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;AAC/E,IAAI,qCAAqC,GAAG,mBAAmB,CAAC,kBAAkB,CAAC;AACnF,IAAI,yBAAyB,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC3D,IAAI,0BAA0B,GAAG,mBAAmB,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0]}