{"version":3,"file":"encoder-C22Zwwhx.mjs","names":[],"sources":["../src/encoder/bch.ts","../src/encoder/constants.ts","../src/encoder/galois-field.ts","../src/encoder/reed-solomon.ts","../src/encoder/data-encoder.ts","../src/encoder/mask.ts","../src/encoder/patterns.ts","../src/encoder/utf8.ts","../src/encoder/matrix.ts"],"sourcesContent":["/**\n * BCH 编码：格式信息与版本信息\n */\n\nimport type { ErrorCorrectionLevel } from './types'\n\n/** 各 ECC 等级对应的 2-bit 指示符 (ISO 18004 Table 10) */\nconst EC_INDICATOR: Record<ErrorCorrectionLevel, number> = {\n  M: 0b00,\n  L: 0b01,\n  H: 0b10,\n  Q: 0b11\n}\n\n/** BCH(15,5) 格式信息编码，默认 ECC-M */\nexport function computeFormatBits(mask: number, ec: ErrorCorrectionLevel = 'M'): number {\n  const data = (EC_INDICATOR[ec] << 3) | mask\n  let remainder = data << 10\n  for (let i = 4; i >= 0; i--) {\n    if ((remainder >> (i + 10)) & 1) {\n      remainder ^= 0x537 << i\n    }\n  }\n  return ((data << 10) | remainder) ^ 0x5412\n}\n\n/** BCH(18,6) 版本信息编码 */\nexport function computeVersionBits(version: number): number {\n  let remainder = version << 12\n  for (let i = 5; i >= 0; i--) {\n    if ((remainder >> (i + 12)) & 1) {\n      remainder ^= 0x1f25 << i\n    }\n  }\n  return (version << 12) | remainder\n}\n","import type { ErrorCorrectionLevel, VersionECInfo } from './types'\n\n// 各 ECC 等级各版本块配置 (ISO 18004 Table 9)\n// 键: ErrorCorrectionLevel ('L'|'M'|'Q'|'H')\n// 索引 0 为占位符，有效版本从 1 到 40\nexport const VERSION_EC_TABLES: Record<ErrorCorrectionLevel, VersionECInfo[]> = {\n  // ---- ECC-L (indicator 0b01) ----\n  L: [\n    { totalCodewords: 0, groups: [] }, // V0 placeholder\n    { totalCodewords: 26, groups: [{ count: 1, dataCodewords: 19 }] }, // V1\n    { totalCodewords: 44, groups: [{ count: 1, dataCodewords: 34 }] }, // V2\n    { totalCodewords: 70, groups: [{ count: 1, dataCodewords: 55 }] }, // V3\n    { totalCodewords: 100, groups: [{ count: 1, dataCodewords: 80 }] }, // V4\n    { totalCodewords: 134, groups: [{ count: 1, dataCodewords: 108 }] }, // V5\n    { totalCodewords: 172, groups: [{ count: 2, dataCodewords: 68 }] }, // V6\n    { totalCodewords: 196, groups: [{ count: 2, dataCodewords: 78 }] }, // V7\n    { totalCodewords: 242, groups: [{ count: 2, dataCodewords: 97 }] }, // V8\n    { totalCodewords: 292, groups: [{ count: 2, dataCodewords: 116 }] }, // V9\n    {\n      totalCodewords: 346,\n      groups: [\n        { count: 2, dataCodewords: 68 },\n        { count: 2, dataCodewords: 69 }\n      ]\n    }, // V10\n    { totalCodewords: 404, groups: [{ count: 4, dataCodewords: 81 }] }, // V11\n    {\n      totalCodewords: 466,\n      groups: [\n        { count: 2, dataCodewords: 92 },\n        { count: 2, dataCodewords: 93 }\n      ]\n    }, // V12\n    { totalCodewords: 532, groups: [{ count: 4, dataCodewords: 107 }] }, // V13\n    {\n      totalCodewords: 581,\n      groups: [\n        { count: 3, dataCodewords: 115 },\n        { count: 1, dataCodewords: 116 }\n      ]\n    }, // V14\n    {\n      totalCodewords: 655,\n      groups: [\n        { count: 5, dataCodewords: 87 },\n        { count: 1, dataCodewords: 88 }\n      ]\n    }, // V15\n    {\n      totalCodewords: 733,\n      groups: [\n        { count: 5, dataCodewords: 98 },\n        { count: 1, dataCodewords: 99 }\n      ]\n    }, // V16\n    {\n      totalCodewords: 815,\n      groups: [\n        { count: 1, dataCodewords: 107 },\n        { count: 5, dataCodewords: 108 }\n      ]\n    }, // V17\n    {\n      totalCodewords: 901,\n      groups: [\n        { count: 5, dataCodewords: 120 },\n        { count: 1, dataCodewords: 121 }\n      ]\n    }, // V18\n    {\n      totalCodewords: 991,\n      groups: [\n        { count: 3, dataCodewords: 113 },\n        { count: 4, dataCodewords: 114 }\n      ]\n    }, // V19\n    {\n      totalCodewords: 1085,\n      groups: [\n        { count: 3, dataCodewords: 107 },\n        { count: 5, dataCodewords: 108 }\n      ]\n    }, // V20\n    {\n      totalCodewords: 1156,\n      groups: [\n        { count: 4, dataCodewords: 116 },\n        { count: 4, dataCodewords: 117 }\n      ]\n    }, // V21\n    {\n      totalCodewords: 1258,\n      groups: [\n        { count: 2, dataCodewords: 111 },\n        { count: 7, dataCodewords: 112 }\n      ]\n    }, // V22\n    {\n      totalCodewords: 1364,\n      groups: [\n        { count: 4, dataCodewords: 121 },\n        { count: 5, dataCodewords: 122 }\n      ]\n    }, // V23\n    {\n      totalCodewords: 1474,\n      groups: [\n        { count: 6, dataCodewords: 117 },\n        { count: 4, dataCodewords: 118 }\n      ]\n    }, // V24\n    {\n      totalCodewords: 1588,\n      groups: [\n        { count: 8, dataCodewords: 106 },\n        { count: 4, dataCodewords: 107 }\n      ]\n    }, // V25\n    {\n      totalCodewords: 1706,\n      groups: [\n        { count: 10, dataCodewords: 114 },\n        { count: 2, dataCodewords: 115 }\n      ]\n    }, // V26\n    {\n      totalCodewords: 1828,\n      groups: [\n        { count: 8, dataCodewords: 122 },\n        { count: 4, dataCodewords: 123 }\n      ]\n    }, // V27\n    {\n      totalCodewords: 1921,\n      groups: [\n        { count: 3, dataCodewords: 117 },\n        { count: 10, dataCodewords: 118 }\n      ]\n    }, // V28\n    {\n      totalCodewords: 2051,\n      groups: [\n        { count: 7, dataCodewords: 116 },\n        { count: 7, dataCodewords: 117 }\n      ]\n    }, // V29\n    {\n      totalCodewords: 2185,\n      groups: [\n        { count: 5, dataCodewords: 115 },\n        { count: 10, dataCodewords: 116 }\n      ]\n    }, // V30\n    {\n      totalCodewords: 2323,\n      groups: [\n        { count: 13, dataCodewords: 115 },\n        { count: 3, dataCodewords: 116 }\n      ]\n    }, // V31\n    { totalCodewords: 2465, groups: [{ count: 17, dataCodewords: 115 }] }, // V32\n    {\n      totalCodewords: 2611,\n      groups: [\n        { count: 17, dataCodewords: 115 },\n        { count: 1, dataCodewords: 116 }\n      ]\n    }, // V33\n    {\n      totalCodewords: 2761,\n      groups: [\n        { count: 13, dataCodewords: 115 },\n        { count: 6, dataCodewords: 116 }\n      ]\n    }, // V34\n    {\n      totalCodewords: 2876,\n      groups: [\n        { count: 12, dataCodewords: 121 },\n        { count: 7, dataCodewords: 122 }\n      ]\n    }, // V35\n    {\n      totalCodewords: 3034,\n      groups: [\n        { count: 6, dataCodewords: 121 },\n        { count: 14, dataCodewords: 122 }\n      ]\n    }, // V36\n    {\n      totalCodewords: 3196,\n      groups: [\n        { count: 17, dataCodewords: 122 },\n        { count: 4, dataCodewords: 123 }\n      ]\n    }, // V37\n    {\n      totalCodewords: 3362,\n      groups: [\n        { count: 4, dataCodewords: 122 },\n        { count: 18, dataCodewords: 123 }\n      ]\n    }, // V38\n    {\n      totalCodewords: 3532,\n      groups: [\n        { count: 20, dataCodewords: 117 },\n        { count: 4, dataCodewords: 118 }\n      ]\n    }, // V39\n    {\n      totalCodewords: 3706,\n      groups: [\n        { count: 19, dataCodewords: 118 },\n        { count: 6, dataCodewords: 119 }\n      ]\n    } // V40\n  ],\n\n  // ---- ECC-M (indicator 0b00) ----\n  M: [\n    { totalCodewords: 0, groups: [] }, // V0 placeholder\n    { totalCodewords: 26, groups: [{ count: 1, dataCodewords: 16 }] }, // V1\n    { totalCodewords: 44, groups: [{ count: 1, dataCodewords: 28 }] }, // V2\n    { totalCodewords: 70, groups: [{ count: 1, dataCodewords: 44 }] }, // V3\n    { totalCodewords: 100, groups: [{ count: 2, dataCodewords: 32 }] }, // V4\n    { totalCodewords: 134, groups: [{ count: 2, dataCodewords: 43 }] }, // V5\n    { totalCodewords: 172, groups: [{ count: 4, dataCodewords: 27 }] }, // V6\n    { totalCodewords: 196, groups: [{ count: 4, dataCodewords: 31 }] }, // V7\n    {\n      totalCodewords: 242,\n      groups: [\n        { count: 2, dataCodewords: 38 },\n        { count: 2, dataCodewords: 39 }\n      ]\n    }, // V8\n    {\n      totalCodewords: 292,\n      groups: [\n        { count: 3, dataCodewords: 36 },\n        { count: 2, dataCodewords: 37 }\n      ]\n    }, // V9\n    {\n      totalCodewords: 346,\n      groups: [\n        { count: 4, dataCodewords: 43 },\n        { count: 1, dataCodewords: 44 }\n      ]\n    }, // V10\n    {\n      totalCodewords: 404,\n      groups: [\n        { count: 1, dataCodewords: 50 },\n        { count: 4, dataCodewords: 51 }\n      ]\n    }, // V11\n    {\n      totalCodewords: 466,\n      groups: [\n        { count: 6, dataCodewords: 36 },\n        { count: 2, dataCodewords: 37 }\n      ]\n    }, // V12\n    {\n      totalCodewords: 532,\n      groups: [\n        { count: 8, dataCodewords: 37 },\n        { count: 1, dataCodewords: 38 }\n      ]\n    }, // V13\n    {\n      totalCodewords: 581,\n      groups: [\n        { count: 4, dataCodewords: 40 },\n        { count: 5, dataCodewords: 41 }\n      ]\n    }, // V14\n    {\n      totalCodewords: 655,\n      groups: [\n        { count: 5, dataCodewords: 41 },\n        { count: 5, dataCodewords: 42 }\n      ]\n    }, // V15\n    {\n      totalCodewords: 733,\n      groups: [\n        { count: 7, dataCodewords: 45 },\n        { count: 3, dataCodewords: 46 }\n      ]\n    }, // V16\n    {\n      totalCodewords: 815,\n      groups: [\n        { count: 10, dataCodewords: 46 },\n        { count: 1, dataCodewords: 47 }\n      ]\n    }, // V17\n    {\n      totalCodewords: 901,\n      groups: [\n        { count: 9, dataCodewords: 43 },\n        { count: 4, dataCodewords: 44 }\n      ]\n    }, // V18\n    {\n      totalCodewords: 991,\n      groups: [\n        { count: 3, dataCodewords: 44 },\n        { count: 11, dataCodewords: 45 }\n      ]\n    }, // V19\n    {\n      totalCodewords: 1085,\n      groups: [\n        { count: 3, dataCodewords: 41 },\n        { count: 13, dataCodewords: 42 }\n      ]\n    }, // V20\n    { totalCodewords: 1156, groups: [{ count: 17, dataCodewords: 42 }] }, // V21\n    { totalCodewords: 1258, groups: [{ count: 17, dataCodewords: 46 }] }, // V22 (fixed: was erroneously [{17,46},{1,47}])\n    {\n      totalCodewords: 1364,\n      groups: [\n        { count: 4, dataCodewords: 47 },\n        { count: 14, dataCodewords: 48 }\n      ]\n    }, // V23\n    {\n      totalCodewords: 1474,\n      groups: [\n        { count: 6, dataCodewords: 45 },\n        { count: 14, dataCodewords: 46 }\n      ]\n    }, // V24\n    {\n      totalCodewords: 1588,\n      groups: [\n        { count: 8, dataCodewords: 47 },\n        { count: 13, dataCodewords: 48 }\n      ]\n    }, // V25\n    {\n      totalCodewords: 1706,\n      groups: [\n        { count: 19, dataCodewords: 46 },\n        { count: 4, dataCodewords: 47 }\n      ]\n    }, // V26\n    {\n      totalCodewords: 1828,\n      groups: [\n        { count: 22, dataCodewords: 45 },\n        { count: 3, dataCodewords: 46 }\n      ]\n    }, // V27\n    {\n      totalCodewords: 1921,\n      groups: [\n        { count: 3, dataCodewords: 45 },\n        { count: 23, dataCodewords: 46 }\n      ]\n    }, // V28\n    {\n      totalCodewords: 2051,\n      groups: [\n        { count: 21, dataCodewords: 45 },\n        { count: 7, dataCodewords: 46 }\n      ]\n    }, // V29\n    {\n      totalCodewords: 2185,\n      groups: [\n        { count: 19, dataCodewords: 47 },\n        { count: 10, dataCodewords: 48 }\n      ]\n    }, // V30\n    {\n      totalCodewords: 2323,\n      groups: [\n        { count: 2, dataCodewords: 46 },\n        { count: 29, dataCodewords: 47 }\n      ]\n    }, // V31\n    {\n      totalCodewords: 2465,\n      groups: [\n        { count: 10, dataCodewords: 46 },\n        { count: 23, dataCodewords: 47 }\n      ]\n    }, // V32\n    {\n      totalCodewords: 2611,\n      groups: [\n        { count: 14, dataCodewords: 46 },\n        { count: 21, dataCodewords: 47 }\n      ]\n    }, // V33\n    {\n      totalCodewords: 2761,\n      groups: [\n        { count: 14, dataCodewords: 46 },\n        { count: 23, dataCodewords: 47 }\n      ]\n    }, // V34\n    {\n      totalCodewords: 2876,\n      groups: [\n        { count: 12, dataCodewords: 47 },\n        { count: 26, dataCodewords: 48 }\n      ]\n    }, // V35\n    {\n      totalCodewords: 3034,\n      groups: [\n        { count: 6, dataCodewords: 47 },\n        { count: 34, dataCodewords: 48 }\n      ]\n    }, // V36\n    {\n      totalCodewords: 3196,\n      groups: [\n        { count: 29, dataCodewords: 46 },\n        { count: 14, dataCodewords: 47 }\n      ]\n    }, // V37\n    {\n      totalCodewords: 3362,\n      groups: [\n        { count: 13, dataCodewords: 46 },\n        { count: 32, dataCodewords: 47 }\n      ]\n    }, // V38\n    {\n      totalCodewords: 3532,\n      groups: [\n        { count: 40, dataCodewords: 47 },\n        { count: 7, dataCodewords: 48 }\n      ]\n    }, // V39\n    {\n      totalCodewords: 3706,\n      groups: [\n        { count: 18, dataCodewords: 47 },\n        { count: 31, dataCodewords: 48 }\n      ]\n    } // V40\n  ],\n\n  // ---- ECC-Q (indicator 0b11) ----\n  Q: [\n    { totalCodewords: 0, groups: [] }, // V0 placeholder\n    { totalCodewords: 26, groups: [{ count: 1, dataCodewords: 13 }] }, // V1\n    { totalCodewords: 44, groups: [{ count: 1, dataCodewords: 22 }] }, // V2\n    { totalCodewords: 70, groups: [{ count: 2, dataCodewords: 17 }] }, // V3\n    { totalCodewords: 100, groups: [{ count: 2, dataCodewords: 24 }] }, // V4\n    {\n      totalCodewords: 134,\n      groups: [\n        { count: 2, dataCodewords: 15 },\n        { count: 2, dataCodewords: 16 }\n      ]\n    }, // V5\n    { totalCodewords: 172, groups: [{ count: 4, dataCodewords: 19 }] }, // V6\n    {\n      totalCodewords: 196,\n      groups: [\n        { count: 2, dataCodewords: 14 },\n        { count: 4, dataCodewords: 15 }\n      ]\n    }, // V7\n    {\n      totalCodewords: 242,\n      groups: [\n        { count: 4, dataCodewords: 18 },\n        { count: 2, dataCodewords: 19 }\n      ]\n    }, // V8\n    {\n      totalCodewords: 292,\n      groups: [\n        { count: 4, dataCodewords: 16 },\n        { count: 4, dataCodewords: 17 }\n      ]\n    }, // V9\n    {\n      totalCodewords: 346,\n      groups: [\n        { count: 6, dataCodewords: 19 },\n        { count: 2, dataCodewords: 20 }\n      ]\n    }, // V10\n    {\n      totalCodewords: 404,\n      groups: [\n        { count: 4, dataCodewords: 22 },\n        { count: 4, dataCodewords: 23 }\n      ]\n    }, // V11\n    {\n      totalCodewords: 466,\n      groups: [\n        { count: 4, dataCodewords: 20 },\n        { count: 6, dataCodewords: 21 }\n      ]\n    }, // V12\n    {\n      totalCodewords: 532,\n      groups: [\n        { count: 8, dataCodewords: 20 },\n        { count: 4, dataCodewords: 21 }\n      ]\n    }, // V13\n    {\n      totalCodewords: 581,\n      groups: [\n        { count: 11, dataCodewords: 16 },\n        { count: 5, dataCodewords: 17 }\n      ]\n    }, // V14\n    {\n      totalCodewords: 655,\n      groups: [\n        { count: 5, dataCodewords: 24 },\n        { count: 7, dataCodewords: 25 }\n      ]\n    }, // V15\n    {\n      totalCodewords: 733,\n      groups: [\n        { count: 15, dataCodewords: 19 },\n        { count: 2, dataCodewords: 20 }\n      ]\n    }, // V16\n    {\n      totalCodewords: 815,\n      groups: [\n        { count: 1, dataCodewords: 22 },\n        { count: 15, dataCodewords: 23 }\n      ]\n    }, // V17\n    {\n      totalCodewords: 901,\n      groups: [\n        { count: 17, dataCodewords: 22 },\n        { count: 1, dataCodewords: 23 }\n      ]\n    }, // V18\n    {\n      totalCodewords: 991,\n      groups: [\n        { count: 17, dataCodewords: 21 },\n        { count: 4, dataCodewords: 22 }\n      ]\n    }, // V19\n    {\n      totalCodewords: 1085,\n      groups: [\n        { count: 15, dataCodewords: 24 },\n        { count: 5, dataCodewords: 25 }\n      ]\n    }, // V20\n    {\n      totalCodewords: 1156,\n      groups: [\n        { count: 17, dataCodewords: 22 },\n        { count: 6, dataCodewords: 23 }\n      ]\n    }, // V21\n    {\n      totalCodewords: 1258,\n      groups: [\n        { count: 7, dataCodewords: 24 },\n        { count: 16, dataCodewords: 25 }\n      ]\n    }, // V22\n    {\n      totalCodewords: 1364,\n      groups: [\n        { count: 11, dataCodewords: 24 },\n        { count: 14, dataCodewords: 25 }\n      ]\n    }, // V23\n    {\n      totalCodewords: 1474,\n      groups: [\n        { count: 11, dataCodewords: 24 },\n        { count: 16, dataCodewords: 25 }\n      ]\n    }, // V24\n    {\n      totalCodewords: 1588,\n      groups: [\n        { count: 7, dataCodewords: 24 },\n        { count: 22, dataCodewords: 25 }\n      ]\n    }, // V25\n    {\n      totalCodewords: 1706,\n      groups: [\n        { count: 28, dataCodewords: 22 },\n        { count: 6, dataCodewords: 23 }\n      ]\n    }, // V26\n    {\n      totalCodewords: 1828,\n      groups: [\n        { count: 8, dataCodewords: 23 },\n        { count: 26, dataCodewords: 24 }\n      ]\n    }, // V27\n    {\n      totalCodewords: 1921,\n      groups: [\n        { count: 4, dataCodewords: 24 },\n        { count: 31, dataCodewords: 25 }\n      ]\n    }, // V28\n    {\n      totalCodewords: 2051,\n      groups: [\n        { count: 1, dataCodewords: 23 },\n        { count: 37, dataCodewords: 24 }\n      ]\n    }, // V29\n    {\n      totalCodewords: 2185,\n      groups: [\n        { count: 15, dataCodewords: 24 },\n        { count: 25, dataCodewords: 25 }\n      ]\n    }, // V30\n    {\n      totalCodewords: 2323,\n      groups: [\n        { count: 42, dataCodewords: 24 },\n        { count: 1, dataCodewords: 25 }\n      ]\n    }, // V31\n    {\n      totalCodewords: 2465,\n      groups: [\n        { count: 10, dataCodewords: 24 },\n        { count: 35, dataCodewords: 25 }\n      ]\n    }, // V32\n    {\n      totalCodewords: 2611,\n      groups: [\n        { count: 29, dataCodewords: 24 },\n        { count: 19, dataCodewords: 25 }\n      ]\n    }, // V33\n    {\n      totalCodewords: 2761,\n      groups: [\n        { count: 44, dataCodewords: 24 },\n        { count: 7, dataCodewords: 25 }\n      ]\n    }, // V34\n    {\n      totalCodewords: 2876,\n      groups: [\n        { count: 39, dataCodewords: 24 },\n        { count: 14, dataCodewords: 25 }\n      ]\n    }, // V35\n    {\n      totalCodewords: 3034,\n      groups: [\n        { count: 46, dataCodewords: 24 },\n        { count: 10, dataCodewords: 25 }\n      ]\n    }, // V36\n    {\n      totalCodewords: 3196,\n      groups: [\n        { count: 49, dataCodewords: 24 },\n        { count: 10, dataCodewords: 25 }\n      ]\n    }, // V37\n    {\n      totalCodewords: 3362,\n      groups: [\n        { count: 48, dataCodewords: 24 },\n        { count: 14, dataCodewords: 25 }\n      ]\n    }, // V38\n    {\n      totalCodewords: 3532,\n      groups: [\n        { count: 43, dataCodewords: 24 },\n        { count: 22, dataCodewords: 25 }\n      ]\n    }, // V39\n    {\n      totalCodewords: 3706,\n      groups: [\n        { count: 34, dataCodewords: 24 },\n        { count: 34, dataCodewords: 25 }\n      ]\n    } // V40\n  ],\n\n  // ---- ECC-H (indicator 0b10) ----\n  H: [\n    { totalCodewords: 0, groups: [] }, // V0 placeholder\n    { totalCodewords: 26, groups: [{ count: 1, dataCodewords: 9 }] }, // V1\n    { totalCodewords: 44, groups: [{ count: 1, dataCodewords: 16 }] }, // V2\n    { totalCodewords: 70, groups: [{ count: 2, dataCodewords: 13 }] }, // V3\n    { totalCodewords: 100, groups: [{ count: 4, dataCodewords: 9 }] }, // V4\n    {\n      totalCodewords: 134,\n      groups: [\n        { count: 2, dataCodewords: 11 },\n        { count: 2, dataCodewords: 12 }\n      ]\n    }, // V5\n    { totalCodewords: 172, groups: [{ count: 4, dataCodewords: 15 }] }, // V6\n    {\n      totalCodewords: 196,\n      groups: [\n        { count: 4, dataCodewords: 13 },\n        { count: 1, dataCodewords: 14 }\n      ]\n    }, // V7\n    {\n      totalCodewords: 242,\n      groups: [\n        { count: 4, dataCodewords: 14 },\n        { count: 2, dataCodewords: 15 }\n      ]\n    }, // V8\n    {\n      totalCodewords: 292,\n      groups: [\n        { count: 4, dataCodewords: 12 },\n        { count: 4, dataCodewords: 13 }\n      ]\n    }, // V9\n    {\n      totalCodewords: 346,\n      groups: [\n        { count: 6, dataCodewords: 15 },\n        { count: 2, dataCodewords: 16 }\n      ]\n    }, // V10\n    {\n      totalCodewords: 404,\n      groups: [\n        { count: 3, dataCodewords: 12 },\n        { count: 8, dataCodewords: 13 }\n      ]\n    }, // V11\n    {\n      totalCodewords: 466,\n      groups: [\n        { count: 7, dataCodewords: 14 },\n        { count: 4, dataCodewords: 15 }\n      ]\n    }, // V12\n    {\n      totalCodewords: 532,\n      groups: [\n        { count: 12, dataCodewords: 11 },\n        { count: 4, dataCodewords: 12 }\n      ]\n    }, // V13\n    {\n      totalCodewords: 581,\n      groups: [\n        { count: 11, dataCodewords: 12 },\n        { count: 5, dataCodewords: 13 }\n      ]\n    }, // V14\n    {\n      totalCodewords: 655,\n      groups: [\n        { count: 11, dataCodewords: 12 },\n        { count: 7, dataCodewords: 13 }\n      ]\n    }, // V15\n    {\n      totalCodewords: 733,\n      groups: [\n        { count: 3, dataCodewords: 15 },\n        { count: 13, dataCodewords: 16 }\n      ]\n    }, // V16\n    {\n      totalCodewords: 815,\n      groups: [\n        { count: 2, dataCodewords: 14 },\n        { count: 17, dataCodewords: 15 }\n      ]\n    }, // V17\n    {\n      totalCodewords: 901,\n      groups: [\n        { count: 2, dataCodewords: 14 },\n        { count: 19, dataCodewords: 15 }\n      ]\n    }, // V18\n    {\n      totalCodewords: 991,\n      groups: [\n        { count: 9, dataCodewords: 13 },\n        { count: 16, dataCodewords: 14 }\n      ]\n    }, // V19\n    {\n      totalCodewords: 1085,\n      groups: [\n        { count: 15, dataCodewords: 15 },\n        { count: 10, dataCodewords: 16 }\n      ]\n    }, // V20\n    {\n      totalCodewords: 1156,\n      groups: [\n        { count: 19, dataCodewords: 16 },\n        { count: 6, dataCodewords: 17 }\n      ]\n    }, // V21\n    { totalCodewords: 1258, groups: [{ count: 34, dataCodewords: 13 }] }, // V22\n    {\n      totalCodewords: 1364,\n      groups: [\n        { count: 16, dataCodewords: 15 },\n        { count: 14, dataCodewords: 16 }\n      ]\n    }, // V23\n    {\n      totalCodewords: 1474,\n      groups: [\n        { count: 30, dataCodewords: 16 },\n        { count: 2, dataCodewords: 17 }\n      ]\n    }, // V24\n    {\n      totalCodewords: 1588,\n      groups: [\n        { count: 22, dataCodewords: 15 },\n        { count: 13, dataCodewords: 16 }\n      ]\n    }, // V25\n    {\n      totalCodewords: 1706,\n      groups: [\n        { count: 33, dataCodewords: 16 },\n        { count: 4, dataCodewords: 17 }\n      ]\n    }, // V26\n    {\n      totalCodewords: 1828,\n      groups: [\n        { count: 12, dataCodewords: 15 },\n        { count: 28, dataCodewords: 16 }\n      ]\n    }, // V27\n    {\n      totalCodewords: 1921,\n      groups: [\n        { count: 11, dataCodewords: 15 },\n        { count: 31, dataCodewords: 16 }\n      ]\n    }, // V28\n    {\n      totalCodewords: 2051,\n      groups: [\n        { count: 19, dataCodewords: 15 },\n        { count: 26, dataCodewords: 16 }\n      ]\n    }, // V29\n    {\n      totalCodewords: 2185,\n      groups: [\n        { count: 23, dataCodewords: 15 },\n        { count: 25, dataCodewords: 16 }\n      ]\n    }, // V30\n    {\n      totalCodewords: 2323,\n      groups: [\n        { count: 23, dataCodewords: 15 },\n        { count: 28, dataCodewords: 16 }\n      ]\n    }, // V31\n    {\n      totalCodewords: 2465,\n      groups: [\n        { count: 19, dataCodewords: 15 },\n        { count: 35, dataCodewords: 16 }\n      ]\n    }, // V32\n    {\n      totalCodewords: 2611,\n      groups: [\n        { count: 11, dataCodewords: 15 },\n        { count: 46, dataCodewords: 16 }\n      ]\n    }, // V33\n    {\n      totalCodewords: 2761,\n      groups: [\n        { count: 59, dataCodewords: 16 },\n        { count: 1, dataCodewords: 17 }\n      ]\n    }, // V34\n    {\n      totalCodewords: 2876,\n      groups: [\n        { count: 22, dataCodewords: 15 },\n        { count: 41, dataCodewords: 16 }\n      ]\n    }, // V35\n    {\n      totalCodewords: 3034,\n      groups: [\n        { count: 2, dataCodewords: 15 },\n        { count: 64, dataCodewords: 16 }\n      ]\n    }, // V36\n    {\n      totalCodewords: 3196,\n      groups: [\n        { count: 24, dataCodewords: 15 },\n        { count: 46, dataCodewords: 16 }\n      ]\n    }, // V37\n    {\n      totalCodewords: 3362,\n      groups: [\n        { count: 42, dataCodewords: 15 },\n        { count: 32, dataCodewords: 16 }\n      ]\n    }, // V38\n    {\n      totalCodewords: 3532,\n      groups: [\n        { count: 10, dataCodewords: 15 },\n        { count: 67, dataCodewords: 16 }\n      ]\n    }, // V39\n    {\n      totalCodewords: 3706,\n      groups: [\n        { count: 20, dataCodewords: 15 },\n        { count: 61, dataCodewords: 16 }\n      ]\n    } // V40\n  ]\n}\n\n/**\n * 计算指定 ECC 等级和版本下 Byte 模式最多可编码的用户字节数。\n * 公式: floor((totalDataCW * 8 - 4 - charCountBits) / 8)\n */\nexport function getMaxPayloadBytes(ec: ErrorCorrectionLevel, version: number): number {\n  const table = VERSION_EC_TABLES[ec]\n  if (!table || !table[version]) return 0\n  const info = table[version]\n  const totalDataCW = info.groups.reduce((sum, g) => sum + g.count * g.dataCodewords, 0)\n  const charCountBits = version <= 9 ? 8 : 16\n  return Math.floor((totalDataCW * 8 - 4 - charCountBits) / 8)\n}\n\n// 对齐图案中心坐标 (V1 无对齐图案)\nexport const ALIGNMENT_POSITIONS: number[][] = [\n  [], // V1\n  [6, 18], // V2\n  [6, 22], // V3\n  [6, 26], // V4\n  [6, 30], // V5\n  [6, 34], // V6\n  [6, 22, 38], // V7\n  [6, 24, 42], // V8\n  [6, 26, 46], // V9\n  [6, 28, 50], // V10\n  [6, 30, 54], // V11\n  [6, 32, 58], // V12\n  [6, 34, 62], // V13\n  [6, 26, 46, 66], // V14\n  [6, 26, 48, 70], // V15\n  [6, 26, 50, 74], // V16\n  [6, 30, 54, 78], // V17\n  [6, 30, 56, 82], // V18\n  [6, 30, 58, 86], // V19\n  [6, 34, 62, 90], // V20\n  [6, 28, 50, 72, 94], // V21\n  [6, 26, 50, 74, 98], // V22\n  [6, 30, 54, 78, 102], // V23\n  [6, 28, 54, 80, 106], // V24\n  [6, 32, 58, 84, 110], // V25\n  [6, 30, 58, 86, 114], // V26\n  [6, 34, 62, 90, 118], // V27\n  [6, 26, 50, 74, 98, 122], // V28\n  [6, 30, 54, 78, 102, 126], // V29\n  [6, 26, 52, 78, 104, 130], // V30\n  [6, 30, 56, 82, 108, 134], // V31\n  [6, 34, 60, 86, 112, 138], // V32\n  [6, 30, 58, 86, 114, 142], // V33\n  [6, 34, 62, 90, 118, 146], // V34\n  [6, 30, 54, 78, 102, 126, 150], // V35\n  [6, 24, 50, 76, 102, 128, 154], // V36\n  [6, 28, 54, 80, 106, 132, 158], // V37\n  [6, 32, 58, 84, 110, 136, 162], // V38\n  [6, 26, 54, 82, 110, 138, 166], // V39\n  [6, 30, 58, 86, 114, 142, 170] // V40\n]\n","/**\n * GF(256) 有限域算术\n * 不可约多项式: x^8 + x^4 + x^3 + x^2 + 1 (0x11D)\n */\n\nconst GF_EXP = new Uint8Array(512)\nconst GF_LOG = new Uint8Array(256)\n\n// 初始化对数/反对数表\nlet x = 1\nfor (let i = 0; i < 255; i++) {\n  GF_EXP[i] = x\n  GF_LOG[x] = i\n  x <<= 1\n  if (x >= 256) x ^= 0x11d\n}\nfor (let i = 255; i < 512; i++) {\n  GF_EXP[i] = GF_EXP[i - 255]\n}\n\n/** GF(256) 乘法 */\nexport function gfMul(a: number, b: number): number {\n  if (a === 0 || b === 0) return 0\n  return GF_EXP[GF_LOG[a] + GF_LOG[b]]\n}\n\nexport { GF_EXP, GF_LOG }\n","/**\n * Reed-Solomon 纠错编码\n */\n\nimport { GF_EXP, gfMul } from './galois-field'\n\nconst _generatorPolyCache = new Map<number, number[]>()\n\n/** 生成 RS 生成多项式（自动缓存结果） */\nexport function rsGeneratorPoly(degree: number): number[] {\n  const cached = _generatorPolyCache.get(degree)\n  if (cached) return cached\n  let gen = [1]\n  for (let i = 0; i < degree; i++) {\n    const newGen = new Array<number>(gen.length + 1).fill(0)\n    for (let j = 0; j < gen.length; j++) {\n      newGen[j] ^= gen[j]\n      newGen[j + 1] ^= gfMul(gen[j], GF_EXP[i])\n    }\n    gen = newGen\n  }\n  _generatorPolyCache.set(degree, gen)\n  return gen\n}\n\n/** 计算纠错码字 */\nexport function rsEncode(data: number[], ecCount: number): number[] {\n  const gen = rsGeneratorPoly(ecCount)\n  const msg = new Array<number>(data.length + ecCount).fill(0)\n  for (let i = 0; i < data.length; i++) msg[i] = data[i]\n\n  for (let i = 0; i < data.length; i++) {\n    const coef = msg[i]\n    if (coef !== 0) {\n      for (let j = 1; j < gen.length; j++) {\n        msg[i + j] ^= gfMul(gen[j], coef)\n      }\n    }\n  }\n  return msg.slice(data.length)\n}\n","/**\n * 数据编码：位流构建 + 多块交织\n */\n\nimport { VERSION_EC_TABLES } from './constants'\nimport { rsEncode } from './reed-solomon'\nimport type { ErrorCorrectionLevel } from './types'\n\n/** 编码数据并返回交织后的码字数组 */\nexport function encodeDataBits(\n  dataBytes: number[],\n  version: number,\n  ec: ErrorCorrectionLevel = 'M'\n): number[] {\n  const ecInfo = VERSION_EC_TABLES[ec][version]\n\n  let totalDataCodewords = 0\n  for (const g of ecInfo.groups) {\n    totalDataCodewords += g.count * g.dataCodewords\n  }\n\n  const totalBlocks = ecInfo.groups.reduce((s, g) => s + g.count, 0)\n  const totalEcCodewords = ecInfo.totalCodewords - totalDataCodewords\n  const ecPerBlock = (totalEcCodewords / totalBlocks) | 0\n\n  // 构建位流\n  const bits: number[] = []\n\n  // 模式指示符: 0100 = Byte mode\n  bits.push(0, 1, 0, 0)\n\n  // 字符计数指示符 (V1-9: 8位, V10+: 16位)\n  const ccBits = version <= 9 ? 8 : 16\n  for (let i = ccBits - 1; i >= 0; i--) {\n    bits.push((dataBytes.length >> i) & 1)\n  }\n\n  // 数据字节\n  for (const byte of dataBytes) {\n    for (let i = 7; i >= 0; i--) {\n      bits.push((byte >> i) & 1)\n    }\n  }\n\n  // 终止符 (最多4位)\n  const maxBits = totalDataCodewords * 8\n  for (let i = 0; i < 4 && bits.length < maxBits; i++) {\n    bits.push(0)\n  }\n\n  // 对齐到字节边界\n  while (bits.length % 8 !== 0 && bits.length < maxBits) {\n    bits.push(0)\n  }\n\n  // 填充码字 (0xEC, 0x11 交替)\n  const padBytes = [0xec, 0x11]\n  let padIdx = 0\n  while (bits.length < maxBits) {\n    for (let i = 7; i >= 0; i--) {\n      bits.push((padBytes[padIdx] >> i) & 1)\n    }\n    padIdx = (padIdx + 1) % 2\n  }\n\n  // 转为码字数组\n  const allDataCodewords: number[] = []\n  for (let i = 0; i < bits.length; i += 8) {\n    let byte = 0\n    for (let j = 0; j < 8; j++) byte = (byte << 1) | (bits[i + j] || 0)\n    allDataCodewords.push(byte)\n  }\n\n  // 分块\n  const dataBlocks: number[][] = []\n  const ecBlocks: number[][] = []\n  let offset = 0\n\n  for (const group of ecInfo.groups) {\n    for (let b = 0; b < group.count; b++) {\n      const blockData = allDataCodewords.slice(offset, offset + group.dataCodewords)\n      offset += group.dataCodewords\n      const ecWords = rsEncode(blockData, ecPerBlock)\n      dataBlocks.push(blockData)\n      ecBlocks.push(ecWords)\n    }\n  }\n\n  // 交织数据码字\n  const interleaved: number[] = []\n  const maxDataLen = Math.max(...dataBlocks.map((b) => b.length))\n  for (let i = 0; i < maxDataLen; i++) {\n    for (const block of dataBlocks) {\n      if (i < block.length) interleaved.push(block[i])\n    }\n  }\n\n  // 交织纠错码字\n  const maxEcLen = Math.max(...ecBlocks.map((b) => b.length))\n  for (let i = 0; i < maxEcLen; i++) {\n    for (const block of ecBlocks) {\n      if (i < block.length) interleaved.push(block[i])\n    }\n  }\n\n  return interleaved\n}\n","/**\n * 掩码函数与惩罚评估\n */\n\nexport type MaskFn = (row: number, col: number) => boolean\n\n/** 8 种标准掩码函数 (ISO 18004) */\nexport const MASK_FUNCTIONS: MaskFn[] = [\n  (r, c) => (r + c) % 2 === 0,\n  (r) => r % 2 === 0,\n  (_, c) => c % 3 === 0,\n  (r, c) => (r + c) % 3 === 0,\n  (r, c) => (Math.floor(r / 2) + Math.floor(c / 3)) % 2 === 0,\n  (r, c) => ((r * c) % 2) + ((r * c) % 3) === 0,\n  (r, c) => (((r * c) % 2) + ((r * c) % 3)) % 2 === 0,\n  (r, c) => (((r + c) % 2) + ((r * c) % 3)) % 2 === 0\n]\n\n/** 评估掩码惩罚分数 */\nexport function evaluatePenalty(modules: boolean[][], size: number): number {\n  let penalty = 0\n\n  // Rule 1: 连续 5+ 同色模块\n  for (let row = 0; row < size; row++) {\n    let run = 1\n    for (let col = 1; col < size; col++) {\n      if (modules[row][col] === modules[row][col - 1]) {\n        run++\n      } else {\n        if (run >= 5) penalty += run - 2\n        run = 1\n      }\n    }\n    if (run >= 5) penalty += run - 2\n  }\n  for (let col = 0; col < size; col++) {\n    let run = 1\n    for (let row = 1; row < size; row++) {\n      if (modules[row][col] === modules[row - 1][col]) {\n        run++\n      } else {\n        if (run >= 5) penalty += run - 2\n        run = 1\n      }\n    }\n    if (run >= 5) penalty += run - 2\n  }\n\n  // Rule 2: 2x2 同色块\n  for (let row = 0; row < size - 1; row++) {\n    for (let col = 0; col < size - 1; col++) {\n      const v = modules[row][col]\n      if (\n        v === modules[row][col + 1] &&\n        v === modules[row + 1][col] &&\n        v === modules[row + 1][col + 1]\n      ) {\n        penalty += 3\n      }\n    }\n  }\n\n  // Rule 3: 1:1:3:1:1 finder-like pattern\n  for (let row = 0; row < size; row++) {\n    for (let col = 0; col <= size - 11; col++) {\n      if (\n        modules[row][col + 0] &&\n        !modules[row][col + 1] &&\n        modules[row][col + 2] &&\n        modules[row][col + 3] &&\n        modules[row][col + 4] &&\n        !modules[row][col + 5] &&\n        modules[row][col + 6] &&\n        !modules[row][col + 7] &&\n        !modules[row][col + 8] &&\n        !modules[row][col + 9] &&\n        !modules[row][col + 10]\n      ) {\n        penalty += 40\n      }\n      if (\n        !modules[row][col + 0] &&\n        !modules[row][col + 1] &&\n        !modules[row][col + 2] &&\n        !modules[row][col + 3] &&\n        modules[row][col + 4] &&\n        !modules[row][col + 5] &&\n        modules[row][col + 6] &&\n        modules[row][col + 7] &&\n        modules[row][col + 8] &&\n        !modules[row][col + 9] &&\n        modules[row][col + 10]\n      ) {\n        penalty += 40\n      }\n    }\n  }\n  for (let col = 0; col < size; col++) {\n    for (let row = 0; row <= size - 11; row++) {\n      if (\n        modules[row + 0][col] &&\n        !modules[row + 1][col] &&\n        modules[row + 2][col] &&\n        modules[row + 3][col] &&\n        modules[row + 4][col] &&\n        !modules[row + 5][col] &&\n        modules[row + 6][col] &&\n        !modules[row + 7][col] &&\n        !modules[row + 8][col] &&\n        !modules[row + 9][col] &&\n        !modules[row + 10][col]\n      ) {\n        penalty += 40\n      }\n      if (\n        !modules[row + 0][col] &&\n        !modules[row + 1][col] &&\n        !modules[row + 2][col] &&\n        !modules[row + 3][col] &&\n        modules[row + 4][col] &&\n        !modules[row + 5][col] &&\n        modules[row + 6][col] &&\n        modules[row + 7][col] &&\n        modules[row + 8][col] &&\n        !modules[row + 9][col] &&\n        modules[row + 10][col]\n      ) {\n        penalty += 40\n      }\n    }\n  }\n\n  // Rule 4: 暗模块比例偏离 50%\n  let darkCount = 0\n  for (let row = 0; row < size; row++) {\n    for (let col = 0; col < size; col++) {\n      if (modules[row][col]) darkCount++\n    }\n  }\n  const total = size * size\n  const pct = (darkCount * 100) / total\n  const prev5 = Math.floor(pct / 5) * 5\n  const next5 = prev5 + 5\n  penalty += Math.min(Math.abs(prev5 - 50) / 5, Math.abs(next5 - 50) / 5) * 10\n\n  return penalty\n}\n","/**\n * 功能图案放置：Finder、Alignment、Timing、Dark Module\n */\n\nimport { ALIGNMENT_POSITIONS } from './constants'\n\nexport function placeFinderPatterns(\n  modules: (boolean | null)[][],\n  isFunction: boolean[][],\n  size: number\n): void {\n  const centers = [\n    [3, 3],\n    [3, size - 4],\n    [size - 4, 3]\n  ]\n  for (const [cy, cx] of centers) {\n    for (let dy = -4; dy <= 4; dy++) {\n      for (let dx = -4; dx <= 4; dx++) {\n        const r = cy + dy\n        const c = cx + dx\n        if (r < 0 || r >= size || c < 0 || c >= size) continue\n        const dist = Math.max(Math.abs(dy), Math.abs(dx))\n        const dark = dist <= 3 && dist !== 2\n        modules[r][c] = dark\n        isFunction[r][c] = true\n      }\n    }\n  }\n}\n\nexport function placeTimingPatterns(\n  modules: (boolean | null)[][],\n  isFunction: boolean[][],\n  size: number\n): void {\n  for (let i = 8; i < size - 8; i++) {\n    if (!isFunction[6][i]) {\n      modules[6][i] = i % 2 === 0\n      isFunction[6][i] = true\n    }\n    if (!isFunction[i][6]) {\n      modules[i][6] = i % 2 === 0\n      isFunction[i][6] = true\n    }\n  }\n}\n\nexport function placeAlignmentPatterns(\n  modules: (boolean | null)[][],\n  isFunction: boolean[][],\n  version: number\n): void {\n  const positions = ALIGNMENT_POSITIONS[version - 1]\n  for (const row of positions) {\n    for (const col of positions) {\n      if (isFunction[row][col]) continue\n      for (let dy = -2; dy <= 2; dy++) {\n        for (let dx = -2; dx <= 2; dx++) {\n          const dark = Math.max(Math.abs(dy), Math.abs(dx)) !== 1\n          modules[row + dy][col + dx] = dark\n          isFunction[row + dy][col + dx] = true\n        }\n      }\n    }\n  }\n}\n\nexport function placeDarkModule(\n  modules: (boolean | null)[][],\n  isFunction: boolean[][],\n  version: number\n): void {\n  modules[4 * version + 9][8] = true\n  isFunction[4 * version + 9][8] = true\n}\n\nexport function reserveInfoAreas(isFunction: boolean[][], size: number, version: number): void {\n  for (let i = 0; i < 9; i++) {\n    if (!isFunction[8][i]) isFunction[8][i] = true\n    if (!isFunction[i][8]) isFunction[i][8] = true\n  }\n  for (let i = 0; i < 8; i++) {\n    if (!isFunction[8][size - 1 - i]) isFunction[8][size - 1 - i] = true\n    if (!isFunction[size - 1 - i][8]) isFunction[size - 1 - i][8] = true\n  }\n  if (version >= 7) {\n    for (let i = 0; i < 6; i++) {\n      for (let j = 0; j < 3; j++) {\n        isFunction[i][size - 11 + j] = true\n        isFunction[size - 11 + j][i] = true\n      }\n    }\n  }\n}\n","/**\n * 文本 → UTF-8 字节序列\n */\n\nexport function textToBytes(text: string): number[] {\n  const bytes: number[] = []\n  for (let i = 0; i < text.length; i++) {\n    let cp = text.codePointAt(i)!\n    if (cp > 0xffff) i++ // surrogate pair\n    if (cp < 0x80) {\n      bytes.push(cp)\n    } else if (cp < 0x800) {\n      bytes.push(0xc0 | (cp >> 6), 0x80 | (cp & 0x3f))\n    } else if (cp < 0x10000) {\n      bytes.push(0xe0 | (cp >> 12), 0x80 | ((cp >> 6) & 0x3f), 0x80 | (cp & 0x3f))\n    } else {\n      bytes.push(\n        0xf0 | (cp >> 18),\n        0x80 | ((cp >> 12) & 0x3f),\n        0x80 | ((cp >> 6) & 0x3f),\n        0x80 | (cp & 0x3f)\n      )\n    }\n  }\n  return bytes\n}\n","/**\n * QR Code 模块矩阵生成\n *\n * 从文本内容生成 QR 码的 boolean[][] 矩阵。\n * 纯算法实现，零运行时依赖，可在任意 JS 环境中使用。\n *\n * 参考规范：ISO/IEC 18004 (QR Code)\n */\n\nimport { computeFormatBits, computeVersionBits } from './bch'\nimport { getMaxPayloadBytes } from './constants'\nimport { encodeDataBits } from './data-encoder'\nimport { evaluatePenalty, MASK_FUNCTIONS } from './mask'\nimport {\n  placeAlignmentPatterns,\n  placeDarkModule,\n  placeFinderPatterns,\n  placeTimingPatterns,\n  reserveInfoAreas\n} from './patterns'\nimport type { ErrorCorrectionLevel, QRCodeOptions } from './types'\nimport { textToBytes } from './utf8'\n\n/** 根据数据长度选择最小版本 */\nfunction getMinVersion(\n  byteLength: number,\n  ec: ErrorCorrectionLevel,\n  minVersion: number = 1\n): number {\n  for (let v = minVersion; v <= 40; v++) {\n    if (byteLength <= getMaxPayloadBytes(ec, v)) return v\n  }\n  throw new Error(`Data too long, maximum supported is Version 40 with ECC-${ec}`)\n}\n\n/** 数据位放置（Z字形扫描） */\nfunction placeDataBits(\n  modules: (boolean | null)[][],\n  isFunction: boolean[][],\n  codewords: number[],\n  size: number\n): void {\n  let bitIdx = 0\n  const totalBits = codewords.length * 8\n\n  for (let right = size - 1; right >= 1; right -= 2) {\n    if (right === 6) right = 5\n\n    const upward = ((right + 1) & 2) === 0\n\n    for (let vert = 0; vert < size; vert++) {\n      for (let j = 0; j < 2; j++) {\n        const col = right - j\n        const row = upward ? size - 1 - vert : vert\n\n        if (row < 0 || row >= size || col < 0 || col >= size) continue\n        if (isFunction[row][col]) continue\n\n        if (bitIdx < totalBits) {\n          const byteIdx = bitIdx >>> 3\n          const bitPos = 7 - (bitIdx & 7)\n          modules[row][col] = ((codewords[byteIdx] >> bitPos) & 1) === 1\n          bitIdx++\n        } else {\n          modules[row][col] = false\n        }\n      }\n    }\n  }\n}\n\n/** 格式信息放置 */\nfunction writeFormatBits(\n  modules: boolean[][],\n  size: number,\n  mask: number,\n  ec: ErrorCorrectionLevel\n): void {\n  const bits = computeFormatBits(mask, ec)\n\n  const getBit = (i: number): boolean => ((bits >>> i) & 1) === 1\n\n  // 第一副本（围绕左上定位图案）\n  for (let i = 0; i <= 5; i++) modules[i][8] = getBit(i)\n  modules[7][8] = getBit(6)\n  modules[8][8] = getBit(7)\n  modules[8][7] = getBit(8)\n  for (let i = 9; i < 15; i++) modules[8][14 - i] = getBit(i)\n\n  // 第二副本（围绕另外两个定位图案）\n  for (let i = 0; i < 8; i++) modules[8][size - 1 - i] = getBit(i)\n  for (let i = 8; i < 15; i++) modules[size - 15 + i][8] = getBit(i)\n}\n\n/** 版本信息放置 */\nfunction writeVersionBits(modules: boolean[][], size: number, version: number): void {\n  if (version < 7) return\n  const bits = computeVersionBits(version)\n\n  for (let i = 0; i < 18; i++) {\n    const bit = ((bits >>> i) & 1) === 1\n    const row = Math.floor(i / 3)\n    const col = size - 11 + (i % 3)\n    modules[row][col] = bit\n    modules[col][row] = bit\n  }\n}\n\n/**\n * 从文本内容生成 QR 码模块矩阵\n * @returns boolean[][] 其中 true = 黑色, false = 白色\n */\nexport function encode(text: string, options?: QRCodeOptions): boolean[][] {\n  const ec: ErrorCorrectionLevel = options?.errorCorrection ?? 'M'\n  const dataBytes = textToBytes(text)\n  const version = getMinVersion(dataBytes.length, ec, options?.minVersion)\n  const size = version * 4 + 17\n\n  // 初始化矩阵\n  const modules: (boolean | null)[][] = []\n  const isFunction: boolean[][] = []\n  for (let i = 0; i < size; i++) {\n    modules.push(new Array<boolean | null>(size).fill(null))\n    isFunction.push(new Array<boolean>(size).fill(false))\n  }\n\n  // 放置功能图案\n  placeFinderPatterns(modules, isFunction, size)\n  if (version >= 2) {\n    placeAlignmentPatterns(modules, isFunction, version)\n  }\n  placeTimingPatterns(modules, isFunction, size)\n  placeDarkModule(modules, isFunction, version)\n  reserveInfoAreas(isFunction, size, version)\n\n  // 编码数据\n  const codewords = encodeDataBits(dataBytes, version, ec)\n\n  // 放置数据位\n  placeDataBits(modules, isFunction, codewords, size)\n\n  // 选择最佳掩码\n  let bestMask = 0\n  let bestPenalty = Infinity\n\n  for (let mask = 0; mask < 8; mask++) {\n    const test: boolean[][] = []\n    for (let r = 0; r < size; r++) {\n      test.push(new Array<boolean>(size))\n      for (let c = 0; c < size; c++) {\n        let val = modules[r][c] === true\n        if (!isFunction[r][c] && MASK_FUNCTIONS[mask](r, c)) {\n          val = !val\n        }\n        test[r][c] = val\n      }\n    }\n    writeFormatBits(test, size, mask, ec)\n    if (version >= 7) writeVersionBits(test, size, version)\n\n    const score = evaluatePenalty(test, size)\n    if (score < bestPenalty) {\n      bestPenalty = score\n      bestMask = mask\n    }\n  }\n\n  // 应用最佳掩码\n  const maskFn = MASK_FUNCTIONS[bestMask]\n  for (let r = 0; r < size; r++) {\n    for (let c = 0; c < size; c++) {\n      if (!isFunction[r][c] && maskFn(r, c)) {\n        modules[r][c] = !modules[r][c]\n      }\n    }\n  }\n\n  // 写入格式和版本信息\n  writeFormatBits(modules as boolean[][], size, bestMask, ec)\n  if (version >= 7) {\n    writeVersionBits(modules as boolean[][], size, version)\n  }\n\n  return modules.map((row) => row.map((cell) => cell === true))\n}\n"],"mappings":"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"}