@opentui/qrcode 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -8454,7 +8454,7 @@ function formatBits(data, xorMask) {
|
|
|
8454
8454
|
return (data << 10 | rem) ^ xorMask;
|
|
8455
8455
|
}
|
|
8456
8456
|
// src/renderables/QRCode.ts
|
|
8457
|
-
import { MeasureMode } from "yoga
|
|
8457
|
+
import { MeasureMode } from "@opentui/core/yoga";
|
|
8458
8458
|
import {
|
|
8459
8459
|
OptimizedBuffer,
|
|
8460
8460
|
parseColor,
|
|
@@ -8801,5 +8801,5 @@ function normalizeScale(value) {
|
|
|
8801
8801
|
}
|
|
8802
8802
|
export { EciAssignment, encodeTextBytes, ErrorCorrectionLevel, QrSegment, QRCode, createQrSvg, QRCodeRenderable };
|
|
8803
8803
|
|
|
8804
|
-
//# debugId=
|
|
8805
|
-
//# sourceMappingURL=chunk-
|
|
8804
|
+
//# debugId=4129A72F05EEBA2564756E2164756E21
|
|
8805
|
+
//# sourceMappingURL=chunk-kyb43n0g.js.map
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
"import { SHIFT_JIS_CODE_BY_CHAR } from \"./qrcode.shift-jis.js\"\n\nexport type ByteEncoding = \"utf-8\" | \"iso-8859-1\" | \"shift-jis\"\n\nexport const EciAssignment = {\n ISO_8859_1: 3,\n SHIFT_JIS: 20,\n UTF_8: 26,\n} as const\n\nexport function encodeTextBytes(text: string, encoding: ByteEncoding = \"utf-8\"): Uint8Array {\n switch (encoding) {\n case \"utf-8\":\n return new TextEncoder().encode(text)\n case \"iso-8859-1\":\n return new Uint8Array(encodeIso88591(text))\n case \"shift-jis\":\n return new Uint8Array(encodeShiftJis(text))\n default:\n throw new Error(\"Unsupported byte encoding\")\n }\n}\n\nexport function shiftJisCodeForCharacter(ch: string): number {\n const cp = ch.codePointAt(0)!\n if (cp <= 0x7f) return cp\n const code = SHIFT_JIS_CODE_BY_CHAR[ch]\n if (code === undefined) throw new Error(`Character ${JSON.stringify(ch)} is not encodable in Shift JIS`)\n return code\n}\n\nexport function isKanjiModeShiftJisValue(value: number): boolean {\n return (value >= 0x8140 && value <= 0x9ffc) || (value >= 0xe040 && value <= 0xebbf)\n}\n\nexport function encodingForKnownEci(eci: number): ByteEncoding | null {\n if (eci === EciAssignment.ISO_8859_1) return \"iso-8859-1\"\n if (eci === EciAssignment.SHIFT_JIS) return \"shift-jis\"\n if (eci === EciAssignment.UTF_8) return \"utf-8\"\n return null\n}\n\nexport function validateBytes(bytes: number[]): number[] {\n for (const b of bytes) if (!Number.isInteger(b) || b < 0 || b > 0xff) throw new RangeError(\"Byte value out of range\")\n return bytes\n}\n\nexport function asciiBytes(text: string): number[] {\n const result: number[] = []\n for (let i = 0; i < text.length; i++) result.push(text.charCodeAt(i))\n return result\n}\n\nfunction encodeIso88591(text: string): number[] {\n const result: number[] = []\n for (const ch of Array.from(text)) {\n const cp = ch.codePointAt(0)!\n if (cp > 0xff) throw new Error(`Character ${JSON.stringify(ch)} is not encodable in ISO-8859-1`)\n result.push(cp)\n }\n return result\n}\n\nfunction encodeShiftJis(text: string): number[] {\n const result: number[] = []\n for (const ch of Array.from(text)) {\n const code = shiftJisCodeForCharacter(ch)\n if (code <= 0xff) result.push(code)\n else result.push(code >>> 8, code & 0xff)\n }\n return result\n}\n",
|
|
7
7
|
"export interface TerminalRenderOptions {\n /** Quiet zone in modules. ISO requires at least 4 for QR Code. */\n border?: number\n /**\n * Render using ANSI background colors. Recommended when a real scanner will read the terminal.\n * The ANSI renderer paints light modules white and dark modules black independent of terminal theme.\n */\n ansi?: boolean\n /** Swap light and dark output. Leave false for normal black-on-white scanner-facing output. */\n invert?: boolean\n}\n\nexport interface NormalizedTerminalRenderOptions {\n border: number\n ansi: boolean\n invert: boolean\n}\n\nexport function matrixToSvg(\n matrix: boolean[][],\n border: number,\n minimumBorder: number,\n moduleSize: number,\n lightColor: string,\n darkColor: string,\n): string {\n if (!Number.isInteger(border) || border < minimumBorder) {\n throw new RangeError(`Border/quiet zone must be at least ${minimumBorder} modules`)\n }\n if (moduleSize <= 0) throw new RangeError(\"moduleSize must be positive\")\n const size = matrix.length\n const dimension = (size + border * 2) * moduleSize\n const parts: string[] = []\n parts.push(\n `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${dimension} ${dimension}\" width=\"${dimension}\" height=\"${dimension}\" shape-rendering=\"crispEdges\">`,\n )\n parts.push(`<rect width=\"100%\" height=\"100%\" fill=\"${escapeXml(lightColor)}\"/>`)\n const path: string[] = []\n for (let y = 0; y < size; y++) {\n let x = 0\n while (x < size) {\n if (!matrix[y][x]) {\n x++\n continue\n }\n const startX = x\n while (x < size && matrix[y][x]) x++\n const rectX = (startX + border) * moduleSize\n const rectY = (y + border) * moduleSize\n const rectW = (x - startX) * moduleSize\n path.push(`M${rectX},${rectY}h${rectW}v${moduleSize}h-${rectW}z`)\n }\n }\n parts.push(`<path d=\"${path.join(\"\")}\" fill=\"${escapeXml(darkColor)}\"/>`)\n parts.push(\"</svg>\")\n return parts.join(\"\")\n}\n\nexport function normalizeTerminalOptions(\n options: number | TerminalRenderOptions,\n defaultBorder: number,\n minimumBorder: number,\n): NormalizedTerminalRenderOptions {\n const result: NormalizedTerminalRenderOptions =\n typeof options === \"number\"\n ? { border: options, ansi: false, invert: false }\n : { border: options.border ?? defaultBorder, ansi: options.ansi === true, invert: options.invert === true }\n if (!Number.isInteger(result.border) || result.border < minimumBorder) {\n throw new RangeError(`Terminal border/quiet zone must be at least ${minimumBorder} modules`)\n }\n return result\n}\n\nexport function matrixToTerminal(matrix: boolean[][], options: NormalizedTerminalRenderOptions): string {\n const size = matrix.length\n const darkText = options.invert ? \" \" : \"██\"\n const lightText = options.invert ? \"██\" : \" \"\n const darkAnsi = options.invert ? \"\\x1b[47m \" : \"\\x1b[40m \"\n const lightAnsi = options.invert ? \"\\x1b[40m \" : \"\\x1b[47m \"\n const lines: string[] = []\n for (let y = -options.border; y < size + options.border; y++) {\n let line = \"\"\n for (let x = -options.border; x < size + options.border; x++) {\n const dark = x >= 0 && y >= 0 && x < size && y < size && matrix[y][x]\n line += options.ansi ? (dark ? darkAnsi : lightAnsi) : dark ? darkText : lightText\n }\n lines.push(options.ansi ? `${line}\\x1b[0m` : line)\n }\n return lines.join(\"\\n\")\n}\n\nfunction escapeXml(value: string): string {\n return value.replace(\n /[&<>'\"]/g,\n (ch) => ({ \"&\": \"&\", \"<\": \"<\", \">\": \">\", \"'\": \"'\", '\"': \""\" })[ch]!,\n )\n}\n",
|
|
8
8
|
"/*\n * ISO/IEC 18004:2024-oriented QR Code encoder in TypeScript.\n *\n * Scope implemented by this package:\n * - QR Code Model 2, versions 1..40, ECC levels L/M/Q/H\n * - Numeric, Alphanumeric, Byte, Kanji, ECI, Structured Append, and FNC1 signalling\n * - GS1/FNC1 helpers for separator handling\n * - Reed-Solomon error correction over GF(256)\n * - Data/ECC block interleaving for QR Code Model 2\n * - Function patterns, alignment/timing patterns, format and version information\n * - QR masks 0..7 with automatic mask selection\n * - DP-based mixed-mode optimization for QR text inputs\n * - SVG rendering with ISO quiet-zone minimum: 4 modules for QR\n *\n * Notes:\n * - Model 1 QR Code is a legacy format and is not generated here.\n * - rMQR is outside ISO/IEC 18004:2024 and is not generated here.\n * - Arbitrary non-character-set ECIs are signalled correctly, but payload conversion\n * for application-defined ECI transformations must be done by the caller.\n */\n\nimport {\n EciAssignment,\n asciiBytes,\n encodeTextBytes,\n encodingForKnownEci,\n isKanjiModeShiftJisValue,\n shiftJisCodeForCharacter,\n validateBytes,\n type ByteEncoding,\n} from \"./qrcode.encoding.js\"\nimport { matrixToSvg, matrixToTerminal, normalizeTerminalOptions, type TerminalRenderOptions } from \"./qrcode.render.js\"\n\nexport { EciAssignment, encodeTextBytes, type ByteEncoding } from \"./qrcode.encoding.js\"\nexport type { TerminalRenderOptions } from \"./qrcode.render.js\"\n\nexport enum ErrorCorrectionLevel {\n /** Recovers about 7% data damage. QR format bits: 01. */\n L = \"L\",\n /** Recovers about 15% data damage. QR format bits: 00. */\n M = \"M\",\n /** Recovers about 25% data damage. QR format bits: 11. */\n Q = \"Q\",\n /** Recovers about 30% data damage. QR format bits: 10. */\n H = \"H\",\n}\n\nexport interface StructuredAppendInfo {\n /** 1-based position of this symbol in the structured append sequence. */\n position: number\n /** Total number of symbols in the structured append sequence, 2..16. */\n total: number\n /** 8-bit parity value, normally computed with QRCode.computeStructuredAppendParity(). */\n parity: number\n}\n\nexport interface Fnc1SecondPositionInfo {\n /** Two decimal digits, a number 0..99, or one Latin alphabetic character. */\n applicationIndicator: string | number\n}\n\nexport interface EncodeOptions {\n /** Minimum QR Code Model 2 version, inclusive. Default: 1. */\n minVersion?: number\n /** Maximum QR Code Model 2 version, inclusive. Default: 40. */\n maxVersion?: number\n /** Force QR mask pattern 0..7. Default: auto-select by penalty score. */\n mask?: number\n /** Upgrade ECC level if the data still fits in the selected version. Default: true. */\n boostEcl?: boolean\n /** Use DP mixed-mode optimization for text. Default: true. */\n optimize?: boolean\n /** Allow Kanji mode for characters encodable in Shift JIS Kanji ranges. Default: false. */\n kanji?: boolean\n /** Byte-segment character encoding for text fallback. Default: utf-8. */\n byteEncoding?: ByteEncoding\n /** Prefix UTF-8 byte-mode text with ECI assignment 26. Default: true when byteEncoding is utf-8. */\n eciForUtf8?: boolean\n /** Override the ECI assignment emitted before byte segments; set null to suppress ECI. */\n eciAssignment?: number | null\n /** Insert FNC1 in first position immediately after any structured append/ECI header. */\n fnc1First?: boolean\n /** Insert FNC1 in second position immediately after any structured append/ECI header. */\n fnc1Second?: Fnc1SecondPositionInfo\n /** Insert a structured append header at the start of the symbol. */\n structuredAppend?: StructuredAppendInfo\n}\n\nexport interface Gs1Element {\n /** Application identifier, e.g. \"01\", \"17\", \"10\". Parentheses are not encoded. */\n ai: string\n /** Element-string data. */\n data: string\n /** Add a FNC1 field separator after this element. Do not set on the last element. */\n separatorAfter?: boolean\n}\n\ninterface Block {\n data: number[]\n ecc: number[]\n}\n\ninterface QrMetadata {\n containsEci: boolean\n fnc1: \"none\" | \"first\" | \"second\"\n}\n\nclass BitBuffer {\n private readonly bits: number[] = []\n\n get length(): number {\n return this.bits.length\n }\n\n appendBits(value: number, bitCount: number): void {\n if (!Number.isInteger(value) || !Number.isInteger(bitCount) || bitCount < 0 || bitCount > 31) {\n throw new RangeError(\"Invalid bit append request\")\n }\n if (bitCount < 31 && value >>> bitCount !== 0) {\n throw new RangeError(`Value ${value} does not fit in ${bitCount} bits`)\n }\n for (let i = bitCount - 1; i >= 0; i--) {\n this.bits.push((value >>> i) & 1)\n }\n }\n\n appendData(other: BitBuffer): void {\n for (let i = 0; i < other.length; i++) this.bits.push(other.getBit(i))\n }\n\n getBit(index: number): number {\n return this.bits[index] ?? 0\n }\n\n toBytes(): number[] {\n const result: number[] = []\n for (let i = 0; i < this.bits.length; i += 8) {\n let value = 0\n for (let j = 0; j < 8 && i + j < this.bits.length; j++) value = (value << 1) | this.bits[i + j]\n if (this.bits.length - i < 8) value <<= 8 - (this.bits.length - i)\n result.push(value)\n }\n return result\n }\n}\n\nclass Mode {\n static readonly NUMERIC = new Mode(\"NUMERIC\", 0x1, [10, 12, 14], true)\n\n static readonly ALPHANUMERIC = new Mode(\"ALPHANUMERIC\", 0x2, [9, 11, 13], true)\n\n static readonly BYTE = new Mode(\"BYTE\", 0x4, [8, 16, 16], true)\n\n static readonly KANJI = new Mode(\"KANJI\", 0x8, [8, 10, 12], true)\n\n static readonly ECI = new Mode(\"ECI\", 0x7, [0, 0, 0], false)\n static readonly STRUCTURED_APPEND = new Mode(\"STRUCTURED_APPEND\", 0x3, [0, 0, 0], false)\n static readonly FNC1_FIRST = new Mode(\"FNC1_FIRST\", 0x5, [0, 0, 0], false)\n static readonly FNC1_SECOND = new Mode(\"FNC1_SECOND\", 0x9, [0, 0, 0], false)\n\n private constructor(\n readonly name: string,\n readonly modeBits: number,\n private readonly charCountBitsForVersionRange: readonly [number, number, number],\n readonly hasCharacterCount: boolean,\n ) {}\n\n numCharCountBits(version: number): number {\n if (!this.hasCharacterCount) return 0\n if (version < 1 || version > 40) throw new RangeError(\"Version must be in 1..40\")\n return this.charCountBitsForVersionRange[Math.floor((version + 7) / 17)]\n }\n}\n\nclass ReedSolomon {\n static computeDivisor(degree: number): number[] {\n if (!Number.isInteger(degree) || degree < 1 || degree > 255) throw new RangeError(\"Invalid Reed-Solomon degree\")\n const result = Array<number>(degree).fill(0)\n result[degree - 1] = 1\n let root = 1\n for (let i = 0; i < degree; i++) {\n for (let j = 0; j < degree; j++) {\n result[j] = ReedSolomon.multiply(result[j], root)\n if (j + 1 < degree) result[j] ^= result[j + 1]\n }\n root = ReedSolomon.multiply(root, 0x02)\n }\n return result\n }\n\n static computeRemainder(data: readonly number[], divisor: readonly number[]): number[] {\n const result = Array<number>(divisor.length).fill(0)\n for (const b of data) {\n if (!Number.isInteger(b) || b < 0 || b > 0xff) throw new RangeError(\"Data codeword out of range\")\n const factor = b ^ result.shift()!\n result.push(0)\n for (let i = 0; i < result.length; i++) result[i] ^= ReedSolomon.multiply(divisor[i], factor)\n }\n return result\n }\n\n static multiply(x: number, y: number): number {\n if (x >>> 8 !== 0 || y >>> 8 !== 0) throw new RangeError(\"Reed-Solomon operands must be bytes\")\n let z = 0\n for (let i = 7; i >= 0; i--) {\n z = (z << 1) ^ ((z >>> 7) * 0x11d)\n z ^= ((y >>> i) & 1) * x\n }\n return z & 0xff\n }\n}\n\nexport class QrSegment {\n private static readonly ALPHANUMERIC_CHARSET = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:\"\n\n private constructor(\n readonly mode: Mode,\n readonly numChars: number,\n readonly data: BitBuffer,\n readonly parityBytes: readonly number[] = [],\n ) {}\n\n static makeNumeric(digits: string): QrSegment {\n if (!/^[0-9]*$/.test(digits)) throw new Error(\"Numeric mode accepts digits only\")\n const bb = new BitBuffer()\n for (let i = 0; i < digits.length; ) {\n const n = Math.min(digits.length - i, 3)\n bb.appendBits(Number(digits.substring(i, i + n)), n * 3 + 1)\n i += n\n }\n return new QrSegment(Mode.NUMERIC, digits.length, bb, asciiBytes(digits))\n }\n\n static makeAlphanumeric(text: string): QrSegment {\n if (!QrSegment.isAlphanumeric(text)) throw new Error(\"Alphanumeric mode accepts only: 0-9 A-Z space $%*+-./:\")\n const bb = new BitBuffer()\n let i = 0\n for (; i + 2 <= text.length; i += 2) {\n const value =\n QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45 +\n QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1))\n bb.appendBits(value, 11)\n }\n if (i < text.length) bb.appendBits(QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6)\n return new QrSegment(Mode.ALPHANUMERIC, text.length, bb, asciiBytes(text))\n }\n\n static makeBytes(bytes: Uint8Array | number[]): QrSegment {\n const bb = new BitBuffer()\n const arr = validateBytes(Array.from(bytes))\n for (const b of arr) bb.appendBits(b, 8)\n return new QrSegment(Mode.BYTE, arr.length, bb, arr)\n }\n\n static makeBytesFromText(text: string, encoding: ByteEncoding = \"utf-8\"): QrSegment {\n return QrSegment.makeBytes(encodeTextBytes(text, encoding))\n }\n\n static makeKanji(text: string): QrSegment {\n const bytes: number[] = []\n for (const ch of Array.from(text)) {\n const sjis = shiftJisCodeForCharacter(ch)\n if (!isKanjiModeShiftJisValue(sjis))\n throw new Error(`Character ${JSON.stringify(ch)} is not encodable in QR Kanji mode`)\n bytes.push(sjis >>> 8, sjis & 0xff)\n }\n return QrSegment.makeKanjiFromShiftJis(bytes)\n }\n\n static makeKanjiFromShiftJis(bytes: Uint8Array | number[]): QrSegment {\n const arr = validateBytes(Array.from(bytes))\n if (arr.length % 2 !== 0) throw new Error(\"Kanji mode requires an even number of Shift JIS bytes\")\n const bb = new BitBuffer()\n for (let i = 0; i < arr.length; i += 2) {\n const sjis = (arr[i] << 8) | arr[i + 1]\n let subtracted: number\n if (sjis >= 0x8140 && sjis <= 0x9ffc) subtracted = sjis - 0x8140\n else if (sjis >= 0xe040 && sjis <= 0xebbf) subtracted = sjis - 0xc140\n else throw new Error(`Shift JIS value 0x${sjis.toString(16).toUpperCase()} is outside QR Kanji-mode ranges`)\n const encoded = (subtracted >>> 8) * 0xc0 + (subtracted & 0xff)\n bb.appendBits(encoded, 13)\n }\n return new QrSegment(Mode.KANJI, arr.length / 2, bb, arr)\n }\n\n static makeEci(assignVal: number): QrSegment {\n if (!Number.isInteger(assignVal) || assignVal < 0 || assignVal >= 1_000_000) {\n throw new RangeError(\"ECI assignment value must be in 0..999999\")\n }\n const bb = new BitBuffer()\n if (assignVal < 128) bb.appendBits(assignVal, 8)\n else if (assignVal < 16_384) bb.appendBits(0x8000 | assignVal, 16)\n else bb.appendBits(0xc00000 | assignVal, 24)\n return new QrSegment(Mode.ECI, 0, bb)\n }\n\n static makeStructuredAppendHeader(position: number, total: number, parity: number): QrSegment {\n validateStructuredAppend(position, total, parity)\n const bb = new BitBuffer()\n bb.appendBits(((position - 1) << 4) | (total - 1), 8)\n bb.appendBits(parity, 8)\n return new QrSegment(Mode.STRUCTURED_APPEND, 0, bb)\n }\n\n static makeFnc1FirstPosition(): QrSegment {\n return new QrSegment(Mode.FNC1_FIRST, 0, new BitBuffer())\n }\n\n static makeFnc1SecondPosition(applicationIndicator: string | number): QrSegment {\n const bb = new BitBuffer()\n bb.appendBits(encodeFnc1SecondApplicationIndicator(applicationIndicator), 8)\n return new QrSegment(Mode.FNC1_SECOND, 0, bb)\n }\n\n static isNumeric(text: string): boolean {\n return /^[0-9]*$/.test(text)\n }\n\n static isAlphanumeric(text: string): boolean {\n return /^[0-9A-Z $%*+\\-./:]*$/.test(text)\n }\n\n static isKanji(text: string): boolean {\n if (text.length === 0) return true\n for (const ch of Array.from(text)) {\n let sjis: number\n try {\n sjis = shiftJisCodeForCharacter(ch)\n } catch {\n return false\n }\n if (!isKanjiModeShiftJisValue(sjis)) return false\n }\n return true\n }\n\n static makeSegments(\n text: string,\n options: Pick<EncodeOptions, \"eciForUtf8\" | \"kanji\" | \"byteEncoding\" | \"eciAssignment\"> = {},\n ): QrSegment[] {\n if (text.length === 0) return []\n if (QrSegment.isNumeric(text)) return [QrSegment.makeNumeric(text)]\n if (QrSegment.isAlphanumeric(text)) return [QrSegment.makeAlphanumeric(text)]\n if (options.kanji === true && QrSegment.isKanji(text)) return [QrSegment.makeKanji(text)]\n\n const encoding = options.byteEncoding ?? \"utf-8\"\n const segments = [QrSegment.makeBytesFromText(text, encoding)]\n return QrSegment.addEciIfNeeded(segments, encoding, options)\n }\n\n static makeOptimizedSegments(\n text: string,\n version: number,\n options: Pick<EncodeOptions, \"eciForUtf8\" | \"kanji\" | \"byteEncoding\" | \"eciAssignment\"> = {},\n ): QrSegment[] {\n QRCode.validateVersionPublic(version)\n return QrSegment.makeOptimizedSegmentsInternal(text, version, options)\n }\n\n static makeEciSegmentsFromEscapedText(\n escapedText: string,\n options: { defaultEncoding?: ByteEncoding; defaultEci?: number | null } = {},\n ): QrSegment[] {\n const defaultEncoding = options.defaultEncoding ?? \"iso-8859-1\"\n const result: QrSegment[] = []\n let currentEci = options.defaultEci\n let currentEncoding = defaultEncoding\n let buffer = \"\"\n\n const flush = (): void => {\n if (buffer.length === 0) return\n result.push(QrSegment.makeBytesFromText(buffer, currentEncoding))\n buffer = \"\"\n }\n\n for (let i = 0; i < escapedText.length; ) {\n if (escapedText.charAt(i) !== \"\\\\\") {\n buffer += escapedText.charAt(i++)\n continue\n }\n if (escapedText.charAt(i + 1) === \"\\\\\") {\n buffer += \"\\\\\"\n i += 2\n continue\n }\n const digits = escapedText.substring(i + 1, i + 7)\n if (/^[0-9]{6}$/.test(digits)) {\n flush()\n currentEci = Number(digits)\n result.push(QrSegment.makeEci(currentEci))\n currentEncoding = encodingForKnownEci(currentEci) ?? currentEncoding\n i += 7\n continue\n }\n throw new Error(\"Single backslash in ECI text must be followed by six digits or another backslash\")\n }\n flush()\n return result\n }\n\n getTotalBits(version: number): number {\n if (!this.mode.hasCharacterCount) return 4 + this.data.length\n const ccbits = this.mode.numCharCountBits(version)\n if (this.numChars >= 1 << ccbits) return Infinity\n return 4 + ccbits + this.data.length\n }\n\n private static addEciIfNeeded(\n segments: QrSegment[],\n encoding: ByteEncoding,\n options: Pick<EncodeOptions, \"eciForUtf8\" | \"eciAssignment\">,\n ): QrSegment[] {\n if (!segments.some((seg) => seg.mode === Mode.BYTE)) return segments\n let assignment: number | null\n if (options.eciAssignment !== undefined) assignment = options.eciAssignment\n else if (encoding === \"utf-8\") assignment = options.eciForUtf8 === false ? null : EciAssignment.UTF_8\n else if (encoding === \"shift-jis\") assignment = EciAssignment.SHIFT_JIS\n else assignment = null\n return assignment === null ? segments : [QrSegment.makeEci(assignment), ...segments]\n }\n\n private static makeOptimizedSegmentsInternal(\n text: string,\n version: number,\n options: Pick<EncodeOptions, \"eciForUtf8\" | \"kanji\" | \"byteEncoding\" | \"eciAssignment\">,\n ): QrSegment[] {\n if (text.length === 0) return []\n const chars = Array.from(text)\n const n = chars.length\n const encoding = options.byteEncoding ?? \"utf-8\"\n const allowKanji = options.kanji === true\n const byteParts = chars.map((ch) => Array.from(encodeTextBytes(ch, encoding)))\n\n let eciBits = 0\n let eciAssignment: number | null = null\n if (options.eciAssignment !== undefined) eciAssignment = options.eciAssignment\n else if (encoding === \"utf-8\") eciAssignment = options.eciForUtf8 === false ? null : EciAssignment.UTF_8\n else if (encoding === \"shift-jis\") eciAssignment = EciAssignment.SHIFT_JIS\n else eciAssignment = null\n eciBits = eciAssignment === null ? 0 : QrSegment.makeEci(eciAssignment).getTotalBits(version)\n\n type Used = 0 | 1\n type Prev = { prevIndex: number; prevUsed: Used; mode: Mode }\n const inf = Number.POSITIVE_INFINITY\n const dp: [number[], number[]] = [Array<number>(n + 1).fill(inf), Array<number>(n + 1).fill(inf)]\n const prev: [Array<Prev | null>, Array<Prev | null>] = [\n Array<Prev | null>(n + 1).fill(null),\n Array<Prev | null>(n + 1).fill(null),\n ]\n dp[0][0] = 0\n\n const modeHeaderBits = (mode: Mode, count: number, byteCount: number): number => {\n const ccbits = mode.numCharCountBits(version)\n const nChars = mode === Mode.BYTE ? byteCount : count\n if (nChars >= 1 << ccbits) return inf\n return 4 + ccbits\n }\n\n const dataBitsFor = (mode: Mode, count: number, byteCount: number): number => {\n if (mode === Mode.NUMERIC) return Math.floor(count / 3) * 10 + (count % 3 === 1 ? 4 : count % 3 === 2 ? 7 : 0)\n if (mode === Mode.ALPHANUMERIC) return Math.floor(count / 2) * 11 + (count % 2) * 6\n if (mode === Mode.KANJI) return count * 13\n return byteCount * 8\n }\n\n const update = (from: number, fromUsed: Used, to: number, toUsed: Used, mode: Mode, cost: number): void => {\n const total = dp[fromUsed][from] + cost\n if (total < dp[toUsed][to]) {\n dp[toUsed][to] = total\n prev[toUsed][to] = { prevIndex: from, prevUsed: fromUsed, mode }\n }\n }\n\n for (let i = 0; i < n; i++) {\n for (const used of [0, 1] as const) {\n if (!Number.isFinite(dp[used][i])) continue\n\n let count = 0\n for (let j = i; j < n && /^[0-9]$/.test(chars[j]); j++) {\n count++\n const header = modeHeaderBits(Mode.NUMERIC, count, 0)\n if (Number.isFinite(header))\n update(i, used, j + 1, used, Mode.NUMERIC, header + dataBitsFor(Mode.NUMERIC, count, 0))\n }\n\n count = 0\n for (let j = i; j < n && QrSegment.isAlphanumeric(chars[j]); j++) {\n count++\n const header = modeHeaderBits(Mode.ALPHANUMERIC, count, 0)\n if (Number.isFinite(header))\n update(i, used, j + 1, used, Mode.ALPHANUMERIC, header + dataBitsFor(Mode.ALPHANUMERIC, count, 0))\n }\n\n if (allowKanji) {\n count = 0\n for (let j = i; j < n && QrSegment.isKanji(chars[j]); j++) {\n count++\n const header = modeHeaderBits(Mode.KANJI, count, 0)\n if (Number.isFinite(header))\n update(i, used, j + 1, used, Mode.KANJI, header + dataBitsFor(Mode.KANJI, count, 0))\n }\n }\n\n let byteCount = 0\n for (let j = i; j < n; j++) {\n byteCount += byteParts[j].length\n const header = modeHeaderBits(Mode.BYTE, j - i + 1, byteCount)\n if (!Number.isFinite(header)) break\n const eciOverhead = used === 0 && eciAssignment !== null ? eciBits : 0\n update(i, used, j + 1, 1, Mode.BYTE, eciOverhead + header + dataBitsFor(Mode.BYTE, 0, byteCount))\n }\n }\n }\n\n const finalUsed: Used = dp[0][n] <= dp[1][n] ? 0 : 1\n if (!Number.isFinite(dp[finalUsed][n]))\n throw new Error(\"Text cannot be represented in the requested symbol version/modes\")\n\n const runs: { start: number; end: number; mode: Mode }[] = []\n for (let index = n, used: Used = finalUsed; index > 0; ) {\n const p = prev[used][index]\n if (p === null) throw new Error(\"Internal error reconstructing optimized segments\")\n runs.push({ start: p.prevIndex, end: index, mode: p.mode })\n index = p.prevIndex\n used = p.prevUsed\n }\n runs.reverse()\n\n const segments: QrSegment[] = []\n if (finalUsed === 1 && eciAssignment !== null) segments.push(QrSegment.makeEci(eciAssignment))\n for (const run of runs) {\n const part = chars.slice(run.start, run.end).join(\"\")\n if (run.mode === Mode.NUMERIC) segments.push(QrSegment.makeNumeric(part))\n else if (run.mode === Mode.ALPHANUMERIC) segments.push(QrSegment.makeAlphanumeric(part))\n else if (run.mode === Mode.KANJI) segments.push(QrSegment.makeKanji(part))\n else segments.push(QrSegment.makeBytesFromText(part, encoding))\n }\n return segments\n }\n}\n\nexport class QRCode {\n private static readonly MIN_VERSION = 1\n private static readonly MAX_VERSION = 40\n\n // Indexed as [ECL index][version]. Leading -1 is a placeholder for index 0.\n private static readonly ECC_CODEWORDS_PER_BLOCK: readonly number[][] = [\n [\n -1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30,\n 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\n ],\n [\n -1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28,\n 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,\n ],\n [\n -1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30,\n 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\n ],\n [\n -1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30,\n 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,\n ],\n ]\n\n private static readonly NUM_ERROR_CORRECTION_BLOCKS: readonly number[][] = [\n [\n -1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18,\n 19, 19, 20, 21, 22, 24, 25,\n ],\n [\n -1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31,\n 33, 35, 37, 38, 40, 43, 45, 47, 49,\n ],\n [\n -1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40,\n 43, 45, 48, 51, 53, 56, 59, 62, 65, 68,\n ],\n [\n -1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48,\n 51, 54, 57, 60, 63, 66, 70, 74, 77, 81,\n ],\n ]\n\n private static readonly FORMAT_BITS_BY_ECL: Record<ErrorCorrectionLevel, number> = {\n [ErrorCorrectionLevel.M]: 0b00,\n [ErrorCorrectionLevel.L]: 0b01,\n [ErrorCorrectionLevel.H]: 0b10,\n [ErrorCorrectionLevel.Q]: 0b11,\n }\n\n private static readonly ECL_ORDER: readonly ErrorCorrectionLevel[] = [\n ErrorCorrectionLevel.L,\n ErrorCorrectionLevel.M,\n ErrorCorrectionLevel.Q,\n ErrorCorrectionLevel.H,\n ]\n\n readonly size: number\n readonly symbologyIdentifier: string\n readonly containsEci: boolean\n readonly fnc1: \"none\" | \"first\" | \"second\"\n private readonly modules: boolean[][]\n private readonly functionModules: boolean[][]\n\n private constructor(\n readonly version: number,\n readonly errorCorrectionLevel: ErrorCorrectionLevel,\n readonly mask: number,\n dataCodewords: number[],\n metadata: QrMetadata,\n ) {\n QRCode.validateVersion(version)\n QRCode.validateMask(mask)\n this.containsEci = metadata.containsEci\n this.fnc1 = metadata.fnc1\n this.symbologyIdentifier = QRCode.makeSymbologyIdentifier(metadata)\n this.size = version * 4 + 17\n this.modules = Array.from({ length: this.size }, () => Array<boolean>(this.size).fill(false))\n this.functionModules = Array.from({ length: this.size }, () => Array<boolean>(this.size).fill(false))\n\n this.drawFunctionPatterns()\n const allCodewords = this.addEccAndInterleave(dataCodewords)\n this.drawCodewords(allCodewords)\n this.applyMask(mask)\n this.drawFormatBits(mask)\n this.drawVersionBits()\n }\n\n static encodeText(\n text: string,\n ecl: ErrorCorrectionLevel = ErrorCorrectionLevel.M,\n options: EncodeOptions = {},\n ): QRCode {\n const optimize = options.optimize !== false\n if (!optimize) return QRCode.encodeSegments(QrSegment.makeSegments(text, options), ecl, options)\n\n const minVersion = options.minVersion ?? QRCode.MIN_VERSION\n const maxVersion = options.maxVersion ?? QRCode.MAX_VERSION\n QRCode.validateVersion(minVersion)\n QRCode.validateVersion(maxVersion)\n if (minVersion > maxVersion) throw new RangeError(\"minVersion cannot exceed maxVersion\")\n\n const cache = new Map<number, QrSegment[]>()\n for (let version = minVersion; version <= maxVersion; version++) {\n const rangeKey = Math.floor((version + 7) / 17)\n let segments = cache.get(rangeKey)\n if (segments === undefined) {\n segments = QrSegment.makeOptimizedSegments(text, version, options)\n cache.set(rangeKey, segments)\n }\n const fullSegments = QRCode.applyPrefixSegments(segments, options)\n if (QRCode.getTotalBits(fullSegments, version) <= QRCode.getNumDataCodewords(version, ecl) * 8) {\n return QRCode.encodeSegments(segments, ecl, { ...options, minVersion: version, maxVersion: version })\n }\n }\n throw new Error(\"Data too long for requested QR Code version range and error correction level\")\n }\n\n static encodeBytes(\n bytes: Uint8Array | number[],\n ecl: ErrorCorrectionLevel = ErrorCorrectionLevel.M,\n options: EncodeOptions = {},\n ): QRCode {\n return QRCode.encodeSegments([QrSegment.makeBytes(bytes)], ecl, options)\n }\n\n static encodeEciText(\n escapedText: string,\n ecl: ErrorCorrectionLevel = ErrorCorrectionLevel.M,\n options: EncodeOptions = {},\n ): QRCode {\n return QRCode.encodeSegments(QrSegment.makeEciSegmentsFromEscapedText(escapedText), ecl, options)\n }\n\n static encodeGs1Text(\n gs1Data: string | Gs1Element[],\n ecl: ErrorCorrectionLevel = ErrorCorrectionLevel.M,\n options: EncodeOptions = {},\n ): QRCode {\n const payload = typeof gs1Data === \"string\" ? gs1Data : buildGs1Payload(gs1Data)\n const segments =\n options.optimize === false\n ? QrSegment.makeSegments(payload, { ...options, eciAssignment: null, eciForUtf8: false })\n : QrSegment.makeOptimizedSegments(payload, options.minVersion ?? 1, {\n ...options,\n eciAssignment: null,\n eciForUtf8: false,\n })\n return QRCode.encodeSegments(segments, ecl, { ...options, fnc1First: true, eciAssignment: null, eciForUtf8: false })\n }\n\n static encodeStructuredAppend(\n parts: readonly (readonly QrSegment[])[],\n ecl: ErrorCorrectionLevel = ErrorCorrectionLevel.M,\n options: EncodeOptions = {},\n ): QRCode[] {\n if (parts.length < 2 || parts.length > 16) throw new RangeError(\"Structured append requires 2..16 symbols\")\n const parity = QRCode.computeStructuredAppendParity(parts.flat())\n return parts.map((part, index) =>\n QRCode.encodeSegments(Array.from(part), ecl, {\n ...options,\n structuredAppend: { position: index + 1, total: parts.length, parity },\n }),\n )\n }\n\n static computeStructuredAppendParity(segments: readonly QrSegment[]): number {\n let result = 0\n for (const seg of segments) for (const b of seg.parityBytes) result ^= b\n return result\n }\n\n static encodeSegments(\n segments: QrSegment[],\n ecl: ErrorCorrectionLevel = ErrorCorrectionLevel.M,\n options: EncodeOptions = {},\n ): QRCode {\n let minVersion = options.minVersion ?? QRCode.MIN_VERSION\n let maxVersion = options.maxVersion ?? QRCode.MAX_VERSION\n const mask = options.mask ?? -1\n const boostEcl = options.boostEcl !== false\n\n QRCode.validateVersion(minVersion)\n QRCode.validateVersion(maxVersion)\n if (minVersion > maxVersion) throw new RangeError(\"minVersion cannot exceed maxVersion\")\n if (mask !== -1) QRCode.validateMask(mask)\n if (!(ecl in QRCode.FORMAT_BITS_BY_ECL)) throw new Error(\"Invalid error correction level\")\n\n segments = QRCode.applyPrefixSegments(segments, options)\n QRCode.validateQrSegmentOrder(segments)\n const metadata = QRCode.collectMetadata(segments)\n\n let version = minVersion\n let dataUsedBits = 0\n for (; ; version++) {\n const capacityBits = QRCode.getNumDataCodewords(version, ecl) * 8\n dataUsedBits = QRCode.getTotalBits(segments, version)\n if (dataUsedBits <= capacityBits) break\n if (version >= maxVersion)\n throw new Error(\"Data too long for requested QR Code version range and error correction level\")\n }\n\n if (boostEcl) {\n for (const candidate of QRCode.ECL_ORDER) {\n if (\n QRCode.eclIndex(candidate) > QRCode.eclIndex(ecl) &&\n dataUsedBits <= QRCode.getNumDataCodewords(version, candidate) * 8\n ) {\n ecl = candidate\n }\n }\n }\n\n const capacityBits = QRCode.getNumDataCodewords(version, ecl) * 8\n const bb = new BitBuffer()\n for (const seg of segments) {\n bb.appendBits(seg.mode.modeBits, 4)\n if (seg.mode.hasCharacterCount) {\n const ccbits = seg.mode.numCharCountBits(version)\n if (seg.numChars >= 1 << ccbits) throw new Error(\"Segment too long for selected version\")\n bb.appendBits(seg.numChars, ccbits)\n }\n bb.appendData(seg.data)\n }\n\n bb.appendBits(0, Math.min(4, capacityBits - bb.length))\n bb.appendBits(0, (8 - (bb.length % 8)) % 8)\n for (let padByte = 0xec; bb.length < capacityBits; padByte ^= 0xec ^ 0x11) bb.appendBits(padByte, 8)\n if (bb.length !== capacityBits) throw new Error(\"Internal error: data bit length mismatch\")\n\n const dataCodewords = bb.toBytes()\n return mask === -1\n ? QRCode.makeWithBestMask(version, ecl, dataCodewords, metadata)\n : new QRCode(version, ecl, mask, dataCodewords, metadata)\n }\n\n getModule(x: number, y: number): boolean {\n if (!Number.isInteger(x) || !Number.isInteger(y) || x < 0 || y < 0 || x >= this.size || y >= this.size) {\n throw new RangeError(\"Module coordinates out of bounds\")\n }\n return this.modules[y][x]\n }\n\n /** Returns a deep copy of the QR module matrix. True is dark, false is light. */\n toMatrix(): boolean[][] {\n return this.modules.map((row) => row.slice())\n }\n\n /** Render as SVG. The border is the quiet zone in modules; ISO QR Code requires at least 4. */\n toSvgString(options: { border?: number; moduleSize?: number; lightColor?: string; darkColor?: string } = {}): string {\n const border = options.border ?? 4\n return matrixToSvg(\n this.modules,\n border,\n 4,\n options.moduleSize ?? 1,\n options.lightColor ?? \"#FFFFFF\",\n options.darkColor ?? \"#000000\",\n )\n }\n\n /**\n * Render as terminal text. Default quiet zone is 4 modules, matching the QR Code minimum.\n * Use { ansi: true } for scanner-facing terminal output with explicit black/white backgrounds.\n */\n toTerminalString(options: number | TerminalRenderOptions = {}): string {\n const renderOptions = normalizeTerminalOptions(options, 4, 4)\n return matrixToTerminal(this.modules, renderOptions)\n }\n\n static validateVersionPublic(version: number): void {\n QRCode.validateVersion(version)\n }\n\n private static applyPrefixSegments(segments: QrSegment[], options: EncodeOptions): QrSegment[] {\n const result = segments.slice()\n const prefix: QrSegment[] = []\n if (options.structuredAppend !== undefined) {\n if (result.some((seg) => seg.mode === Mode.STRUCTURED_APPEND))\n throw new Error(\"Structured append header supplied both in options and segments\")\n prefix.push(\n QrSegment.makeStructuredAppendHeader(\n options.structuredAppend.position,\n options.structuredAppend.total,\n options.structuredAppend.parity,\n ),\n )\n }\n\n let insertAt = 0\n while (insertAt < result.length && result[insertAt].mode === Mode.ECI) insertAt++\n\n if (options.fnc1First === true && options.fnc1Second !== undefined)\n throw new Error(\"Use either FNC1 first or second position, not both\")\n if (options.fnc1First === true) result.splice(insertAt, 0, QrSegment.makeFnc1FirstPosition())\n if (options.fnc1Second !== undefined)\n result.splice(insertAt, 0, QrSegment.makeFnc1SecondPosition(options.fnc1Second.applicationIndicator))\n return [...prefix, ...result]\n }\n\n private static validateQrSegmentOrder(segments: readonly QrSegment[]): void {\n let index = 0\n if (segments[index]?.mode === Mode.STRUCTURED_APPEND) index++\n while (segments[index]?.mode === Mode.ECI) index++\n if (segments[index]?.mode === Mode.FNC1_FIRST || segments[index]?.mode === Mode.FNC1_SECOND) index++\n\n let seenStructuredAppend = false\n let seenFnc1 = false\n for (let i = 0; i < segments.length; i++) {\n const mode = segments[i].mode\n if (mode === Mode.STRUCTURED_APPEND) {\n if (seenStructuredAppend || i !== 0)\n throw new Error(\"Structured append header must appear only once at the start\")\n seenStructuredAppend = true\n } else if (mode === Mode.FNC1_FIRST || mode === Mode.FNC1_SECOND) {\n if (seenFnc1 || i >= index)\n throw new Error(\n \"FNC1 mode must appear only once before the first data segment, after structured append/ECI headers\",\n )\n seenFnc1 = true\n }\n }\n }\n\n private static collectMetadata(segments: readonly QrSegment[]): QrMetadata {\n let containsEci = false\n let fnc1: \"none\" | \"first\" | \"second\" = \"none\"\n for (const seg of segments) {\n if (seg.mode === Mode.ECI) containsEci = true\n else if (seg.mode === Mode.FNC1_FIRST) fnc1 = \"first\"\n else if (seg.mode === Mode.FNC1_SECOND) fnc1 = \"second\"\n }\n return { containsEci, fnc1 }\n }\n\n private static makeSymbologyIdentifier(metadata: QrMetadata): string {\n if (metadata.fnc1 === \"first\") return metadata.containsEci ? \"]Q4\" : \"]Q3\"\n if (metadata.fnc1 === \"second\") return metadata.containsEci ? \"]Q6\" : \"]Q5\"\n return metadata.containsEci ? \"]Q2\" : \"]Q1\"\n }\n\n private static makeWithBestMask(\n version: number,\n ecl: ErrorCorrectionLevel,\n dataCodewords: number[],\n metadata: QrMetadata,\n ): QRCode {\n let bestQr: QRCode | null = null\n let bestPenalty = Infinity\n for (let mask = 0; mask < 8; mask++) {\n const qr = new QRCode(version, ecl, mask, dataCodewords, metadata)\n const penalty = qr.getPenaltyScore()\n if (penalty < bestPenalty) {\n bestPenalty = penalty\n bestQr = qr\n }\n }\n if (bestQr === null) throw new Error(\"Internal error: no mask selected\")\n return bestQr\n }\n\n private drawFunctionPatterns(): void {\n for (let i = 0; i < this.size; i++) {\n if (!this.functionModules[6][i]) this.setFunctionModule(i, 6, i % 2 === 0)\n if (!this.functionModules[i][6]) this.setFunctionModule(6, i, i % 2 === 0)\n }\n\n this.drawFinderPattern(3, 3)\n this.drawFinderPattern(this.size - 4, 3)\n this.drawFinderPattern(3, this.size - 4)\n\n const align = this.getAlignmentPatternPositions()\n for (const y of align) {\n for (const x of align) {\n if ((x === 6 && y === 6) || (x === 6 && y === this.size - 7) || (x === this.size - 7 && y === 6)) continue\n this.drawAlignmentPattern(x, y)\n }\n }\n\n this.drawFormatBits(0)\n this.drawVersionBits()\n this.setFunctionModule(8, this.size - 8, true)\n }\n\n private drawFinderPattern(cx: number, cy: number): void {\n for (let dy = -4; dy <= 4; dy++) {\n for (let dx = -4; dx <= 4; dx++) {\n const x = cx + dx\n const y = cy + dy\n if (x < 0 || y < 0 || x >= this.size || y >= this.size) continue\n const dist = Math.max(Math.abs(dx), Math.abs(dy))\n this.setFunctionModule(x, y, dist !== 2 && dist !== 4)\n }\n }\n }\n\n private drawAlignmentPattern(cx: number, cy: number): void {\n for (let dy = -2; dy <= 2; dy++) {\n for (let dx = -2; dx <= 2; dx++) {\n const dist = Math.max(Math.abs(dx), Math.abs(dy))\n this.setFunctionModule(cx + dx, cy + dy, dist === 2 || dist === 0)\n }\n }\n }\n\n private drawFormatBits(mask: number): void {\n const data = (QRCode.FORMAT_BITS_BY_ECL[this.errorCorrectionLevel] << 3) | mask\n const bits = formatBits(data, 0x5412)\n\n for (let i = 0; i <= 5; i++) this.setFunctionModule(8, i, getBit(bits, i))\n this.setFunctionModule(8, 7, getBit(bits, 6))\n this.setFunctionModule(8, 8, getBit(bits, 7))\n this.setFunctionModule(7, 8, getBit(bits, 8))\n for (let i = 9; i < 15; i++) this.setFunctionModule(14 - i, 8, getBit(bits, i))\n\n for (let i = 0; i < 8; i++) this.setFunctionModule(this.size - 1 - i, 8, getBit(bits, i))\n for (let i = 8; i < 15; i++) this.setFunctionModule(8, this.size - 15 + i, getBit(bits, i))\n this.setFunctionModule(8, this.size - 8, true)\n }\n\n private drawVersionBits(): void {\n if (this.version < 7) return\n let rem = this.version\n for (let i = 0; i < 12; i++) rem = (rem << 1) ^ (((rem >>> 11) & 1) * 0x1f25)\n const bits = (this.version << 12) | rem\n for (let i = 0; i < 18; i++) {\n const bit = getBit(bits, i)\n const a = this.size - 11 + (i % 3)\n const b = Math.floor(i / 3)\n this.setFunctionModule(a, b, bit)\n this.setFunctionModule(b, a, bit)\n }\n }\n\n private drawCodewords(data: number[]): void {\n let bitIndex = 0\n for (let right = this.size - 1; right >= 1; right -= 2) {\n if (right === 6) right = 5\n for (let vert = 0; vert < this.size; vert++) {\n for (let j = 0; j < 2; j++) {\n const x = right - j\n const upward = ((right + 1) & 2) === 0\n const y = upward ? this.size - 1 - vert : vert\n if (this.functionModules[y][x]) continue\n const dark = bitIndex < data.length * 8 ? getBit(data[Math.floor(bitIndex / 8)], 7 - (bitIndex & 7)) : false\n this.modules[y][x] = dark\n bitIndex++\n }\n }\n }\n if (bitIndex !== QRCode.getNumRawDataModules(this.version))\n throw new Error(\"Internal error: codeword placement mismatch\")\n }\n\n private applyMask(mask: number): void {\n QRCode.validateMask(mask)\n for (let y = 0; y < this.size; y++) {\n for (let x = 0; x < this.size; x++) {\n if (!this.functionModules[y][x] && QRCode.maskCondition(mask, x, y)) this.modules[y][x] = !this.modules[y][x]\n }\n }\n }\n\n private getPenaltyScore(): number {\n const size = this.size\n let result = 0\n\n for (let y = 0; y < size; y++) {\n let runColor = false\n let runLength = 0\n for (let x = 0; x < size; x++) {\n const color = this.modules[y][x]\n if (x === 0 || color !== runColor) {\n runColor = color\n runLength = 1\n } else {\n runLength++\n if (runLength === 5) result += 3\n else if (runLength > 5) result++\n }\n }\n }\n for (let x = 0; x < size; x++) {\n let runColor = false\n let runLength = 0\n for (let y = 0; y < size; y++) {\n const color = this.modules[y][x]\n if (y === 0 || color !== runColor) {\n runColor = color\n runLength = 1\n } else {\n runLength++\n if (runLength === 5) result += 3\n else if (runLength > 5) result++\n }\n }\n }\n\n for (let y = 0; y < size - 1; y++) {\n for (let x = 0; x < size - 1; x++) {\n const color = this.modules[y][x]\n if (\n color === this.modules[y][x + 1] &&\n color === this.modules[y + 1][x] &&\n color === this.modules[y + 1][x + 1]\n )\n result += 3\n }\n }\n\n for (let y = 0; y < size; y++) {\n let bits = 0\n for (let x = 0; x < size; x++) {\n bits = ((bits << 1) & 0x7ff) | (this.modules[y][x] ? 1 : 0)\n if (x >= 10 && (bits === 0x05d || bits === 0x5d0)) result += 40\n }\n }\n for (let x = 0; x < size; x++) {\n let bits = 0\n for (let y = 0; y < size; y++) {\n bits = ((bits << 1) & 0x7ff) | (this.modules[y][x] ? 1 : 0)\n if (y >= 10 && (bits === 0x05d || bits === 0x5d0)) result += 40\n }\n }\n\n let dark = 0\n for (const row of this.modules) for (const module of row) if (module) dark++\n const total = size * size\n const k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1\n result += k * 10\n return result\n }\n\n private addEccAndInterleave(data: number[]): number[] {\n const version = this.version\n const eclIndex = QRCode.eclIndex(this.errorCorrectionLevel)\n const numBlocks = QRCode.NUM_ERROR_CORRECTION_BLOCKS[eclIndex][version]\n const blockEccLen = QRCode.ECC_CODEWORDS_PER_BLOCK[eclIndex][version]\n const rawCodewords = Math.floor(QRCode.getNumRawDataModules(version) / 8)\n const numShortBlocks = numBlocks - (rawCodewords % numBlocks)\n const shortBlockDataLen = Math.floor(rawCodewords / numBlocks) - blockEccLen\n\n if (data.length !== QRCode.getNumDataCodewords(version, this.errorCorrectionLevel)) {\n throw new Error(\"Internal error: unexpected number of data codewords\")\n }\n\n const rsDivisor = ReedSolomon.computeDivisor(blockEccLen)\n const blocks: Block[] = []\n let offset = 0\n for (let i = 0; i < numBlocks; i++) {\n const dataLen = shortBlockDataLen + (i < numShortBlocks ? 0 : 1)\n const dat = data.slice(offset, offset + dataLen)\n offset += dataLen\n blocks.push({ data: dat, ecc: ReedSolomon.computeRemainder(dat, rsDivisor) })\n }\n if (offset !== data.length) throw new Error(\"Internal error: data block split mismatch\")\n\n const result: number[] = []\n const maxDataLen = Math.max(...blocks.map((b) => b.data.length))\n for (let i = 0; i < maxDataLen; i++)\n for (const block of blocks) if (i < block.data.length) result.push(block.data[i])\n for (let i = 0; i < blockEccLen; i++) for (const block of blocks) result.push(block.ecc[i])\n if (result.length !== rawCodewords) throw new Error(\"Internal error: interleaved codeword count mismatch\")\n return result\n }\n\n private getAlignmentPatternPositions(): number[] {\n if (this.version === 1) return []\n const numAlign = Math.floor(this.version / 7) + 2\n const step = this.version === 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2\n const result = [6]\n for (let pos = this.size - 7; result.length < numAlign; pos -= step) result.splice(1, 0, pos)\n return result\n }\n\n private setFunctionModule(x: number, y: number, dark: boolean): void {\n this.modules[y][x] = dark\n this.functionModules[y][x] = true\n }\n\n private static getTotalBits(segments: readonly QrSegment[], version: number): number {\n let result = 0\n for (const seg of segments) {\n const n = seg.getTotalBits(version)\n if (!Number.isFinite(n)) return Infinity\n result += n\n }\n return result\n }\n\n private static getNumDataCodewords(version: number, ecl: ErrorCorrectionLevel): number {\n QRCode.validateVersion(version)\n const eclIndex = QRCode.eclIndex(ecl)\n return (\n Math.floor(QRCode.getNumRawDataModules(version) / 8) -\n QRCode.ECC_CODEWORDS_PER_BLOCK[eclIndex][version] * QRCode.NUM_ERROR_CORRECTION_BLOCKS[eclIndex][version]\n )\n }\n\n private static getNumRawDataModules(version: number): number {\n QRCode.validateVersion(version)\n let result = (16 * version + 128) * version + 64\n if (version >= 2) {\n const numAlign = Math.floor(version / 7) + 2\n result -= (25 * numAlign - 10) * numAlign - 55\n if (version >= 7) result -= 36\n }\n return result\n }\n\n static maskCondition(mask: number, x: number, y: number): boolean {\n switch (mask) {\n case 0:\n return (x + y) % 2 === 0\n case 1:\n return y % 2 === 0\n case 2:\n return x % 3 === 0\n case 3:\n return (x + y) % 3 === 0\n case 4:\n return (Math.floor(y / 2) + Math.floor(x / 3)) % 2 === 0\n case 5:\n return ((x * y) % 2) + ((x * y) % 3) === 0\n case 6:\n return (((x * y) % 2) + ((x * y) % 3)) % 2 === 0\n case 7:\n return (((x + y) % 2) + ((x * y) % 3)) % 2 === 0\n default:\n throw new RangeError(\"Mask must be in 0..7\")\n }\n }\n\n private static eclIndex(ecl: ErrorCorrectionLevel): number {\n switch (ecl) {\n case ErrorCorrectionLevel.L:\n return 0\n case ErrorCorrectionLevel.M:\n return 1\n case ErrorCorrectionLevel.Q:\n return 2\n case ErrorCorrectionLevel.H:\n return 3\n default:\n throw new Error(\"Invalid error correction level\")\n }\n }\n\n private static validateVersion(version: number): void {\n if (!Number.isInteger(version) || version < QRCode.MIN_VERSION || version > QRCode.MAX_VERSION) {\n throw new RangeError(\"Version must be in 1..40\")\n }\n }\n\n private static validateMask(mask: number): void {\n if (!Number.isInteger(mask) || mask < 0 || mask > 7) throw new RangeError(\"Mask must be in 0..7\")\n }\n}\n\nexport function createQrSvg(\n text: string,\n options: EncodeOptions & { ecl?: ErrorCorrectionLevel; border?: number; moduleSize?: number } = {},\n): string {\n const qr = QRCode.encodeText(text, options.ecl ?? ErrorCorrectionLevel.M, options)\n return qr.toSvgString({ border: options.border ?? 4, moduleSize: options.moduleSize ?? 8 })\n}\n\nfunction encodeFnc1SecondApplicationIndicator(applicationIndicator: string | number): number {\n if (typeof applicationIndicator === \"number\") {\n if (!Number.isInteger(applicationIndicator) || applicationIndicator < 0 || applicationIndicator > 99) {\n throw new RangeError(\"FNC1 second-position numeric application indicator must be 0..99\")\n }\n return applicationIndicator\n }\n if (/^[0-9]{2}$/.test(applicationIndicator)) return Number(applicationIndicator)\n if (/^[A-Za-z]$/.test(applicationIndicator)) return applicationIndicator.charCodeAt(0) + 100\n throw new Error(\"FNC1 second-position application indicator must be two digits or one Latin alphabetic character\")\n}\n\nfunction validateStructuredAppend(position: number, total: number, parity: number): void {\n if (!Number.isInteger(total) || total < 2 || total > 16)\n throw new RangeError(\"Structured append total must be in 2..16\")\n if (!Number.isInteger(position) || position < 1 || position > total)\n throw new RangeError(\"Structured append position must be in 1..total\")\n if (!Number.isInteger(parity) || parity < 0 || parity > 0xff)\n throw new RangeError(\"Structured append parity must be an 8-bit value\")\n}\n\nfunction buildGs1Payload(elements: readonly Gs1Element[]): string {\n let result = \"\"\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i]\n if (!/^[0-9A-Za-z]+$/.test(el.ai)) throw new Error(\"GS1 AI should contain only letters/digits without parentheses\")\n const data = el.data.replace(/%/g, \"%%\")\n result += el.ai + data\n if (el.separatorAfter === true && i + 1 < elements.length) result += \"%\"\n }\n return result\n}\n\nfunction getBit(x: number, i: number): boolean {\n return ((x >>> i) & 1) !== 0\n}\n\nfunction formatBits(data: number, xorMask: number): number {\n let rem = data\n for (let i = 0; i < 10; i++) rem = (rem << 1) ^ (((rem >>> 9) & 1) * 0x537)\n return ((data << 10) | rem) ^ xorMask\n}\n",
|
|
9
|
-
"import { MeasureMode } from \"yoga-layout\"\nimport {\n OptimizedBuffer,\n parseColor,\n RGBA,\n Renderable,\n type ColorInput,\n type RenderableOptions,\n type RenderContext,\n} from \"@opentui/core\"\nimport { ErrorCorrectionLevel, QRCode } from \"../lib/qrcode.js\"\n\nconst DEFAULT_FOREGROUND = RGBA.fromHex(\"#000000\")\nconst DEFAULT_BACKGROUND = RGBA.fromHex(\"#ffffff\")\nconst TRANSPARENT = RGBA.fromValues(0, 0, 0, 0)\nconst QR_CODE_MINIMUM_QUIET_ZONE = 4\n\nexport type QRCodeFitMode = \"contain\" | \"none\"\n\ninterface EncodedQRCode<TVersion extends number> {\n readonly version: TVersion\n readonly size: number\n toMatrix(): boolean[][]\n}\n\ninterface QRCodeSharedOptions<TRenderable extends Renderable, TEcl> extends RenderableOptions<TRenderable> {\n content?: string\n errorCorrectionLevel?: TEcl\n quietZone?: number\n scale?: number\n fit?: QRCodeFitMode\n foregroundColor?: ColorInput\n backgroundColor?: ColorInput\n fallbackContent?: string\n fallbackColor?: ColorInput\n}\n\nexport interface QRCodeOptions extends QRCodeSharedOptions<QRCodeRenderable, ErrorCorrectionLevel> {}\n\ninterface QRCodeRenderableDefaults<TEcl> {\n content: string\n errorCorrectionLevel: TEcl\n quietZone: number\n scale: number\n fit: QRCodeFitMode\n foregroundColor: RGBA\n backgroundColor: RGBA\n fallbackContent: string\n fallbackColor: RGBA\n}\n\nabstract class BaseQRCodeRenderable<\n TEcl,\n TVersion extends number,\n TEncoded extends EncodedQRCode<TVersion>,\n> extends Renderable {\n private _content: string\n private _errorCorrectionLevel: TEcl\n private _quietZone: number\n private _scale: number\n private _fit: QRCodeFitMode\n private _foregroundColor: RGBA\n private _backgroundColor: RGBA\n private _fallbackContent: string\n private _fallbackColor: RGBA\n private encoded: TEncoded\n private modules: boolean[][]\n private renderBuffer: OptimizedBuffer | null = null\n private renderBufferDirty = true\n\n protected constructor(\n ctx: RenderContext,\n options: QRCodeSharedOptions<any, TEcl>,\n defaults: QRCodeRenderableDefaults<TEcl>,\n private readonly minimumQuietZone: number,\n private readonly encodeContent: (content: string, errorCorrectionLevel: TEcl) => TEncoded,\n ) {\n const content = options.content ?? defaults.content\n const errorCorrectionLevel = options.errorCorrectionLevel ?? defaults.errorCorrectionLevel\n const quietZone = normalizeQuietZone(options.quietZone ?? defaults.quietZone, minimumQuietZone)\n const scale = normalizeScale(options.scale ?? defaults.scale)\n const fit = options.fit ?? defaults.fit\n const encoded = encodeContent(content, errorCorrectionLevel)\n\n super(ctx, {\n ...options,\n })\n\n this._content = content\n this._errorCorrectionLevel = errorCorrectionLevel\n this._quietZone = quietZone\n this._scale = scale\n this._fit = fit\n this._foregroundColor = options.foregroundColor ? parseColor(options.foregroundColor) : defaults.foregroundColor\n this._backgroundColor = options.backgroundColor ? parseColor(options.backgroundColor) : defaults.backgroundColor\n this._fallbackContent = options.fallbackContent ?? defaults.fallbackContent\n this._fallbackColor = options.fallbackColor ? parseColor(options.fallbackColor) : defaults.fallbackColor\n this.encoded = encoded\n this.modules = encoded.toMatrix()\n\n this.setupMeasureFunc()\n }\n\n public get content(): string {\n return this._content\n }\n\n public set content(value: string) {\n if (value === this._content) {\n return\n }\n\n this._content = value\n this.rebuildMatrix()\n }\n\n public get errorCorrectionLevel(): TEcl {\n return this._errorCorrectionLevel\n }\n\n public set errorCorrectionLevel(value: TEcl) {\n if (value === this._errorCorrectionLevel) {\n return\n }\n\n this._errorCorrectionLevel = value\n this.rebuildMatrix()\n }\n\n public get quietZone(): number {\n return this._quietZone\n }\n\n public set quietZone(value: number) {\n const nextQuietZone = normalizeQuietZone(value, this.minimumQuietZone)\n if (nextQuietZone === this._quietZone) {\n return\n }\n\n this._quietZone = nextQuietZone\n this.remeasure()\n }\n\n public get scale(): number {\n return this._scale\n }\n\n public set scale(value: number) {\n const nextScale = normalizeScale(value)\n if (nextScale === this._scale) {\n return\n }\n\n this._scale = nextScale\n this.remeasure()\n }\n\n public get fit(): QRCodeFitMode {\n return this._fit\n }\n\n public set fit(value: QRCodeFitMode) {\n if (value === this._fit) {\n return\n }\n\n this._fit = value\n this.remeasure()\n }\n\n public get foregroundColor(): RGBA {\n return this._foregroundColor\n }\n\n public set foregroundColor(value: ColorInput) {\n this._foregroundColor = parseColor(value)\n this.invalidateRenderBuffer()\n this.requestRender()\n }\n\n public get backgroundColor(): RGBA {\n return this._backgroundColor\n }\n\n public set backgroundColor(value: ColorInput) {\n this._backgroundColor = parseColor(value)\n this.invalidateRenderBuffer()\n this.requestRender()\n }\n\n public get fallbackContent(): string {\n return this._fallbackContent\n }\n\n public set fallbackContent(value: string) {\n if (value === this._fallbackContent) {\n return\n }\n\n this._fallbackContent = value\n this.remeasure()\n }\n\n public get fallbackColor(): RGBA {\n return this._fallbackColor\n }\n\n public set fallbackColor(value: ColorInput) {\n this._fallbackColor = parseColor(value)\n this.invalidateRenderBuffer()\n this.requestRender()\n }\n\n public get version(): TVersion {\n return this.encoded.version\n }\n\n public get moduleCount(): number {\n return this.encoded.size\n }\n\n protected override renderSelf(buffer: OptimizedBuffer): void {\n if (this.width <= 0 || this.height <= 0) {\n return\n }\n\n const renderBuffer = this.getRenderBuffer()\n if (this.renderBufferDirty) {\n this.paintRenderBuffer(renderBuffer)\n this.renderBufferDirty = false\n }\n\n if (this.buffered) {\n buffer.clear(TRANSPARENT)\n buffer.drawFrameBuffer(0, 0, renderBuffer)\n return\n }\n\n buffer.drawFrameBuffer(this._screenX, this._screenY, renderBuffer)\n }\n\n protected override onResize(width: number, height: number): void {\n this.invalidateRenderBuffer()\n super.onResize(width, height)\n }\n\n protected override destroySelf(): void {\n this.renderBuffer?.destroy()\n this.renderBuffer = null\n super.destroySelf()\n }\n\n private paintRenderBuffer(buffer: OptimizedBuffer): void {\n buffer.clear(TRANSPARENT)\n\n const totalModules = this.encoded.size + this._quietZone * 2\n const effectiveScale = this.resolveRenderScale(this.width, this.height)\n\n if (effectiveScale <= 0) {\n this.paintFallback(buffer)\n return\n }\n\n const renderWidth = totalModules * effectiveScale\n const renderHeightPixels = totalModules * effectiveScale\n const xOffset = Math.max(0, Math.floor((this.width - renderWidth) / 2))\n const yOffsetPixels = Math.max(0, Math.floor((this.height * 2 - renderHeightPixels) / 2))\n\n for (let cellY = 0; cellY < this.height; cellY++) {\n const topPixel = cellY * 2 - yOffsetPixels\n const bottomPixel = topPixel + 1\n const intersectsRenderY = bottomPixel >= 0 && topPixel < renderHeightPixels\n\n if (intersectsRenderY) {\n buffer.fillRect(xOffset, cellY, renderWidth, 1, this._backgroundColor)\n }\n\n for (let cellX = 0; cellX < renderWidth; cellX++) {\n const top = this.isDarkAtScaledPixel(cellX, topPixel, effectiveScale)\n const bottom = this.isDarkAtScaledPixel(cellX, bottomPixel, effectiveScale)\n\n if (!top && !bottom) {\n continue\n }\n\n buffer.setCell(\n xOffset + cellX,\n cellY,\n getBlockCharacter(top, bottom),\n this._foregroundColor,\n this._backgroundColor,\n )\n }\n }\n }\n\n private rebuildMatrix(): void {\n this.encoded = this.encodeContent(this._content, this._errorCorrectionLevel)\n this.modules = this.encoded.toMatrix()\n this.remeasure()\n }\n\n private remeasure(): void {\n this.invalidateRenderBuffer()\n this.yogaNode.markDirty()\n this.requestRender()\n }\n\n private invalidateRenderBuffer(): void {\n this.renderBufferDirty = true\n }\n\n private getRenderBuffer(): OptimizedBuffer {\n if (this.renderBuffer) {\n if (this.renderBuffer.width !== this.width || this.renderBuffer.height !== this.height) {\n this.renderBuffer.resize(this.width, this.height)\n this.invalidateRenderBuffer()\n }\n\n return this.renderBuffer\n }\n\n this.renderBuffer = OptimizedBuffer.create(this.width, this.height, this._ctx.widthMethod, {\n respectAlpha: true,\n id: `qrcode-renderable-${this.id}`,\n })\n this.invalidateRenderBuffer()\n return this.renderBuffer\n }\n\n private setupMeasureFunc(): void {\n this.yogaNode.setMeasureFunc((width, widthMode, height, heightMode) => {\n const scale = this.resolveMeasuredScale(width, widthMode, height, heightMode)\n if (scale > 0) {\n return getDimensionsForScale(this.encoded.size, this._quietZone, scale)\n }\n\n if (this._fallbackContent.length > 0) {\n return {\n width: getFallbackWidth(this._fallbackContent, width, widthMode),\n height: 1,\n }\n }\n\n return {\n width: 0,\n height: 0,\n }\n })\n }\n\n private resolveMeasuredScale(width: number, widthMode: MeasureMode, height: number, heightMode: MeasureMode): number {\n const availableWidth = widthMode === MeasureMode.Undefined || Number.isNaN(width) ? undefined : Math.floor(width)\n const availableHeight =\n heightMode === MeasureMode.Undefined || Number.isNaN(height) ? undefined : Math.floor(height)\n return this.resolveScaleForBounds(availableWidth, availableHeight)\n }\n\n private resolveRenderScale(width: number, height: number): number {\n return this.resolveScaleForBounds(width, height)\n }\n\n private resolveScaleForBounds(availableWidth?: number, availableHeight?: number): number {\n if (this._fit === \"none\") {\n return this._scale\n }\n\n const totalModules = this.encoded.size + this._quietZone * 2\n let scale = this._scale\n\n if (availableWidth !== undefined) {\n scale = Math.min(scale, Math.floor(availableWidth / totalModules))\n }\n\n if (availableHeight !== undefined) {\n scale = Math.min(scale, Math.floor((availableHeight * 2) / totalModules))\n }\n\n return Math.max(0, scale)\n }\n\n private isDarkAtScaledPixel(renderPixelX: number, renderPixelY: number, scale: number): boolean {\n if (renderPixelX < 0 || renderPixelY < 0) {\n return false\n }\n\n const moduleX = Math.floor(renderPixelX / scale) - this._quietZone\n const moduleY = Math.floor(renderPixelY / scale) - this._quietZone\n\n if (moduleX < 0 || moduleY < 0 || moduleX >= this.encoded.size || moduleY >= this.encoded.size) {\n return false\n }\n\n return this.modules[moduleY]![moduleX]!\n }\n\n private paintFallback(buffer: OptimizedBuffer): void {\n if (this._fallbackContent.length === 0 || this.width <= 0 || this.height <= 0) {\n return\n }\n\n const content = this._fallbackContent.slice(0, this.width)\n const xOffset = Math.max(0, Math.floor((this.width - content.length) / 2))\n const yOffset = Math.max(0, Math.floor(this.height / 2))\n\n for (let i = 0; i < content.length; i++) {\n buffer.setCell(xOffset + i, yOffset, content[i]!, this._fallbackColor, TRANSPARENT)\n }\n }\n}\n\nexport class QRCodeRenderable extends BaseQRCodeRenderable<ErrorCorrectionLevel, number, QRCode> {\n protected static readonly _defaultOptions = {\n content: \"\",\n errorCorrectionLevel: ErrorCorrectionLevel.M,\n quietZone: QR_CODE_MINIMUM_QUIET_ZONE,\n scale: 1,\n fit: \"contain\" as QRCodeFitMode,\n foregroundColor: DEFAULT_FOREGROUND,\n backgroundColor: DEFAULT_BACKGROUND,\n fallbackContent: \"\",\n fallbackColor: DEFAULT_BACKGROUND,\n } satisfies QRCodeRenderableDefaults<ErrorCorrectionLevel>\n\n constructor(ctx: RenderContext, options: QRCodeOptions = {}) {\n super(ctx, options, QRCodeRenderable._defaultOptions, QR_CODE_MINIMUM_QUIET_ZONE, (content, errorCorrectionLevel) =>\n QRCode.encodeText(content, errorCorrectionLevel),\n )\n }\n}\n\nfunction getDimensionsForScale(\n moduleCount: number,\n quietZone: number,\n scale: number,\n): { width: number; height: number } {\n const totalModules = (moduleCount + quietZone * 2) * scale\n\n return {\n width: totalModules,\n height: Math.max(1, Math.ceil(totalModules / 2)),\n }\n}\n\nfunction getBlockCharacter(top: boolean, bottom: boolean): string {\n if (top && bottom) {\n return \"█\"\n }\n\n if (top) {\n return \"▀\"\n }\n\n return \"▄\"\n}\n\nfunction getFallbackWidth(content: string, width: number, widthMode: MeasureMode): number {\n if (widthMode === MeasureMode.Undefined || Number.isNaN(width)) {\n return content.length\n }\n\n return Math.max(0, Math.min(content.length, Math.floor(width)))\n}\n\nfunction normalizeQuietZone(value: number, minimumQuietZone: number): number {\n if (!Number.isFinite(value)) {\n return minimumQuietZone\n }\n\n const quietZone = Math.floor(value)\n if (quietZone < minimumQuietZone) {\n throw new RangeError(`Quiet zone must be at least ${minimumQuietZone} modules`)\n }\n return quietZone\n}\n\nfunction normalizeScale(value: number): number {\n if (!Number.isFinite(value)) {\n return 1\n }\n\n return Math.max(1, Math.floor(value))\n}\n"
|
|
9
|
+
"import { MeasureMode } from \"@opentui/core/yoga\"\nimport {\n OptimizedBuffer,\n parseColor,\n RGBA,\n Renderable,\n type ColorInput,\n type RenderableOptions,\n type RenderContext,\n} from \"@opentui/core\"\nimport { ErrorCorrectionLevel, QRCode } from \"../lib/qrcode.js\"\n\nconst DEFAULT_FOREGROUND = RGBA.fromHex(\"#000000\")\nconst DEFAULT_BACKGROUND = RGBA.fromHex(\"#ffffff\")\nconst TRANSPARENT = RGBA.fromValues(0, 0, 0, 0)\nconst QR_CODE_MINIMUM_QUIET_ZONE = 4\n\nexport type QRCodeFitMode = \"contain\" | \"none\"\n\ninterface EncodedQRCode<TVersion extends number> {\n readonly version: TVersion\n readonly size: number\n toMatrix(): boolean[][]\n}\n\ninterface QRCodeSharedOptions<TRenderable extends Renderable, TEcl> extends RenderableOptions<TRenderable> {\n content?: string\n errorCorrectionLevel?: TEcl\n quietZone?: number\n scale?: number\n fit?: QRCodeFitMode\n foregroundColor?: ColorInput\n backgroundColor?: ColorInput\n fallbackContent?: string\n fallbackColor?: ColorInput\n}\n\nexport interface QRCodeOptions extends QRCodeSharedOptions<QRCodeRenderable, ErrorCorrectionLevel> {}\n\ninterface QRCodeRenderableDefaults<TEcl> {\n content: string\n errorCorrectionLevel: TEcl\n quietZone: number\n scale: number\n fit: QRCodeFitMode\n foregroundColor: RGBA\n backgroundColor: RGBA\n fallbackContent: string\n fallbackColor: RGBA\n}\n\nabstract class BaseQRCodeRenderable<\n TEcl,\n TVersion extends number,\n TEncoded extends EncodedQRCode<TVersion>,\n> extends Renderable {\n private _content: string\n private _errorCorrectionLevel: TEcl\n private _quietZone: number\n private _scale: number\n private _fit: QRCodeFitMode\n private _foregroundColor: RGBA\n private _backgroundColor: RGBA\n private _fallbackContent: string\n private _fallbackColor: RGBA\n private encoded: TEncoded\n private modules: boolean[][]\n private renderBuffer: OptimizedBuffer | null = null\n private renderBufferDirty = true\n\n protected constructor(\n ctx: RenderContext,\n options: QRCodeSharedOptions<any, TEcl>,\n defaults: QRCodeRenderableDefaults<TEcl>,\n private readonly minimumQuietZone: number,\n private readonly encodeContent: (content: string, errorCorrectionLevel: TEcl) => TEncoded,\n ) {\n const content = options.content ?? defaults.content\n const errorCorrectionLevel = options.errorCorrectionLevel ?? defaults.errorCorrectionLevel\n const quietZone = normalizeQuietZone(options.quietZone ?? defaults.quietZone, minimumQuietZone)\n const scale = normalizeScale(options.scale ?? defaults.scale)\n const fit = options.fit ?? defaults.fit\n const encoded = encodeContent(content, errorCorrectionLevel)\n\n super(ctx, {\n ...options,\n })\n\n this._content = content\n this._errorCorrectionLevel = errorCorrectionLevel\n this._quietZone = quietZone\n this._scale = scale\n this._fit = fit\n this._foregroundColor = options.foregroundColor ? parseColor(options.foregroundColor) : defaults.foregroundColor\n this._backgroundColor = options.backgroundColor ? parseColor(options.backgroundColor) : defaults.backgroundColor\n this._fallbackContent = options.fallbackContent ?? defaults.fallbackContent\n this._fallbackColor = options.fallbackColor ? parseColor(options.fallbackColor) : defaults.fallbackColor\n this.encoded = encoded\n this.modules = encoded.toMatrix()\n\n this.setupMeasureFunc()\n }\n\n public get content(): string {\n return this._content\n }\n\n public set content(value: string) {\n if (value === this._content) {\n return\n }\n\n this._content = value\n this.rebuildMatrix()\n }\n\n public get errorCorrectionLevel(): TEcl {\n return this._errorCorrectionLevel\n }\n\n public set errorCorrectionLevel(value: TEcl) {\n if (value === this._errorCorrectionLevel) {\n return\n }\n\n this._errorCorrectionLevel = value\n this.rebuildMatrix()\n }\n\n public get quietZone(): number {\n return this._quietZone\n }\n\n public set quietZone(value: number) {\n const nextQuietZone = normalizeQuietZone(value, this.minimumQuietZone)\n if (nextQuietZone === this._quietZone) {\n return\n }\n\n this._quietZone = nextQuietZone\n this.remeasure()\n }\n\n public get scale(): number {\n return this._scale\n }\n\n public set scale(value: number) {\n const nextScale = normalizeScale(value)\n if (nextScale === this._scale) {\n return\n }\n\n this._scale = nextScale\n this.remeasure()\n }\n\n public get fit(): QRCodeFitMode {\n return this._fit\n }\n\n public set fit(value: QRCodeFitMode) {\n if (value === this._fit) {\n return\n }\n\n this._fit = value\n this.remeasure()\n }\n\n public get foregroundColor(): RGBA {\n return this._foregroundColor\n }\n\n public set foregroundColor(value: ColorInput) {\n this._foregroundColor = parseColor(value)\n this.invalidateRenderBuffer()\n this.requestRender()\n }\n\n public get backgroundColor(): RGBA {\n return this._backgroundColor\n }\n\n public set backgroundColor(value: ColorInput) {\n this._backgroundColor = parseColor(value)\n this.invalidateRenderBuffer()\n this.requestRender()\n }\n\n public get fallbackContent(): string {\n return this._fallbackContent\n }\n\n public set fallbackContent(value: string) {\n if (value === this._fallbackContent) {\n return\n }\n\n this._fallbackContent = value\n this.remeasure()\n }\n\n public get fallbackColor(): RGBA {\n return this._fallbackColor\n }\n\n public set fallbackColor(value: ColorInput) {\n this._fallbackColor = parseColor(value)\n this.invalidateRenderBuffer()\n this.requestRender()\n }\n\n public get version(): TVersion {\n return this.encoded.version\n }\n\n public get moduleCount(): number {\n return this.encoded.size\n }\n\n protected override renderSelf(buffer: OptimizedBuffer): void {\n if (this.width <= 0 || this.height <= 0) {\n return\n }\n\n const renderBuffer = this.getRenderBuffer()\n if (this.renderBufferDirty) {\n this.paintRenderBuffer(renderBuffer)\n this.renderBufferDirty = false\n }\n\n if (this.buffered) {\n buffer.clear(TRANSPARENT)\n buffer.drawFrameBuffer(0, 0, renderBuffer)\n return\n }\n\n buffer.drawFrameBuffer(this._screenX, this._screenY, renderBuffer)\n }\n\n protected override onResize(width: number, height: number): void {\n this.invalidateRenderBuffer()\n super.onResize(width, height)\n }\n\n protected override destroySelf(): void {\n this.renderBuffer?.destroy()\n this.renderBuffer = null\n super.destroySelf()\n }\n\n private paintRenderBuffer(buffer: OptimizedBuffer): void {\n buffer.clear(TRANSPARENT)\n\n const totalModules = this.encoded.size + this._quietZone * 2\n const effectiveScale = this.resolveRenderScale(this.width, this.height)\n\n if (effectiveScale <= 0) {\n this.paintFallback(buffer)\n return\n }\n\n const renderWidth = totalModules * effectiveScale\n const renderHeightPixels = totalModules * effectiveScale\n const xOffset = Math.max(0, Math.floor((this.width - renderWidth) / 2))\n const yOffsetPixels = Math.max(0, Math.floor((this.height * 2 - renderHeightPixels) / 2))\n\n for (let cellY = 0; cellY < this.height; cellY++) {\n const topPixel = cellY * 2 - yOffsetPixels\n const bottomPixel = topPixel + 1\n const intersectsRenderY = bottomPixel >= 0 && topPixel < renderHeightPixels\n\n if (intersectsRenderY) {\n buffer.fillRect(xOffset, cellY, renderWidth, 1, this._backgroundColor)\n }\n\n for (let cellX = 0; cellX < renderWidth; cellX++) {\n const top = this.isDarkAtScaledPixel(cellX, topPixel, effectiveScale)\n const bottom = this.isDarkAtScaledPixel(cellX, bottomPixel, effectiveScale)\n\n if (!top && !bottom) {\n continue\n }\n\n buffer.setCell(\n xOffset + cellX,\n cellY,\n getBlockCharacter(top, bottom),\n this._foregroundColor,\n this._backgroundColor,\n )\n }\n }\n }\n\n private rebuildMatrix(): void {\n this.encoded = this.encodeContent(this._content, this._errorCorrectionLevel)\n this.modules = this.encoded.toMatrix()\n this.remeasure()\n }\n\n private remeasure(): void {\n this.invalidateRenderBuffer()\n this.yogaNode.markDirty()\n this.requestRender()\n }\n\n private invalidateRenderBuffer(): void {\n this.renderBufferDirty = true\n }\n\n private getRenderBuffer(): OptimizedBuffer {\n if (this.renderBuffer) {\n if (this.renderBuffer.width !== this.width || this.renderBuffer.height !== this.height) {\n this.renderBuffer.resize(this.width, this.height)\n this.invalidateRenderBuffer()\n }\n\n return this.renderBuffer\n }\n\n this.renderBuffer = OptimizedBuffer.create(this.width, this.height, this._ctx.widthMethod, {\n respectAlpha: true,\n id: `qrcode-renderable-${this.id}`,\n })\n this.invalidateRenderBuffer()\n return this.renderBuffer\n }\n\n private setupMeasureFunc(): void {\n this.yogaNode.setMeasureFunc((width, widthMode, height, heightMode) => {\n const scale = this.resolveMeasuredScale(width, widthMode, height, heightMode)\n if (scale > 0) {\n return getDimensionsForScale(this.encoded.size, this._quietZone, scale)\n }\n\n if (this._fallbackContent.length > 0) {\n return {\n width: getFallbackWidth(this._fallbackContent, width, widthMode),\n height: 1,\n }\n }\n\n return {\n width: 0,\n height: 0,\n }\n })\n }\n\n private resolveMeasuredScale(width: number, widthMode: MeasureMode, height: number, heightMode: MeasureMode): number {\n const availableWidth = widthMode === MeasureMode.Undefined || Number.isNaN(width) ? undefined : Math.floor(width)\n const availableHeight =\n heightMode === MeasureMode.Undefined || Number.isNaN(height) ? undefined : Math.floor(height)\n return this.resolveScaleForBounds(availableWidth, availableHeight)\n }\n\n private resolveRenderScale(width: number, height: number): number {\n return this.resolveScaleForBounds(width, height)\n }\n\n private resolveScaleForBounds(availableWidth?: number, availableHeight?: number): number {\n if (this._fit === \"none\") {\n return this._scale\n }\n\n const totalModules = this.encoded.size + this._quietZone * 2\n let scale = this._scale\n\n if (availableWidth !== undefined) {\n scale = Math.min(scale, Math.floor(availableWidth / totalModules))\n }\n\n if (availableHeight !== undefined) {\n scale = Math.min(scale, Math.floor((availableHeight * 2) / totalModules))\n }\n\n return Math.max(0, scale)\n }\n\n private isDarkAtScaledPixel(renderPixelX: number, renderPixelY: number, scale: number): boolean {\n if (renderPixelX < 0 || renderPixelY < 0) {\n return false\n }\n\n const moduleX = Math.floor(renderPixelX / scale) - this._quietZone\n const moduleY = Math.floor(renderPixelY / scale) - this._quietZone\n\n if (moduleX < 0 || moduleY < 0 || moduleX >= this.encoded.size || moduleY >= this.encoded.size) {\n return false\n }\n\n return this.modules[moduleY]![moduleX]!\n }\n\n private paintFallback(buffer: OptimizedBuffer): void {\n if (this._fallbackContent.length === 0 || this.width <= 0 || this.height <= 0) {\n return\n }\n\n const content = this._fallbackContent.slice(0, this.width)\n const xOffset = Math.max(0, Math.floor((this.width - content.length) / 2))\n const yOffset = Math.max(0, Math.floor(this.height / 2))\n\n for (let i = 0; i < content.length; i++) {\n buffer.setCell(xOffset + i, yOffset, content[i]!, this._fallbackColor, TRANSPARENT)\n }\n }\n}\n\nexport class QRCodeRenderable extends BaseQRCodeRenderable<ErrorCorrectionLevel, number, QRCode> {\n protected static readonly _defaultOptions = {\n content: \"\",\n errorCorrectionLevel: ErrorCorrectionLevel.M,\n quietZone: QR_CODE_MINIMUM_QUIET_ZONE,\n scale: 1,\n fit: \"contain\" as QRCodeFitMode,\n foregroundColor: DEFAULT_FOREGROUND,\n backgroundColor: DEFAULT_BACKGROUND,\n fallbackContent: \"\",\n fallbackColor: DEFAULT_BACKGROUND,\n } satisfies QRCodeRenderableDefaults<ErrorCorrectionLevel>\n\n constructor(ctx: RenderContext, options: QRCodeOptions = {}) {\n super(ctx, options, QRCodeRenderable._defaultOptions, QR_CODE_MINIMUM_QUIET_ZONE, (content, errorCorrectionLevel) =>\n QRCode.encodeText(content, errorCorrectionLevel),\n )\n }\n}\n\nfunction getDimensionsForScale(\n moduleCount: number,\n quietZone: number,\n scale: number,\n): { width: number; height: number } {\n const totalModules = (moduleCount + quietZone * 2) * scale\n\n return {\n width: totalModules,\n height: Math.max(1, Math.ceil(totalModules / 2)),\n }\n}\n\nfunction getBlockCharacter(top: boolean, bottom: boolean): string {\n if (top && bottom) {\n return \"█\"\n }\n\n if (top) {\n return \"▀\"\n }\n\n return \"▄\"\n}\n\nfunction getFallbackWidth(content: string, width: number, widthMode: MeasureMode): number {\n if (widthMode === MeasureMode.Undefined || Number.isNaN(width)) {\n return content.length\n }\n\n return Math.max(0, Math.min(content.length, Math.floor(width)))\n}\n\nfunction normalizeQuietZone(value: number, minimumQuietZone: number): number {\n if (!Number.isFinite(value)) {\n return minimumQuietZone\n }\n\n const quietZone = Math.floor(value)\n if (quietZone < minimumQuietZone) {\n throw new RangeError(`Quiet zone must be at least ${minimumQuietZone} modules`)\n }\n return quietZone\n}\n\nfunction normalizeScale(value: number): number {\n if (!Number.isFinite(value)) {\n return 1\n }\n\n return Math.max(1, Math.floor(value))\n}\n"
|
|
10
10
|
],
|
|
11
11
|
"mappings": ";;AACO,IAAM,yBAAiD;AAAA,EAC5D,QAAI;AAAA,EACJ,QAAI;AAAA,EACJ,QAAI;AAAA,EACJ,QAAI;AAAA,EACJ,QAAI;AAAA,EACJ,QAAI;AAAA,EACJ,QAAI;AAAA,EACJ,QAAI;AAAA,EACJ,QAAI;AAAA,EACJ,QAAI;AAAA,EACJ,QAAI;AAAA,EACJ,QAAI;AAAA,EACJ,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,SAAE;AAAA,EACF,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAE;AAAA,EACF,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAI;AAAA,EACJ,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAE;AAAA,EACF,UAAI;AAAA,EACJ,UAAI;AAAA,EACJ,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",
|
|
12
|
-
"debugId": "
|
|
12
|
+
"debugId": "4129A72F05EEBA2564756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
package/index.js
CHANGED
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "0.4.
|
|
7
|
+
"version": "0.4.1",
|
|
8
8
|
"description": "QR code encoder and renderable for OpenTUI",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"repository": {
|
|
@@ -30,8 +30,7 @@
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@opentui/core": "0.4.
|
|
34
|
-
"yoga-layout": "3.2.1"
|
|
33
|
+
"@opentui/core": "0.4.1"
|
|
35
34
|
},
|
|
36
35
|
"devDependencies": {
|
|
37
36
|
"@opentui/react": "workspace:*",
|
|
@@ -41,8 +40,8 @@
|
|
|
41
40
|
"typescript": "^5"
|
|
42
41
|
},
|
|
43
42
|
"peerDependencies": {
|
|
44
|
-
"@opentui/react": "0.4.
|
|
45
|
-
"@opentui/solid": "0.4.
|
|
43
|
+
"@opentui/react": "0.4.1",
|
|
44
|
+
"@opentui/solid": "0.4.1"
|
|
46
45
|
},
|
|
47
46
|
"peerDependenciesMeta": {
|
|
48
47
|
"@opentui/react": {
|
package/react.js
CHANGED