kordoc 4.0.6 → 4.0.8

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.
Files changed (86) hide show
  1. package/README.md +823 -806
  2. package/dist/{-NDU7YGSS.js → -LE4RLXVA.js} +8 -8
  3. package/dist/{chunk-5SOZXPQY.js → chunk-2DZQF6YJ.js} +3 -3
  4. package/dist/chunk-2DZQF6YJ.js.map +1 -0
  5. package/dist/{chunk-6GBLFQMA.js → chunk-5RPYBC2Q.js} +1 -1
  6. package/dist/chunk-5RPYBC2Q.js.map +1 -0
  7. package/dist/{chunk-DQJTNXVS.cjs → chunk-6XAAYAWL.cjs} +142 -3
  8. package/dist/chunk-6XAAYAWL.cjs.map +1 -0
  9. package/dist/{chunk-HC2SEH6I.js → chunk-7S3M4N4E.js} +939 -946
  10. package/dist/chunk-7S3M4N4E.js.map +1 -0
  11. package/dist/{chunk-4C7SBZNW.js → chunk-BNU5QGIZ.js} +2 -2
  12. package/dist/chunk-BNU5QGIZ.js.map +1 -0
  13. package/dist/{chunk-63ASYC4N.js → chunk-D35VBACN.js} +3 -3
  14. package/dist/chunk-D35VBACN.js.map +1 -0
  15. package/dist/chunk-DCZVOIEO.cjs.map +1 -1
  16. package/dist/chunk-GS7T56RP.cjs.map +1 -1
  17. package/dist/{chunk-L3I4TIRP.js → chunk-HMUEU7D7.js} +2 -2
  18. package/dist/chunk-HMUEU7D7.js.map +1 -0
  19. package/dist/{chunk-5CJGKKMZ.js → chunk-MEPHGCPQ.js} +1 -1
  20. package/dist/chunk-MEPHGCPQ.js.map +1 -0
  21. package/dist/chunk-MOL7MDBG.js +0 -0
  22. package/dist/{chunk-HOGJ5ALY.js → chunk-OQPILS7B.js} +142 -3
  23. package/dist/chunk-OQPILS7B.js.map +1 -0
  24. package/dist/{chunk-KA4FEBS2.js → chunk-RROH5WHO.js} +2 -2
  25. package/dist/chunk-RROH5WHO.js.map +1 -0
  26. package/dist/{chunk-UVSOSFER.js → chunk-UEIYETCQ.js} +142 -3
  27. package/dist/chunk-UEIYETCQ.js.map +1 -0
  28. package/dist/cli.js +15 -15
  29. package/dist/cli.js.map +1 -1
  30. package/dist/{detect-PJZMUL2Z.js → detect-RI2MQ33K.js} +2 -2
  31. package/dist/formula-5NKVS2LR.cjs.map +1 -1
  32. package/dist/formula-JCNF43NE.js +0 -0
  33. package/dist/index.cjs +1248 -1255
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.cts +1 -1
  36. package/dist/index.d.ts +1 -1
  37. package/dist/index.js +925 -932
  38. package/dist/index.js.map +1 -1
  39. package/dist/mcp.js +13 -13
  40. package/dist/mcp.js.map +1 -1
  41. package/dist/page-range-737B4EZW.js +0 -0
  42. package/dist/page-range-P7SDW6LR.cjs.map +1 -1
  43. package/dist/{parser-VEY4B5CJ.cjs → parser-ITMU2WN5.cjs} +231 -37
  44. package/dist/parser-ITMU2WN5.cjs.map +1 -0
  45. package/dist/{parser-DMKHIV4E.js → parser-KMMUS73Q.js} +200 -6
  46. package/dist/parser-KMMUS73Q.js.map +1 -0
  47. package/dist/{parser-C636QIOB.js → parser-TCTCSBYZ.js} +202 -8
  48. package/dist/parser-TCTCSBYZ.js.map +1 -0
  49. package/dist/{profile-io-JYGCC6XQ.js → profile-io-SLN4P76T.js} +3 -3
  50. package/dist/{provider-H4WWSPOV.js → provider-4ZJKV3DC.js} +1 -1
  51. package/dist/provider-4ZJKV3DC.js.map +1 -0
  52. package/dist/{provider-7H4CPZYS.js → provider-AKROB7WQ.js} +1 -1
  53. package/dist/provider-AKROB7WQ.js.map +1 -0
  54. package/dist/{provider-5K7O3Z2O.cjs → provider-G4C2V2PD.cjs} +1 -1
  55. package/dist/provider-G4C2V2PD.cjs.map +1 -0
  56. package/dist/render-25BT623I.js +10 -0
  57. package/dist/seal-R4TETA4C.js +10 -0
  58. package/dist/setup-57FB3LSP.js +0 -0
  59. package/dist/{watch-ZQUFJBFR.js → watch-OHQWSVPE.js} +8 -8
  60. package/dist/watch-OHQWSVPE.js.map +1 -0
  61. package/package.json +97 -97
  62. package/dist/chunk-4C7SBZNW.js.map +0 -1
  63. package/dist/chunk-5CJGKKMZ.js.map +0 -1
  64. package/dist/chunk-5SOZXPQY.js.map +0 -1
  65. package/dist/chunk-63ASYC4N.js.map +0 -1
  66. package/dist/chunk-6GBLFQMA.js.map +0 -1
  67. package/dist/chunk-DQJTNXVS.cjs.map +0 -1
  68. package/dist/chunk-HC2SEH6I.js.map +0 -1
  69. package/dist/chunk-HOGJ5ALY.js.map +0 -1
  70. package/dist/chunk-KA4FEBS2.js.map +0 -1
  71. package/dist/chunk-L3I4TIRP.js.map +0 -1
  72. package/dist/chunk-UVSOSFER.js.map +0 -1
  73. package/dist/parser-C636QIOB.js.map +0 -1
  74. package/dist/parser-DMKHIV4E.js.map +0 -1
  75. package/dist/parser-VEY4B5CJ.cjs.map +0 -1
  76. package/dist/provider-5K7O3Z2O.cjs.map +0 -1
  77. package/dist/provider-7H4CPZYS.js.map +0 -1
  78. package/dist/provider-H4WWSPOV.js.map +0 -1
  79. package/dist/render-ISOEOMTM.js +0 -10
  80. package/dist/seal-676ZIAZZ.js +0 -10
  81. package/dist/watch-ZQUFJBFR.js.map +0 -1
  82. /package/dist/{-NDU7YGSS.js.map → -LE4RLXVA.js.map} +0 -0
  83. /package/dist/{detect-PJZMUL2Z.js.map → detect-RI2MQ33K.js.map} +0 -0
  84. /package/dist/{profile-io-JYGCC6XQ.js.map → profile-io-SLN4P76T.js.map} +0 -0
  85. /package/dist/{render-ISOEOMTM.js.map → render-25BT623I.js.map} +0 -0
  86. /package/dist/{seal-676ZIAZZ.js.map → seal-R4TETA4C.js.map} +0 -0
@@ -4,9 +4,10 @@ import {
4
4
  HEADING_RATIO_H3,
5
5
  KordocError,
6
6
  blocksToMarkdown,
7
+ encodePng,
7
8
  safeMax,
8
9
  safeMin
9
- } from "./chunk-HOGJ5ALY.js";
10
+ } from "./chunk-OQPILS7B.js";
10
11
  import {
11
12
  parsePageRange
12
13
  } from "./chunk-GE43BE46.js";
@@ -1220,10 +1221,180 @@ function normalizeUndersegmentedTable(originalCells, colXs, items) {
1220
1221
  return rebuilt;
1221
1222
  }
1222
1223
 
1224
+ // src/pdf/image-extract.ts
1225
+ import { OPS as OPS3, ImageKind } from "pdfjs-dist/legacy/build/pdf.mjs";
1226
+ var IMAGE_RESOLVE_TIMEOUT_MS = 5e3;
1227
+ function resolveImgData(page, objId) {
1228
+ const store = objId.startsWith("g_") ? page.commonObjs : page.objs;
1229
+ return new Promise((resolve) => {
1230
+ let done = false;
1231
+ const timer = setTimeout(() => {
1232
+ if (!done) {
1233
+ done = true;
1234
+ resolve(null);
1235
+ }
1236
+ }, IMAGE_RESOLVE_TIMEOUT_MS);
1237
+ try {
1238
+ store.get(objId, (data) => {
1239
+ if (!done) {
1240
+ done = true;
1241
+ clearTimeout(timer);
1242
+ resolve(data ?? null);
1243
+ }
1244
+ });
1245
+ } catch {
1246
+ if (!done) {
1247
+ done = true;
1248
+ clearTimeout(timer);
1249
+ resolve(null);
1250
+ }
1251
+ }
1252
+ });
1253
+ }
1254
+ var MIN_DIM = 8;
1255
+ var MAX_PIXELS = 36e6;
1256
+ var MAX_IMAGES_PER_DOC = 200;
1257
+ var MAX_TOTAL_IMAGE_BYTES = 128 * 1024 * 1024;
1258
+ function createPdfImageState() {
1259
+ return { imageIndex: 0, totalBytes: 0, seen: /* @__PURE__ */ new Map(), capWarned: false };
1260
+ }
1261
+ function fnv1a(data) {
1262
+ let h = 2166136261;
1263
+ for (let i = 0; i < data.length; i++) {
1264
+ h ^= data[i];
1265
+ h = Math.imul(h, 16777619);
1266
+ }
1267
+ return h >>> 0;
1268
+ }
1269
+ function toRgba(img) {
1270
+ const { width: w, height: h, kind, data } = img;
1271
+ if (!data || !w || !h) return null;
1272
+ const rgba = new Uint8Array(w * h * 4);
1273
+ if (kind === ImageKind.RGBA_32BPP) {
1274
+ if (data.length < w * h * 4) return null;
1275
+ rgba.set(data.subarray(0, w * h * 4));
1276
+ return rgba;
1277
+ }
1278
+ if (kind === ImageKind.RGB_24BPP) {
1279
+ if (data.length < w * h * 3) return null;
1280
+ for (let i = 0, s = 0, d = 0; i < w * h; i++, s += 3, d += 4) {
1281
+ rgba[d] = data[s];
1282
+ rgba[d + 1] = data[s + 1];
1283
+ rgba[d + 2] = data[s + 2];
1284
+ rgba[d + 3] = 255;
1285
+ }
1286
+ return rgba;
1287
+ }
1288
+ if (kind === ImageKind.GRAYSCALE_1BPP) {
1289
+ const stride = w + 7 >> 3;
1290
+ if (data.length < stride * h) return null;
1291
+ for (let y = 0; y < h; y++) {
1292
+ for (let x = 0; x < w; x++) {
1293
+ const bit = data[y * stride + (x >> 3)] >> 7 - (x & 7) & 1;
1294
+ const v = bit ? 255 : 0;
1295
+ const d = (y * w + x) * 4;
1296
+ rgba[d] = v;
1297
+ rgba[d + 1] = v;
1298
+ rgba[d + 2] = v;
1299
+ rgba[d + 3] = 255;
1300
+ }
1301
+ }
1302
+ return rgba;
1303
+ }
1304
+ return null;
1305
+ }
1306
+ async function extractPageImages(page, fnArray, argsArray, pageNumber, state, warnings) {
1307
+ const blocks = [];
1308
+ const images = [];
1309
+ const pageSeenIds = /* @__PURE__ */ new Set();
1310
+ for (let i = 0; i < fnArray.length; i++) {
1311
+ const op = fnArray[i];
1312
+ let imgData = null;
1313
+ let dedupeId = null;
1314
+ if (op === OPS3.paintImageXObject || op === OPS3.paintImageXObjectRepeat) {
1315
+ const objId = argsArray[i]?.[0];
1316
+ if (typeof objId !== "string" || pageSeenIds.has(objId)) continue;
1317
+ pageSeenIds.add(objId);
1318
+ dedupeId = objId;
1319
+ imgData = await resolveImgData(page, objId);
1320
+ } else if (op === OPS3.paintInlineImageXObject) {
1321
+ imgData = argsArray[i]?.[0];
1322
+ } else {
1323
+ continue;
1324
+ }
1325
+ if (!imgData?.data || !imgData.width || !imgData.height) continue;
1326
+ const { width: w, height: h } = imgData;
1327
+ if (w < MIN_DIM || h < MIN_DIM) continue;
1328
+ if (w * h > MAX_PIXELS) {
1329
+ warnings.push({ page: pageNumber, message: `\uC774\uBBF8\uC9C0 \uD06C\uAE30 \uCD08\uACFC\uB85C \uCD94\uCD9C \uC0DD\uB7B5 (${w}\xD7${h})`, code: "SKIPPED_IMAGE" });
1330
+ continue;
1331
+ }
1332
+ const hash = `${w}x${h}k${imgData.kind ?? "?"}h${fnv1a(imgData.data)}${dedupeId ? "" : "inline"}`;
1333
+ if (state.seen.has(hash)) continue;
1334
+ if (state.imageIndex >= MAX_IMAGES_PER_DOC || state.totalBytes >= MAX_TOTAL_IMAGE_BYTES) {
1335
+ if (!state.capWarned) {
1336
+ state.capWarned = true;
1337
+ warnings.push({ page: pageNumber, message: `\uC774\uBBF8\uC9C0 \uCD94\uCD9C \uC0C1\uD55C \uB3C4\uB2EC (${MAX_IMAGES_PER_DOC}\uAC1C/128MB) \u2014 \uC774\uD6C4 \uC774\uBBF8\uC9C0 \uC0DD\uB7B5`, code: "SKIPPED_IMAGE" });
1338
+ }
1339
+ continue;
1340
+ }
1341
+ const rgba = toRgba(imgData);
1342
+ if (!rgba) continue;
1343
+ const png = encodePng(w, h, rgba);
1344
+ state.imageIndex++;
1345
+ state.totalBytes += png.length;
1346
+ const filename = `image_${String(state.imageIndex).padStart(3, "0")}.png`;
1347
+ state.seen.set(hash, filename);
1348
+ images.push({ filename, data: png, mimeType: "image/png" });
1349
+ blocks.push({ type: "image", text: filename, pageNumber });
1350
+ }
1351
+ return { blocks, images };
1352
+ }
1353
+ function injectPageImageBlocks(blocks, pageImages) {
1354
+ if (pageImages.size === 0) return;
1355
+ const lastIndexForPage = /* @__PURE__ */ new Map();
1356
+ for (let i = 0; i < blocks.length; i++) {
1357
+ const p = blocks[i].pageNumber;
1358
+ if (p !== void 0) lastIndexForPage.set(p, i);
1359
+ }
1360
+ const pageAtIndex = /* @__PURE__ */ new Map();
1361
+ for (const [p, last] of lastIndexForPage) pageAtIndex.set(last, p);
1362
+ const result = [];
1363
+ const injected = /* @__PURE__ */ new Set();
1364
+ for (let i = 0; i < blocks.length; i++) {
1365
+ result.push(blocks[i]);
1366
+ const p = pageAtIndex.get(i);
1367
+ if (p !== void 0 && pageImages.has(p)) {
1368
+ result.push(...pageImages.get(p));
1369
+ injected.add(p);
1370
+ }
1371
+ }
1372
+ for (const p of [...pageImages.keys()].sort((a, b) => a - b)) {
1373
+ if (injected.has(p)) continue;
1374
+ let at = result.length;
1375
+ for (let i = 0; i < result.length; i++) {
1376
+ const bp = result[i].pageNumber;
1377
+ if (bp !== void 0 && bp > p) {
1378
+ at = i;
1379
+ break;
1380
+ }
1381
+ }
1382
+ result.splice(at, 0, ...pageImages.get(p));
1383
+ }
1384
+ blocks.length = 0;
1385
+ blocks.push(...result);
1386
+ }
1387
+
1223
1388
  // src/pdf/quality.ts
1389
+ var RARE_JONG = /* @__PURE__ */ new Set([3, 5, 6, 9, 10, 11, 12, 13, 14, 15, 18, 24, 25, 26]);
1390
+ var MOJIBAKE_MIN_HANGUL = 30;
1391
+ var MOJIBAKE_MAX_NOBATCHIM = 0.15;
1392
+ var MOJIBAKE_MIN_RAREBATCHIM = 0.25;
1224
1393
  function computePageQuality(page, text) {
1225
1394
  let total = 0;
1226
1395
  let hangul = 0;
1396
+ let hangulNoBatchim = 0;
1397
+ let hangulRareBatchim = 0;
1227
1398
  let control = 0;
1228
1399
  let replacement = 0;
1229
1400
  let pua = 0;
@@ -1241,6 +1412,9 @@ function computePageQuality(page, text) {
1241
1412
  }
1242
1413
  if (code >= 44032 && code <= 55203) {
1243
1414
  hangul++;
1415
+ const jong = (code - 44032) % 28;
1416
+ if (jong === 0) hangulNoBatchim++;
1417
+ else if (RARE_JONG.has(jong)) hangulRareBatchim++;
1244
1418
  continue;
1245
1419
  }
1246
1420
  if (code >= 57344 && code <= 63743 || code >= 56192 && code <= 56319) {
@@ -1252,6 +1426,9 @@ function computePageQuality(page, text) {
1252
1426
  const puaRatio = pua / denom;
1253
1427
  const controlCharRatio = control / denom;
1254
1428
  const replacementCharRatio = replacement / denom;
1429
+ const hangulNoBatchimRatio = hangul > 0 ? hangulNoBatchim / hangul : 0;
1430
+ const hangulRareBatchimRatio = hangul > 0 ? hangulRareBatchim / hangul : 0;
1431
+ const garbledHangul = hangul >= MOJIBAKE_MIN_HANGUL && hangulNoBatchimRatio < MOJIBAKE_MAX_NOBATCHIM && hangulRareBatchimRatio >= MOJIBAKE_MIN_RAREBATCHIM;
1255
1432
  let needsOcr = false;
1256
1433
  let ocrReason;
1257
1434
  if (total < LOW_TEXT_THRESHOLD) {
@@ -1266,6 +1443,9 @@ function computePageQuality(page, text) {
1266
1443
  } else if (replacementCharRatio >= HIGH_REPLACEMENT_THRESHOLD) {
1267
1444
  needsOcr = true;
1268
1445
  ocrReason = "high_replacement";
1446
+ } else if (garbledHangul) {
1447
+ needsOcr = true;
1448
+ ocrReason = "garbled_hangul";
1269
1449
  }
1270
1450
  return {
1271
1451
  page,
@@ -1274,6 +1454,8 @@ function computePageQuality(page, text) {
1274
1454
  controlCharRatio,
1275
1455
  replacementCharRatio,
1276
1456
  puaRatio,
1457
+ hangulNoBatchimRatio,
1458
+ hangulRareBatchimRatio,
1277
1459
  needsOcr,
1278
1460
  ocrReason
1279
1461
  };
@@ -3565,6 +3747,9 @@ async function parsePdfDocument(buffer, options) {
3565
3747
  const pageHeights = /* @__PURE__ */ new Map();
3566
3748
  const pagesWithLargeImage = /* @__PURE__ */ new Set();
3567
3749
  const skippedImagePages = /* @__PURE__ */ new Map();
3750
+ const imageState = createPdfImageState();
3751
+ const extractedImages = [];
3752
+ const pageImageBlocks = /* @__PURE__ */ new Map();
3568
3753
  let parsedPages = 0;
3569
3754
  for (let i = 1; i <= effectivePageCount; i++) {
3570
3755
  if (pageFilter && !pageFilter.has(i)) continue;
@@ -3602,6 +3787,12 @@ async function parsePdfDocument(buffer, options) {
3602
3787
  }
3603
3788
  const pageBlocks = extractPageBlocksWithLines(visible, i, opList, viewport.width, viewport.height);
3604
3789
  for (const b of pageBlocks) blocks.push(b);
3790
+ try {
3791
+ const { blocks: imgBlocks, images: pageImages } = await extractPageImages(page, opList.fnArray, opList.argsArray, i, imageState, warnings);
3792
+ if (imgBlocks.length > 0) pageImageBlocks.set(i, imgBlocks);
3793
+ extractedImages.push(...pageImages);
3794
+ } catch {
3795
+ }
3605
3796
  let pageText = "";
3606
3797
  for (const b of pageBlocks) {
3607
3798
  const t = b.text || "";
@@ -3623,11 +3814,11 @@ async function parsePdfDocument(buffer, options) {
3623
3814
  if (totalChars / Math.max(parsedPageCount, 1) < 10) {
3624
3815
  if (options?.ocr) {
3625
3816
  try {
3626
- const { ocrPages } = await import("./provider-H4WWSPOV.js");
3817
+ const { ocrPages } = await import("./provider-4ZJKV3DC.js");
3627
3818
  const ocrBlocks = await ocrPages(doc, options.ocr, pageFilter, effectivePageCount);
3628
3819
  if (ocrBlocks.length > 0) {
3629
3820
  const ocrMarkdown = ocrBlocks.map((b) => b.text || "").filter(Boolean).join("\n\n");
3630
- return { markdown: ocrMarkdown, blocks: ocrBlocks, metadata, warnings, isImageBased: true, pageQuality, qualitySummary: summarizeDocumentQuality(pageQuality) };
3821
+ return { markdown: ocrMarkdown, blocks: ocrBlocks, metadata, warnings, isImageBased: true, pageQuality, qualitySummary: summarizeDocumentQuality(pageQuality), images: extractedImages.length > 0 ? extractedImages : void 0 };
3631
3822
  }
3632
3823
  } catch {
3633
3824
  }
@@ -3643,7 +3834,8 @@ async function parsePdfDocument(buffer, options) {
3643
3834
  low_text: "\uD14D\uC2A4\uD2B8\uAC00 \uAC70\uC758 \uC5C6\uB294 \uD398\uC774\uC9C0 (\uC2A4\uCE94/\uC774\uBBF8\uC9C0 \uCD94\uC815)",
3644
3835
  high_pua: "\uAE00\uAF34 \uB9E4\uD551 \uC2E4\uD328 (PUA \uBE44\uC728 \uB192\uC74C) \u2014 \uCD94\uCD9C \uD14D\uC2A4\uD2B8 \uC2E0\uB8B0 \uBD88\uAC00",
3645
3836
  high_control: "\uC81C\uC5B4\uBB38\uC790 \uBE44\uC728 \uB192\uC74C \u2014 \uCD94\uCD9C \uD14D\uC2A4\uD2B8 \uC2E0\uB8B0 \uBD88\uAC00",
3646
- high_replacement: "\uB300\uCCB4\uBB38\uC790(U+FFFD) \uBE44\uC728 \uB192\uC74C \u2014 \uCD94\uCD9C \uD14D\uC2A4\uD2B8 \uC2E0\uB8B0 \uBD88\uAC00"
3837
+ high_replacement: "\uB300\uCCB4\uBB38\uC790(U+FFFD) \uBE44\uC728 \uB192\uC74C \u2014 \uCD94\uCD9C \uD14D\uC2A4\uD2B8 \uC2E0\uB8B0 \uBD88\uAC00",
3838
+ garbled_hangul: "\uAE00\uAF34 \uB9E4\uD551 \uC2E4\uD328 (\uD55C\uAE00 \uC790\uC18C \uBD84\uD3EC \uC774\uC0C1) \u2014 \uCD94\uCD9C \uD14D\uC2A4\uD2B8\uAC00 \uAE68\uC84C\uC744 \uC218 \uC788\uC74C"
3647
3839
  };
3648
3840
  for (const pq of pageQuality) {
3649
3841
  if (!pq.needsOcr || !pq.ocrReason) continue;
@@ -3663,6 +3855,7 @@ async function parsePdfDocument(buffer, options) {
3663
3855
  }
3664
3856
  }
3665
3857
  mergeCrossPageTables(blocks);
3858
+ injectPageImageBlocks(blocks, pageImageBlocks);
3666
3859
  if (options?.formulaOcr && formulaBuffer) {
3667
3860
  try {
3668
3861
  await applyFormulaOcr(formulaBuffer, blocks, pageFilter, effectivePageCount, warnings, options.onProgress);
@@ -3691,7 +3884,8 @@ async function parsePdfDocument(buffer, options) {
3691
3884
  warnings: warnings.length > 0 ? warnings : void 0,
3692
3885
  isImageBased: isImageBased || void 0,
3693
3886
  pageQuality,
3694
- qualitySummary: summarizeDocumentQuality(pageQuality)
3887
+ qualitySummary: summarizeDocumentQuality(pageQuality),
3888
+ images: extractedImages.length > 0 ? extractedImages : void 0
3695
3889
  };
3696
3890
  } finally {
3697
3891
  await doc.destroy().catch(() => {
@@ -3741,4 +3935,4 @@ export {
3741
3935
  parsePdfDocument,
3742
3936
  removeHeaderFooterBlocks
3743
3937
  };
3744
- //# sourceMappingURL=parser-DMKHIV4E.js.map
3938
+ //# sourceMappingURL=parser-KMMUS73Q.js.map