@superdoc-dev/cli 0.3.0-next.3 → 0.3.0-next.5
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.
- package/dist/index.js +691 -604
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -131315,7 +131315,7 @@ var init_remark_gfm_CjV8kaUy_es = __esm(() => {
|
|
|
131315
131315
|
init_remark_gfm_z_sDF4ss_es();
|
|
131316
131316
|
});
|
|
131317
131317
|
|
|
131318
|
-
// ../../packages/superdoc/dist/chunks/src-
|
|
131318
|
+
// ../../packages/superdoc/dist/chunks/src-BQ8I1JWL.es.js
|
|
131319
131319
|
function deleteProps(obj, propOrProps) {
|
|
131320
131320
|
const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
|
|
131321
131321
|
const removeNested = (target, pathParts, index2 = 0) => {
|
|
@@ -139169,9 +139169,17 @@ function extractColumns(elements) {
|
|
|
139169
139169
|
const cols = elements.find((el) => el?.name === "w:cols");
|
|
139170
139170
|
if (!cols?.attributes)
|
|
139171
139171
|
return;
|
|
139172
|
+
const count = parseColumnCount(cols.attributes["w:num"]);
|
|
139173
|
+
const equalWidthRaw = cols.attributes["w:equalWidth"];
|
|
139174
|
+
const equalWidth = equalWidthRaw === "0" || equalWidthRaw === 0 || equalWidthRaw === false ? false : equalWidthRaw === "1" || equalWidthRaw === 1 || equalWidthRaw === true ? true : undefined;
|
|
139175
|
+
const columnChildren = Array.isArray(cols.elements) ? cols.elements.filter((child) => child?.name === "w:col") : [];
|
|
139176
|
+
const gapInches = parseColumnGap(cols.attributes["w:space"] ?? columnChildren.find((child) => child?.attributes?.["w:space"] != null)?.attributes?.["w:space"]);
|
|
139177
|
+
const widths = columnChildren.map((child) => Number(child.attributes?.["w:w"])).filter((widthTwips) => Number.isFinite(widthTwips) && widthTwips > 0).map((widthTwips) => widthTwips / 1440 * PX_PER_INCH$2);
|
|
139172
139178
|
return {
|
|
139173
|
-
count
|
|
139174
|
-
gap:
|
|
139179
|
+
count,
|
|
139180
|
+
gap: gapInches * PX_PER_INCH$2,
|
|
139181
|
+
...widths.length > 0 ? { widths } : {},
|
|
139182
|
+
...equalWidth !== undefined ? { equalWidth } : {}
|
|
139175
139183
|
};
|
|
139176
139184
|
}
|
|
139177
139185
|
function extractVerticalAlign(elements) {
|
|
@@ -139222,6 +139230,512 @@ function extractSectionData(para) {
|
|
|
139222
139230
|
vAlign
|
|
139223
139231
|
};
|
|
139224
139232
|
}
|
|
139233
|
+
function computeTabStops$1(context) {
|
|
139234
|
+
const { explicitStops, defaultTabInterval, paragraphIndent } = context;
|
|
139235
|
+
const leftIndent = paragraphIndent.left ?? 0;
|
|
139236
|
+
const hanging = paragraphIndent.hanging ?? 0;
|
|
139237
|
+
const effectiveMinIndent = Math.max(0, leftIndent - hanging);
|
|
139238
|
+
const clearPositions = explicitStops.filter((stop) => stop.val === "clear").map((stop) => stop.pos);
|
|
139239
|
+
const filteredExplicitStops = explicitStops.filter((stop) => stop.val !== "clear").filter((stop) => stop.pos >= effectiveMinIndent);
|
|
139240
|
+
const maxExplicit = filteredExplicitStops.reduce((max$2, stop) => Math.max(max$2, stop.pos), 0);
|
|
139241
|
+
const hasExplicit = filteredExplicitStops.length > 0;
|
|
139242
|
+
const stops = [...filteredExplicitStops];
|
|
139243
|
+
const defaultStart = hasExplicit ? Math.max(maxExplicit, leftIndent) : 0;
|
|
139244
|
+
let pos = defaultStart;
|
|
139245
|
+
const targetLimit = Math.max(defaultStart, leftIndent) + 14400;
|
|
139246
|
+
while (pos < targetLimit) {
|
|
139247
|
+
pos += defaultTabInterval;
|
|
139248
|
+
const hasExplicitStop = filteredExplicitStops.some((s2) => Math.abs(s2.pos - pos) < 20);
|
|
139249
|
+
const hasClearStop = clearPositions.some((clearPos) => Math.abs(clearPos - pos) < 20);
|
|
139250
|
+
if (!hasExplicitStop && !hasClearStop && pos >= leftIndent)
|
|
139251
|
+
stops.push({
|
|
139252
|
+
val: "start",
|
|
139253
|
+
pos,
|
|
139254
|
+
leader: "none"
|
|
139255
|
+
});
|
|
139256
|
+
}
|
|
139257
|
+
return stops.sort((a2, b$1) => a2.pos - b$1.pos);
|
|
139258
|
+
}
|
|
139259
|
+
function layoutWithTabs(runs2, stops, lineWidth, options = {}) {
|
|
139260
|
+
const result = [];
|
|
139261
|
+
let currentX = 0;
|
|
139262
|
+
let currentStopIndex = 0;
|
|
139263
|
+
let pendingDecimalStop;
|
|
139264
|
+
let pendingCenterStop;
|
|
139265
|
+
let pendingEndStop;
|
|
139266
|
+
const decimalSeparator = options.decimalSeparator ?? ".";
|
|
139267
|
+
for (const entry of runs2) {
|
|
139268
|
+
const { run: run2, width, isTab } = entry;
|
|
139269
|
+
if (isTab) {
|
|
139270
|
+
while (currentStopIndex < stops.length && stops[currentStopIndex].pos <= currentX)
|
|
139271
|
+
currentStopIndex++;
|
|
139272
|
+
if (currentStopIndex < stops.length) {
|
|
139273
|
+
const stop = stops[currentStopIndex];
|
|
139274
|
+
result.push({
|
|
139275
|
+
run: run2,
|
|
139276
|
+
x: currentX,
|
|
139277
|
+
width: 0,
|
|
139278
|
+
tabStop: stop
|
|
139279
|
+
});
|
|
139280
|
+
currentX = stop.pos;
|
|
139281
|
+
pendingDecimalStop = stop.val === "decimal" ? stop : undefined;
|
|
139282
|
+
pendingCenterStop = stop.val === "center" ? stop : undefined;
|
|
139283
|
+
pendingEndStop = stop.val === "end" ? stop : undefined;
|
|
139284
|
+
currentStopIndex++;
|
|
139285
|
+
} else {
|
|
139286
|
+
result.push({
|
|
139287
|
+
run: run2,
|
|
139288
|
+
x: currentX,
|
|
139289
|
+
width
|
|
139290
|
+
});
|
|
139291
|
+
currentX += width;
|
|
139292
|
+
pendingDecimalStop = undefined;
|
|
139293
|
+
pendingCenterStop = undefined;
|
|
139294
|
+
pendingEndStop = undefined;
|
|
139295
|
+
}
|
|
139296
|
+
} else {
|
|
139297
|
+
if (pendingDecimalStop) {
|
|
139298
|
+
currentX = computeDecimalAlignedX(entry, pendingDecimalStop, options, decimalSeparator);
|
|
139299
|
+
pendingDecimalStop = undefined;
|
|
139300
|
+
} else if (pendingCenterStop) {
|
|
139301
|
+
currentX = computeCenterAlignedX(entry, pendingCenterStop);
|
|
139302
|
+
pendingCenterStop = undefined;
|
|
139303
|
+
} else if (pendingEndStop) {
|
|
139304
|
+
currentX = computeEndAlignedX(entry, pendingEndStop);
|
|
139305
|
+
pendingEndStop = undefined;
|
|
139306
|
+
}
|
|
139307
|
+
result.push({
|
|
139308
|
+
run: run2,
|
|
139309
|
+
x: currentX,
|
|
139310
|
+
width
|
|
139311
|
+
});
|
|
139312
|
+
currentX += width;
|
|
139313
|
+
}
|
|
139314
|
+
}
|
|
139315
|
+
return result;
|
|
139316
|
+
}
|
|
139317
|
+
function computeDecimalAlignedX(entry, stop, options, separator) {
|
|
139318
|
+
const text5 = entry.text ?? "";
|
|
139319
|
+
const decimalIndex = text5.indexOf(separator);
|
|
139320
|
+
if (decimalIndex <= 0)
|
|
139321
|
+
return stop.pos;
|
|
139322
|
+
const beforeText = text5.slice(0, decimalIndex);
|
|
139323
|
+
let beforeWidth;
|
|
139324
|
+
if (options.measureTextWidth)
|
|
139325
|
+
beforeWidth = options.measureTextWidth(entry.run, beforeText);
|
|
139326
|
+
else if (text5.length > 0)
|
|
139327
|
+
beforeWidth = entry.width * decimalIndex / text5.length;
|
|
139328
|
+
else
|
|
139329
|
+
beforeWidth = 0;
|
|
139330
|
+
const targetX = stop.pos - beforeWidth;
|
|
139331
|
+
return targetX < 0 ? 0 : targetX;
|
|
139332
|
+
}
|
|
139333
|
+
function computeCenterAlignedX(entry, stop) {
|
|
139334
|
+
const width = entry.width;
|
|
139335
|
+
const targetX = stop.pos - width / 2;
|
|
139336
|
+
return targetX < 0 ? 0 : targetX;
|
|
139337
|
+
}
|
|
139338
|
+
function computeEndAlignedX(entry, stop) {
|
|
139339
|
+
const width = entry.width;
|
|
139340
|
+
const targetX = stop.pos - width;
|
|
139341
|
+
return targetX < 0 ? 0 : targetX;
|
|
139342
|
+
}
|
|
139343
|
+
function calculateTabWidth(params$1) {
|
|
139344
|
+
const { currentX, tabStops, paragraphWidth, defaultTabDistance: defaultTabDistance$1, defaultLineLength: defaultLineLength$1, followingText = "", measureText: measureText$1, decimalSeparator = "." } = params$1;
|
|
139345
|
+
const nextStop = tabStops.find((stop) => stop.val !== "clear" && stop.pos > currentX);
|
|
139346
|
+
const fallbackWidth = () => {
|
|
139347
|
+
let tabWidth = defaultTabDistance$1 - currentX % defaultLineLength$1 % defaultTabDistance$1;
|
|
139348
|
+
if (tabWidth <= 0)
|
|
139349
|
+
tabWidth = defaultTabDistance$1;
|
|
139350
|
+
return {
|
|
139351
|
+
width: tabWidth,
|
|
139352
|
+
alignment: "default",
|
|
139353
|
+
tabStopPosUsed: "default"
|
|
139354
|
+
};
|
|
139355
|
+
};
|
|
139356
|
+
if (!nextStop)
|
|
139357
|
+
return fallbackWidth();
|
|
139358
|
+
let width = Math.min(nextStop.pos, paragraphWidth) - currentX;
|
|
139359
|
+
const alignment$1 = nextStop.val;
|
|
139360
|
+
if (alignment$1 === "bar")
|
|
139361
|
+
return {
|
|
139362
|
+
width: 0,
|
|
139363
|
+
leader: nextStop.leader,
|
|
139364
|
+
alignment: alignment$1,
|
|
139365
|
+
tabStopPosUsed: nextStop.pos
|
|
139366
|
+
};
|
|
139367
|
+
if (alignment$1 === "center" || alignment$1 === "end") {
|
|
139368
|
+
const textWidth = measureText$1 ? measureText$1(followingText) : 0;
|
|
139369
|
+
if (alignment$1 === "center")
|
|
139370
|
+
width -= textWidth / 2;
|
|
139371
|
+
else
|
|
139372
|
+
width -= textWidth;
|
|
139373
|
+
} else if (alignment$1 === "decimal") {
|
|
139374
|
+
const decimalIndex = followingText.indexOf(decimalSeparator);
|
|
139375
|
+
if (decimalIndex >= 0) {
|
|
139376
|
+
const before = followingText.slice(0, decimalIndex);
|
|
139377
|
+
const beforeWidth = measureText$1 ? measureText$1(before) : 0;
|
|
139378
|
+
width -= beforeWidth;
|
|
139379
|
+
}
|
|
139380
|
+
}
|
|
139381
|
+
if (width < 1)
|
|
139382
|
+
return fallbackWidth();
|
|
139383
|
+
return {
|
|
139384
|
+
width,
|
|
139385
|
+
leader: nextStop.leader,
|
|
139386
|
+
alignment: alignment$1,
|
|
139387
|
+
tabStopPosUsed: nextStop.pos
|
|
139388
|
+
};
|
|
139389
|
+
}
|
|
139390
|
+
function resolveColumnWidths(columns, availableWidth) {
|
|
139391
|
+
const width = availableWidth / columns.length;
|
|
139392
|
+
return columns.map(() => width);
|
|
139393
|
+
}
|
|
139394
|
+
function measureRowHeights(cells, _columnWidths) {
|
|
139395
|
+
return cells.map(() => 20);
|
|
139396
|
+
}
|
|
139397
|
+
function effectiveTableCellSpacing(spacing, isBoundary, padding) {
|
|
139398
|
+
if (typeof spacing !== "number" || spacing <= 0)
|
|
139399
|
+
return 0;
|
|
139400
|
+
return isBoundary ? Math.max(0, spacing - padding) : spacing;
|
|
139401
|
+
}
|
|
139402
|
+
function shouldApplyJustify(params$1) {
|
|
139403
|
+
const { alignment: alignment$1, hasExplicitPositioning, isLastLineOfParagraph, paragraphEndsWithLineBreak, skipJustifyOverride } = params$1;
|
|
139404
|
+
if (alignment$1 !== "justify" && alignment$1 !== "both")
|
|
139405
|
+
return false;
|
|
139406
|
+
if (skipJustifyOverride === true)
|
|
139407
|
+
return false;
|
|
139408
|
+
if (hasExplicitPositioning)
|
|
139409
|
+
return false;
|
|
139410
|
+
if (isLastLineOfParagraph && !paragraphEndsWithLineBreak)
|
|
139411
|
+
return false;
|
|
139412
|
+
return true;
|
|
139413
|
+
}
|
|
139414
|
+
function calculateJustifySpacing(params$1) {
|
|
139415
|
+
const { lineWidth, availableWidth, spaceCount, shouldJustify } = params$1;
|
|
139416
|
+
if (!shouldJustify)
|
|
139417
|
+
return 0;
|
|
139418
|
+
if (spaceCount <= 0)
|
|
139419
|
+
return 0;
|
|
139420
|
+
return (availableWidth - lineWidth) / spaceCount;
|
|
139421
|
+
}
|
|
139422
|
+
function parseInsetClipPathForScale(clipPath) {
|
|
139423
|
+
const m$1 = clipPath.trim().match(/^inset\(\s*(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s*\)$/);
|
|
139424
|
+
if (!m$1)
|
|
139425
|
+
return null;
|
|
139426
|
+
const top$1 = Number(m$1[1]);
|
|
139427
|
+
const right$1 = Number(m$1[2]);
|
|
139428
|
+
const bottom$1 = Number(m$1[3]);
|
|
139429
|
+
const left$1 = Number(m$1[4]);
|
|
139430
|
+
if (![
|
|
139431
|
+
top$1,
|
|
139432
|
+
right$1,
|
|
139433
|
+
bottom$1,
|
|
139434
|
+
left$1
|
|
139435
|
+
].every(Number.isFinite))
|
|
139436
|
+
return null;
|
|
139437
|
+
const visibleW = 100 - left$1 - right$1;
|
|
139438
|
+
const visibleH = 100 - top$1 - bottom$1;
|
|
139439
|
+
if (visibleW <= 0 || visibleH <= 0)
|
|
139440
|
+
return null;
|
|
139441
|
+
const scaleX = 100 / visibleW;
|
|
139442
|
+
const scaleY = 100 / visibleH;
|
|
139443
|
+
return {
|
|
139444
|
+
scaleX,
|
|
139445
|
+
scaleY,
|
|
139446
|
+
translateX: -left$1 * scaleX,
|
|
139447
|
+
translateY: -top$1 * scaleY
|
|
139448
|
+
};
|
|
139449
|
+
}
|
|
139450
|
+
function formatInsetClipPathTransform(clipPath) {
|
|
139451
|
+
const scale = parseInsetClipPathForScale(clipPath);
|
|
139452
|
+
if (!scale)
|
|
139453
|
+
return;
|
|
139454
|
+
return `transform-origin: 0 0; transform: translate(${scale.translateX}%, ${scale.translateY}%) scale(${scale.scaleX}, ${scale.scaleY});`;
|
|
139455
|
+
}
|
|
139456
|
+
function computeLinePmRange$1(block, line) {
|
|
139457
|
+
if (!line)
|
|
139458
|
+
return {};
|
|
139459
|
+
if (block.kind !== "paragraph")
|
|
139460
|
+
return {};
|
|
139461
|
+
let pmStart;
|
|
139462
|
+
let pmEnd;
|
|
139463
|
+
for (let runIndex = line.fromRun;runIndex <= line.toRun; runIndex += 1) {
|
|
139464
|
+
const run2 = block.runs[runIndex];
|
|
139465
|
+
if (!run2)
|
|
139466
|
+
continue;
|
|
139467
|
+
const runPmStart = coercePmStart(run2);
|
|
139468
|
+
if (runPmStart == null)
|
|
139469
|
+
continue;
|
|
139470
|
+
if (isAtomicRunKind(run2.kind) || isImageLikeRun(run2)) {
|
|
139471
|
+
const runPmEnd = coercePmEnd(run2) ?? runPmStart + 1;
|
|
139472
|
+
if (pmStart == null)
|
|
139473
|
+
pmStart = runPmStart;
|
|
139474
|
+
pmEnd = runPmEnd;
|
|
139475
|
+
continue;
|
|
139476
|
+
}
|
|
139477
|
+
const runLength = coerceRunText(run2).length;
|
|
139478
|
+
const isFirstRun = runIndex === line.fromRun;
|
|
139479
|
+
const isLastRun = runIndex === line.toRun;
|
|
139480
|
+
const startOffset = isFirstRun ? line.fromChar : 0;
|
|
139481
|
+
const endOffset = isLastRun ? line.toChar : runLength;
|
|
139482
|
+
const sliceStart = runPmStart + startOffset;
|
|
139483
|
+
const sliceEnd = runPmStart + endOffset;
|
|
139484
|
+
if (pmStart == null)
|
|
139485
|
+
pmStart = sliceStart;
|
|
139486
|
+
pmEnd = sliceEnd;
|
|
139487
|
+
}
|
|
139488
|
+
return {
|
|
139489
|
+
pmStart,
|
|
139490
|
+
pmEnd
|
|
139491
|
+
};
|
|
139492
|
+
}
|
|
139493
|
+
function computeFragmentPmRange$1(block, lines, fromLine, toLine) {
|
|
139494
|
+
let pmStart;
|
|
139495
|
+
let pmEnd;
|
|
139496
|
+
for (let index2 = fromLine;index2 < toLine; index2 += 1) {
|
|
139497
|
+
const line = lines[index2];
|
|
139498
|
+
if (!line)
|
|
139499
|
+
continue;
|
|
139500
|
+
const range = computeLinePmRange$1(block, line);
|
|
139501
|
+
if (range.pmStart != null && pmStart == null)
|
|
139502
|
+
pmStart = range.pmStart;
|
|
139503
|
+
if (range.pmEnd != null)
|
|
139504
|
+
pmEnd = range.pmEnd;
|
|
139505
|
+
}
|
|
139506
|
+
return {
|
|
139507
|
+
pmStart,
|
|
139508
|
+
pmEnd
|
|
139509
|
+
};
|
|
139510
|
+
}
|
|
139511
|
+
function widthsEqual(a2, b$1) {
|
|
139512
|
+
if (!a2 && !b$1)
|
|
139513
|
+
return true;
|
|
139514
|
+
if (!a2 || !b$1)
|
|
139515
|
+
return false;
|
|
139516
|
+
if (a2.length !== b$1.length)
|
|
139517
|
+
return false;
|
|
139518
|
+
for (let i$1 = 0;i$1 < a2.length; i$1 += 1)
|
|
139519
|
+
if (a2[i$1] !== b$1[i$1])
|
|
139520
|
+
return false;
|
|
139521
|
+
return true;
|
|
139522
|
+
}
|
|
139523
|
+
function cloneColumnLayout(columns) {
|
|
139524
|
+
return columns ? {
|
|
139525
|
+
count: columns.count,
|
|
139526
|
+
gap: columns.gap,
|
|
139527
|
+
...Array.isArray(columns.widths) ? { widths: [...columns.widths] } : {},
|
|
139528
|
+
...columns.equalWidth !== undefined ? { equalWidth: columns.equalWidth } : {}
|
|
139529
|
+
} : {
|
|
139530
|
+
count: 1,
|
|
139531
|
+
gap: 0
|
|
139532
|
+
};
|
|
139533
|
+
}
|
|
139534
|
+
function normalizeColumnLayout(input2, contentWidth, epsilon = 0.0001) {
|
|
139535
|
+
const rawCount = input2 && Number.isFinite(input2.count) ? Math.floor(input2.count) : 1;
|
|
139536
|
+
const count = Math.max(1, rawCount || 1);
|
|
139537
|
+
const gap = Math.max(0, input2?.gap ?? 0);
|
|
139538
|
+
const availableWidth = contentWidth - gap * (count - 1);
|
|
139539
|
+
const explicitWidths = Array.isArray(input2?.widths) && input2.widths.length > 0 ? input2.widths.filter((width$1) => typeof width$1 === "number" && Number.isFinite(width$1) && width$1 > 0) : [];
|
|
139540
|
+
let widths = explicitWidths.length > 0 ? explicitWidths.slice(0, count) : Array.from({ length: count }, () => availableWidth > 0 ? availableWidth / count : contentWidth);
|
|
139541
|
+
if (widths.length < count) {
|
|
139542
|
+
const remaining = Math.max(0, availableWidth - widths.reduce((sum, width$1) => sum + width$1, 0));
|
|
139543
|
+
const fallbackWidth = count - widths.length > 0 ? remaining / (count - widths.length) : 0;
|
|
139544
|
+
widths.push(...Array.from({ length: count - widths.length }, () => fallbackWidth));
|
|
139545
|
+
}
|
|
139546
|
+
const totalExplicitWidth = widths.reduce((sum, width$1) => sum + width$1, 0);
|
|
139547
|
+
if (availableWidth > 0 && totalExplicitWidth > 0) {
|
|
139548
|
+
const scale = availableWidth / totalExplicitWidth;
|
|
139549
|
+
widths = widths.map((width$1) => Math.max(1, width$1 * scale));
|
|
139550
|
+
}
|
|
139551
|
+
const width = widths.reduce((max$2, value) => Math.max(max$2, value), 0);
|
|
139552
|
+
if (!Number.isFinite(width) || width <= epsilon)
|
|
139553
|
+
return {
|
|
139554
|
+
count: 1,
|
|
139555
|
+
gap: 0,
|
|
139556
|
+
width: Math.max(0, contentWidth)
|
|
139557
|
+
};
|
|
139558
|
+
return {
|
|
139559
|
+
count,
|
|
139560
|
+
gap,
|
|
139561
|
+
...widths.length > 0 ? { widths } : {},
|
|
139562
|
+
...input2?.equalWidth !== undefined ? { equalWidth: input2.equalWidth } : {},
|
|
139563
|
+
width
|
|
139564
|
+
};
|
|
139565
|
+
}
|
|
139566
|
+
function resolveSpacingIndent(style2, numbering) {
|
|
139567
|
+
const spacing = {
|
|
139568
|
+
before: style2.spacing?.before ?? 0,
|
|
139569
|
+
after: style2.spacing?.after ?? 0,
|
|
139570
|
+
line: style2.spacing?.line ?? 12,
|
|
139571
|
+
lineRule: style2.spacing?.lineRule ?? "auto"
|
|
139572
|
+
};
|
|
139573
|
+
let indent2 = {
|
|
139574
|
+
left: style2.indent?.left ?? 0,
|
|
139575
|
+
right: style2.indent?.right ?? 0,
|
|
139576
|
+
firstLine: style2.indent?.firstLine ?? 0,
|
|
139577
|
+
hanging: style2.indent?.hanging ?? 0
|
|
139578
|
+
};
|
|
139579
|
+
if (numbering?.indent)
|
|
139580
|
+
indent2 = {
|
|
139581
|
+
...indent2,
|
|
139582
|
+
left: numbering.indent.left ?? indent2.left,
|
|
139583
|
+
hanging: numbering.indent.hanging ?? indent2.hanging
|
|
139584
|
+
};
|
|
139585
|
+
return {
|
|
139586
|
+
spacing,
|
|
139587
|
+
indent: indent2
|
|
139588
|
+
};
|
|
139589
|
+
}
|
|
139590
|
+
function formatListLabel(level, indices) {
|
|
139591
|
+
const { format, text: template, start: start$1 } = level;
|
|
139592
|
+
if (format === "bullet" || format === "custom")
|
|
139593
|
+
return {
|
|
139594
|
+
text: template,
|
|
139595
|
+
width: estimateTextWidth(template)
|
|
139596
|
+
};
|
|
139597
|
+
let result = template;
|
|
139598
|
+
for (let i$1 = 0;i$1 < indices.length; i$1++) {
|
|
139599
|
+
const placeholder = `%${i$1 + 1}`;
|
|
139600
|
+
if (result.includes(placeholder)) {
|
|
139601
|
+
const formattedNum = formatNumber(indices[i$1] + start$1 - 1, format);
|
|
139602
|
+
result = result.replace(placeholder, formattedNum);
|
|
139603
|
+
}
|
|
139604
|
+
}
|
|
139605
|
+
return {
|
|
139606
|
+
text: result,
|
|
139607
|
+
width: estimateTextWidth(result)
|
|
139608
|
+
};
|
|
139609
|
+
}
|
|
139610
|
+
function computeListIndent(level) {
|
|
139611
|
+
const { indent: indent2 } = level;
|
|
139612
|
+
return {
|
|
139613
|
+
labelWidth: Math.abs(indent2.hanging),
|
|
139614
|
+
hangingIndent: indent2.hanging,
|
|
139615
|
+
firstLineIndent: indent2.left - Math.abs(indent2.hanging)
|
|
139616
|
+
};
|
|
139617
|
+
}
|
|
139618
|
+
function formatNumber(num, format) {
|
|
139619
|
+
switch (format) {
|
|
139620
|
+
case "decimal":
|
|
139621
|
+
return num.toString();
|
|
139622
|
+
case "lowerLetter":
|
|
139623
|
+
return toLetter(num, false);
|
|
139624
|
+
case "upperLetter":
|
|
139625
|
+
return toLetter(num, true);
|
|
139626
|
+
case "lowerRoman":
|
|
139627
|
+
return toRoman(num).toLowerCase();
|
|
139628
|
+
case "upperRoman":
|
|
139629
|
+
return toRoman(num);
|
|
139630
|
+
default:
|
|
139631
|
+
return num.toString();
|
|
139632
|
+
}
|
|
139633
|
+
}
|
|
139634
|
+
function toLetter(num, uppercase) {
|
|
139635
|
+
let result = "";
|
|
139636
|
+
let n = num;
|
|
139637
|
+
while (n > 0) {
|
|
139638
|
+
const remainder = (n - 1) % 26;
|
|
139639
|
+
result = String.fromCharCode((uppercase ? 65 : 97) + remainder) + result;
|
|
139640
|
+
n = Math.floor((n - 1) / 26);
|
|
139641
|
+
}
|
|
139642
|
+
return result || (uppercase ? "A" : "a");
|
|
139643
|
+
}
|
|
139644
|
+
function toRoman(num) {
|
|
139645
|
+
const lookup3 = [
|
|
139646
|
+
[1000, "M"],
|
|
139647
|
+
[900, "CM"],
|
|
139648
|
+
[500, "D"],
|
|
139649
|
+
[400, "CD"],
|
|
139650
|
+
[100, "C"],
|
|
139651
|
+
[90, "XC"],
|
|
139652
|
+
[50, "L"],
|
|
139653
|
+
[40, "XL"],
|
|
139654
|
+
[10, "X"],
|
|
139655
|
+
[9, "IX"],
|
|
139656
|
+
[5, "V"],
|
|
139657
|
+
[4, "IV"],
|
|
139658
|
+
[1, "I"]
|
|
139659
|
+
];
|
|
139660
|
+
let result = "";
|
|
139661
|
+
let remaining = num;
|
|
139662
|
+
for (const [value, numeral] of lookup3)
|
|
139663
|
+
while (remaining >= value) {
|
|
139664
|
+
result += numeral;
|
|
139665
|
+
remaining -= value;
|
|
139666
|
+
}
|
|
139667
|
+
return result;
|
|
139668
|
+
}
|
|
139669
|
+
function estimateTextWidth(text5) {
|
|
139670
|
+
return text5.length * 7;
|
|
139671
|
+
}
|
|
139672
|
+
function scaleWrapPolygon(ooxml, imageRect) {
|
|
139673
|
+
if (!ooxml || ooxml.length === 0)
|
|
139674
|
+
return [];
|
|
139675
|
+
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
139676
|
+
for (const [x, y$1] of ooxml) {
|
|
139677
|
+
minX = Math.min(minX, x);
|
|
139678
|
+
minY = Math.min(minY, y$1);
|
|
139679
|
+
maxX = Math.max(maxX, x);
|
|
139680
|
+
maxY = Math.max(maxY, y$1);
|
|
139681
|
+
}
|
|
139682
|
+
const ooxmlWidth = maxX - minX;
|
|
139683
|
+
const ooxmlHeight = maxY - minY;
|
|
139684
|
+
if (ooxmlWidth === 0 || ooxmlHeight === 0)
|
|
139685
|
+
return [];
|
|
139686
|
+
const scaleX = imageRect.width / ooxmlWidth;
|
|
139687
|
+
const scaleY = imageRect.height / ooxmlHeight;
|
|
139688
|
+
return ooxml.map(([x, y$1]) => [imageRect.x + (x - minX) * scaleX, imageRect.y + (y$1 - minY) * scaleY]);
|
|
139689
|
+
}
|
|
139690
|
+
function computeWrapExclusion(image2, lineY, lineHeight) {
|
|
139691
|
+
const { rect, wrap: wrap4 } = image2;
|
|
139692
|
+
const top$1 = rect.y - (wrap4.distTop ?? 0);
|
|
139693
|
+
const bottom$1 = rect.y + rect.height + (wrap4.distBottom ?? 0);
|
|
139694
|
+
const left$1 = rect.x - (wrap4.distLeft ?? 0);
|
|
139695
|
+
const right$1 = rect.x + rect.width + (wrap4.distRight ?? 0);
|
|
139696
|
+
if (lineY + lineHeight <= top$1 || lineY >= bottom$1)
|
|
139697
|
+
return null;
|
|
139698
|
+
switch (wrap4.type) {
|
|
139699
|
+
case "None":
|
|
139700
|
+
return null;
|
|
139701
|
+
case "TopAndBottom":
|
|
139702
|
+
return null;
|
|
139703
|
+
case "Square":
|
|
139704
|
+
return {
|
|
139705
|
+
left: left$1,
|
|
139706
|
+
right: right$1
|
|
139707
|
+
};
|
|
139708
|
+
case "Tight":
|
|
139709
|
+
case "Through": {
|
|
139710
|
+
if (!wrap4.polygon || wrap4.polygon.length === 0)
|
|
139711
|
+
return {
|
|
139712
|
+
left: left$1,
|
|
139713
|
+
right: right$1
|
|
139714
|
+
};
|
|
139715
|
+
const polygon = wrap4.polygon;
|
|
139716
|
+
const midY = lineY + lineHeight / 2;
|
|
139717
|
+
let polyLeft = Infinity;
|
|
139718
|
+
let polyRight = -Infinity;
|
|
139719
|
+
for (let i$1 = 0;i$1 < polygon.length; i$1++) {
|
|
139720
|
+
const [x1, y1] = polygon[i$1];
|
|
139721
|
+
const [x2, y2] = polygon[(i$1 + 1) % polygon.length];
|
|
139722
|
+
if (midY >= Math.min(y1, y2) && midY <= Math.max(y1, y2)) {
|
|
139723
|
+
const x = x1 + (midY - y1) / (y2 - y1) * (x2 - x1);
|
|
139724
|
+
polyLeft = Math.min(polyLeft, x);
|
|
139725
|
+
polyRight = Math.max(polyRight, x);
|
|
139726
|
+
}
|
|
139727
|
+
}
|
|
139728
|
+
if (polyLeft === Infinity || polyRight === -Infinity)
|
|
139729
|
+
return null;
|
|
139730
|
+
return {
|
|
139731
|
+
left: polyLeft - (wrap4.distLeft ?? 0),
|
|
139732
|
+
right: polyRight + (wrap4.distRight ?? 0)
|
|
139733
|
+
};
|
|
139734
|
+
}
|
|
139735
|
+
default:
|
|
139736
|
+
return null;
|
|
139737
|
+
}
|
|
139738
|
+
}
|
|
139225
139739
|
function isSectPrElement(value) {
|
|
139226
139740
|
return typeof value === "object" && value !== null && value.type === "element" && value.name === "w:sectPr";
|
|
139227
139741
|
}
|
|
@@ -167633,457 +168147,6 @@ function preferFullRestoredWhenPartial(current, previousRanges, doc$2, docSize)
|
|
|
167633
168147
|
return current;
|
|
167634
168148
|
return currentSpan.from >= restoredSpan.from && currentSpan.to <= restoredSpan.to && restoredSpan.to - restoredSpan.from > currentSpan.to - currentSpan.from ? restored : current;
|
|
167635
168149
|
}
|
|
167636
|
-
function computeTabStops$1(context) {
|
|
167637
|
-
const { explicitStops, defaultTabInterval, paragraphIndent } = context;
|
|
167638
|
-
const leftIndent = paragraphIndent.left ?? 0;
|
|
167639
|
-
const hanging = paragraphIndent.hanging ?? 0;
|
|
167640
|
-
const effectiveMinIndent = Math.max(0, leftIndent - hanging);
|
|
167641
|
-
const clearPositions = explicitStops.filter((stop) => stop.val === "clear").map((stop) => stop.pos);
|
|
167642
|
-
const filteredExplicitStops = explicitStops.filter((stop) => stop.val !== "clear").filter((stop) => stop.pos >= effectiveMinIndent);
|
|
167643
|
-
const maxExplicit = filteredExplicitStops.reduce((max$2, stop) => Math.max(max$2, stop.pos), 0);
|
|
167644
|
-
const hasExplicit = filteredExplicitStops.length > 0;
|
|
167645
|
-
const stops = [...filteredExplicitStops];
|
|
167646
|
-
const defaultStart = hasExplicit ? Math.max(maxExplicit, leftIndent) : 0;
|
|
167647
|
-
let pos = defaultStart;
|
|
167648
|
-
const targetLimit = Math.max(defaultStart, leftIndent) + 14400;
|
|
167649
|
-
while (pos < targetLimit) {
|
|
167650
|
-
pos += defaultTabInterval;
|
|
167651
|
-
const hasExplicitStop = filteredExplicitStops.some((s2) => Math.abs(s2.pos - pos) < 20);
|
|
167652
|
-
const hasClearStop = clearPositions.some((clearPos) => Math.abs(clearPos - pos) < 20);
|
|
167653
|
-
if (!hasExplicitStop && !hasClearStop && pos >= leftIndent)
|
|
167654
|
-
stops.push({
|
|
167655
|
-
val: "start",
|
|
167656
|
-
pos,
|
|
167657
|
-
leader: "none"
|
|
167658
|
-
});
|
|
167659
|
-
}
|
|
167660
|
-
return stops.sort((a2, b$1) => a2.pos - b$1.pos);
|
|
167661
|
-
}
|
|
167662
|
-
function layoutWithTabs(runs2, stops, lineWidth, options = {}) {
|
|
167663
|
-
const result = [];
|
|
167664
|
-
let currentX = 0;
|
|
167665
|
-
let currentStopIndex = 0;
|
|
167666
|
-
let pendingDecimalStop;
|
|
167667
|
-
let pendingCenterStop;
|
|
167668
|
-
let pendingEndStop;
|
|
167669
|
-
const decimalSeparator = options.decimalSeparator ?? ".";
|
|
167670
|
-
for (const entry of runs2) {
|
|
167671
|
-
const { run: run2, width, isTab } = entry;
|
|
167672
|
-
if (isTab) {
|
|
167673
|
-
while (currentStopIndex < stops.length && stops[currentStopIndex].pos <= currentX)
|
|
167674
|
-
currentStopIndex++;
|
|
167675
|
-
if (currentStopIndex < stops.length) {
|
|
167676
|
-
const stop = stops[currentStopIndex];
|
|
167677
|
-
result.push({
|
|
167678
|
-
run: run2,
|
|
167679
|
-
x: currentX,
|
|
167680
|
-
width: 0,
|
|
167681
|
-
tabStop: stop
|
|
167682
|
-
});
|
|
167683
|
-
currentX = stop.pos;
|
|
167684
|
-
pendingDecimalStop = stop.val === "decimal" ? stop : undefined;
|
|
167685
|
-
pendingCenterStop = stop.val === "center" ? stop : undefined;
|
|
167686
|
-
pendingEndStop = stop.val === "end" ? stop : undefined;
|
|
167687
|
-
currentStopIndex++;
|
|
167688
|
-
} else {
|
|
167689
|
-
result.push({
|
|
167690
|
-
run: run2,
|
|
167691
|
-
x: currentX,
|
|
167692
|
-
width
|
|
167693
|
-
});
|
|
167694
|
-
currentX += width;
|
|
167695
|
-
pendingDecimalStop = undefined;
|
|
167696
|
-
pendingCenterStop = undefined;
|
|
167697
|
-
pendingEndStop = undefined;
|
|
167698
|
-
}
|
|
167699
|
-
} else {
|
|
167700
|
-
if (pendingDecimalStop) {
|
|
167701
|
-
currentX = computeDecimalAlignedX(entry, pendingDecimalStop, options, decimalSeparator);
|
|
167702
|
-
pendingDecimalStop = undefined;
|
|
167703
|
-
} else if (pendingCenterStop) {
|
|
167704
|
-
currentX = computeCenterAlignedX(entry, pendingCenterStop);
|
|
167705
|
-
pendingCenterStop = undefined;
|
|
167706
|
-
} else if (pendingEndStop) {
|
|
167707
|
-
currentX = computeEndAlignedX(entry, pendingEndStop);
|
|
167708
|
-
pendingEndStop = undefined;
|
|
167709
|
-
}
|
|
167710
|
-
result.push({
|
|
167711
|
-
run: run2,
|
|
167712
|
-
x: currentX,
|
|
167713
|
-
width
|
|
167714
|
-
});
|
|
167715
|
-
currentX += width;
|
|
167716
|
-
}
|
|
167717
|
-
}
|
|
167718
|
-
return result;
|
|
167719
|
-
}
|
|
167720
|
-
function computeDecimalAlignedX(entry, stop, options, separator) {
|
|
167721
|
-
const text5 = entry.text ?? "";
|
|
167722
|
-
const decimalIndex = text5.indexOf(separator);
|
|
167723
|
-
if (decimalIndex <= 0)
|
|
167724
|
-
return stop.pos;
|
|
167725
|
-
const beforeText = text5.slice(0, decimalIndex);
|
|
167726
|
-
let beforeWidth;
|
|
167727
|
-
if (options.measureTextWidth)
|
|
167728
|
-
beforeWidth = options.measureTextWidth(entry.run, beforeText);
|
|
167729
|
-
else if (text5.length > 0)
|
|
167730
|
-
beforeWidth = entry.width * decimalIndex / text5.length;
|
|
167731
|
-
else
|
|
167732
|
-
beforeWidth = 0;
|
|
167733
|
-
const targetX = stop.pos - beforeWidth;
|
|
167734
|
-
return targetX < 0 ? 0 : targetX;
|
|
167735
|
-
}
|
|
167736
|
-
function computeCenterAlignedX(entry, stop) {
|
|
167737
|
-
const width = entry.width;
|
|
167738
|
-
const targetX = stop.pos - width / 2;
|
|
167739
|
-
return targetX < 0 ? 0 : targetX;
|
|
167740
|
-
}
|
|
167741
|
-
function computeEndAlignedX(entry, stop) {
|
|
167742
|
-
const width = entry.width;
|
|
167743
|
-
const targetX = stop.pos - width;
|
|
167744
|
-
return targetX < 0 ? 0 : targetX;
|
|
167745
|
-
}
|
|
167746
|
-
function calculateTabWidth(params$1) {
|
|
167747
|
-
const { currentX, tabStops, paragraphWidth, defaultTabDistance: defaultTabDistance$1, defaultLineLength: defaultLineLength$1, followingText = "", measureText: measureText$1, decimalSeparator = "." } = params$1;
|
|
167748
|
-
const nextStop = tabStops.find((stop) => stop.val !== "clear" && stop.pos > currentX);
|
|
167749
|
-
const fallbackWidth = () => {
|
|
167750
|
-
let tabWidth = defaultTabDistance$1 - currentX % defaultLineLength$1 % defaultTabDistance$1;
|
|
167751
|
-
if (tabWidth <= 0)
|
|
167752
|
-
tabWidth = defaultTabDistance$1;
|
|
167753
|
-
return {
|
|
167754
|
-
width: tabWidth,
|
|
167755
|
-
alignment: "default",
|
|
167756
|
-
tabStopPosUsed: "default"
|
|
167757
|
-
};
|
|
167758
|
-
};
|
|
167759
|
-
if (!nextStop)
|
|
167760
|
-
return fallbackWidth();
|
|
167761
|
-
let width = Math.min(nextStop.pos, paragraphWidth) - currentX;
|
|
167762
|
-
const alignment$1 = nextStop.val;
|
|
167763
|
-
if (alignment$1 === "bar")
|
|
167764
|
-
return {
|
|
167765
|
-
width: 0,
|
|
167766
|
-
leader: nextStop.leader,
|
|
167767
|
-
alignment: alignment$1,
|
|
167768
|
-
tabStopPosUsed: nextStop.pos
|
|
167769
|
-
};
|
|
167770
|
-
if (alignment$1 === "center" || alignment$1 === "end") {
|
|
167771
|
-
const textWidth = measureText$1 ? measureText$1(followingText) : 0;
|
|
167772
|
-
if (alignment$1 === "center")
|
|
167773
|
-
width -= textWidth / 2;
|
|
167774
|
-
else
|
|
167775
|
-
width -= textWidth;
|
|
167776
|
-
} else if (alignment$1 === "decimal") {
|
|
167777
|
-
const decimalIndex = followingText.indexOf(decimalSeparator);
|
|
167778
|
-
if (decimalIndex >= 0) {
|
|
167779
|
-
const before = followingText.slice(0, decimalIndex);
|
|
167780
|
-
const beforeWidth = measureText$1 ? measureText$1(before) : 0;
|
|
167781
|
-
width -= beforeWidth;
|
|
167782
|
-
}
|
|
167783
|
-
}
|
|
167784
|
-
if (width < 1)
|
|
167785
|
-
return fallbackWidth();
|
|
167786
|
-
return {
|
|
167787
|
-
width,
|
|
167788
|
-
leader: nextStop.leader,
|
|
167789
|
-
alignment: alignment$1,
|
|
167790
|
-
tabStopPosUsed: nextStop.pos
|
|
167791
|
-
};
|
|
167792
|
-
}
|
|
167793
|
-
function resolveColumnWidths(columns, availableWidth) {
|
|
167794
|
-
const width = availableWidth / columns.length;
|
|
167795
|
-
return columns.map(() => width);
|
|
167796
|
-
}
|
|
167797
|
-
function measureRowHeights(cells, _columnWidths) {
|
|
167798
|
-
return cells.map(() => 20);
|
|
167799
|
-
}
|
|
167800
|
-
function effectiveTableCellSpacing(spacing, isBoundary, padding) {
|
|
167801
|
-
if (typeof spacing !== "number" || spacing <= 0)
|
|
167802
|
-
return 0;
|
|
167803
|
-
return isBoundary ? Math.max(0, spacing - padding) : spacing;
|
|
167804
|
-
}
|
|
167805
|
-
function shouldApplyJustify(params$1) {
|
|
167806
|
-
const { alignment: alignment$1, hasExplicitPositioning, isLastLineOfParagraph, paragraphEndsWithLineBreak, skipJustifyOverride } = params$1;
|
|
167807
|
-
if (alignment$1 !== "justify" && alignment$1 !== "both")
|
|
167808
|
-
return false;
|
|
167809
|
-
if (skipJustifyOverride === true)
|
|
167810
|
-
return false;
|
|
167811
|
-
if (hasExplicitPositioning)
|
|
167812
|
-
return false;
|
|
167813
|
-
if (isLastLineOfParagraph && !paragraphEndsWithLineBreak)
|
|
167814
|
-
return false;
|
|
167815
|
-
return true;
|
|
167816
|
-
}
|
|
167817
|
-
function calculateJustifySpacing(params$1) {
|
|
167818
|
-
const { lineWidth, availableWidth, spaceCount, shouldJustify } = params$1;
|
|
167819
|
-
if (!shouldJustify)
|
|
167820
|
-
return 0;
|
|
167821
|
-
if (spaceCount <= 0)
|
|
167822
|
-
return 0;
|
|
167823
|
-
return (availableWidth - lineWidth) / spaceCount;
|
|
167824
|
-
}
|
|
167825
|
-
function parseInsetClipPathForScale(clipPath) {
|
|
167826
|
-
const m$1 = clipPath.trim().match(/^inset\(\s*(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s+(\d+(?:\.\d+)?|\.\d+)%\s*\)$/);
|
|
167827
|
-
if (!m$1)
|
|
167828
|
-
return null;
|
|
167829
|
-
const top$1 = Number(m$1[1]);
|
|
167830
|
-
const right$1 = Number(m$1[2]);
|
|
167831
|
-
const bottom$1 = Number(m$1[3]);
|
|
167832
|
-
const left$1 = Number(m$1[4]);
|
|
167833
|
-
if (![
|
|
167834
|
-
top$1,
|
|
167835
|
-
right$1,
|
|
167836
|
-
bottom$1,
|
|
167837
|
-
left$1
|
|
167838
|
-
].every(Number.isFinite))
|
|
167839
|
-
return null;
|
|
167840
|
-
const visibleW = 100 - left$1 - right$1;
|
|
167841
|
-
const visibleH = 100 - top$1 - bottom$1;
|
|
167842
|
-
if (visibleW <= 0 || visibleH <= 0)
|
|
167843
|
-
return null;
|
|
167844
|
-
const scaleX = 100 / visibleW;
|
|
167845
|
-
const scaleY = 100 / visibleH;
|
|
167846
|
-
return {
|
|
167847
|
-
scaleX,
|
|
167848
|
-
scaleY,
|
|
167849
|
-
translateX: -left$1 * scaleX,
|
|
167850
|
-
translateY: -top$1 * scaleY
|
|
167851
|
-
};
|
|
167852
|
-
}
|
|
167853
|
-
function formatInsetClipPathTransform(clipPath) {
|
|
167854
|
-
const scale = parseInsetClipPathForScale(clipPath);
|
|
167855
|
-
if (!scale)
|
|
167856
|
-
return;
|
|
167857
|
-
return `transform-origin: 0 0; transform: translate(${scale.translateX}%, ${scale.translateY}%) scale(${scale.scaleX}, ${scale.scaleY});`;
|
|
167858
|
-
}
|
|
167859
|
-
function computeLinePmRange$1(block, line) {
|
|
167860
|
-
if (!line)
|
|
167861
|
-
return {};
|
|
167862
|
-
if (block.kind !== "paragraph")
|
|
167863
|
-
return {};
|
|
167864
|
-
let pmStart;
|
|
167865
|
-
let pmEnd;
|
|
167866
|
-
for (let runIndex = line.fromRun;runIndex <= line.toRun; runIndex += 1) {
|
|
167867
|
-
const run2 = block.runs[runIndex];
|
|
167868
|
-
if (!run2)
|
|
167869
|
-
continue;
|
|
167870
|
-
const runPmStart = coercePmStart(run2);
|
|
167871
|
-
if (runPmStart == null)
|
|
167872
|
-
continue;
|
|
167873
|
-
if (isAtomicRunKind(run2.kind) || isImageLikeRun(run2)) {
|
|
167874
|
-
const runPmEnd = coercePmEnd(run2) ?? runPmStart + 1;
|
|
167875
|
-
if (pmStart == null)
|
|
167876
|
-
pmStart = runPmStart;
|
|
167877
|
-
pmEnd = runPmEnd;
|
|
167878
|
-
continue;
|
|
167879
|
-
}
|
|
167880
|
-
const runLength = coerceRunText(run2).length;
|
|
167881
|
-
const isFirstRun = runIndex === line.fromRun;
|
|
167882
|
-
const isLastRun = runIndex === line.toRun;
|
|
167883
|
-
const startOffset = isFirstRun ? line.fromChar : 0;
|
|
167884
|
-
const endOffset = isLastRun ? line.toChar : runLength;
|
|
167885
|
-
const sliceStart = runPmStart + startOffset;
|
|
167886
|
-
const sliceEnd = runPmStart + endOffset;
|
|
167887
|
-
if (pmStart == null)
|
|
167888
|
-
pmStart = sliceStart;
|
|
167889
|
-
pmEnd = sliceEnd;
|
|
167890
|
-
}
|
|
167891
|
-
return {
|
|
167892
|
-
pmStart,
|
|
167893
|
-
pmEnd
|
|
167894
|
-
};
|
|
167895
|
-
}
|
|
167896
|
-
function computeFragmentPmRange$1(block, lines, fromLine, toLine) {
|
|
167897
|
-
let pmStart;
|
|
167898
|
-
let pmEnd;
|
|
167899
|
-
for (let index2 = fromLine;index2 < toLine; index2 += 1) {
|
|
167900
|
-
const line = lines[index2];
|
|
167901
|
-
if (!line)
|
|
167902
|
-
continue;
|
|
167903
|
-
const range = computeLinePmRange$1(block, line);
|
|
167904
|
-
if (range.pmStart != null && pmStart == null)
|
|
167905
|
-
pmStart = range.pmStart;
|
|
167906
|
-
if (range.pmEnd != null)
|
|
167907
|
-
pmEnd = range.pmEnd;
|
|
167908
|
-
}
|
|
167909
|
-
return {
|
|
167910
|
-
pmStart,
|
|
167911
|
-
pmEnd
|
|
167912
|
-
};
|
|
167913
|
-
}
|
|
167914
|
-
function resolveSpacingIndent(style2, numbering) {
|
|
167915
|
-
const spacing = {
|
|
167916
|
-
before: style2.spacing?.before ?? 0,
|
|
167917
|
-
after: style2.spacing?.after ?? 0,
|
|
167918
|
-
line: style2.spacing?.line ?? 12,
|
|
167919
|
-
lineRule: style2.spacing?.lineRule ?? "auto"
|
|
167920
|
-
};
|
|
167921
|
-
let indent2 = {
|
|
167922
|
-
left: style2.indent?.left ?? 0,
|
|
167923
|
-
right: style2.indent?.right ?? 0,
|
|
167924
|
-
firstLine: style2.indent?.firstLine ?? 0,
|
|
167925
|
-
hanging: style2.indent?.hanging ?? 0
|
|
167926
|
-
};
|
|
167927
|
-
if (numbering?.indent)
|
|
167928
|
-
indent2 = {
|
|
167929
|
-
...indent2,
|
|
167930
|
-
left: numbering.indent.left ?? indent2.left,
|
|
167931
|
-
hanging: numbering.indent.hanging ?? indent2.hanging
|
|
167932
|
-
};
|
|
167933
|
-
return {
|
|
167934
|
-
spacing,
|
|
167935
|
-
indent: indent2
|
|
167936
|
-
};
|
|
167937
|
-
}
|
|
167938
|
-
function formatListLabel(level, indices) {
|
|
167939
|
-
const { format, text: template, start: start$1 } = level;
|
|
167940
|
-
if (format === "bullet" || format === "custom")
|
|
167941
|
-
return {
|
|
167942
|
-
text: template,
|
|
167943
|
-
width: estimateTextWidth(template)
|
|
167944
|
-
};
|
|
167945
|
-
let result = template;
|
|
167946
|
-
for (let i$1 = 0;i$1 < indices.length; i$1++) {
|
|
167947
|
-
const placeholder = `%${i$1 + 1}`;
|
|
167948
|
-
if (result.includes(placeholder)) {
|
|
167949
|
-
const formattedNum = formatNumber(indices[i$1] + start$1 - 1, format);
|
|
167950
|
-
result = result.replace(placeholder, formattedNum);
|
|
167951
|
-
}
|
|
167952
|
-
}
|
|
167953
|
-
return {
|
|
167954
|
-
text: result,
|
|
167955
|
-
width: estimateTextWidth(result)
|
|
167956
|
-
};
|
|
167957
|
-
}
|
|
167958
|
-
function computeListIndent(level) {
|
|
167959
|
-
const { indent: indent2 } = level;
|
|
167960
|
-
return {
|
|
167961
|
-
labelWidth: Math.abs(indent2.hanging),
|
|
167962
|
-
hangingIndent: indent2.hanging,
|
|
167963
|
-
firstLineIndent: indent2.left - Math.abs(indent2.hanging)
|
|
167964
|
-
};
|
|
167965
|
-
}
|
|
167966
|
-
function formatNumber(num, format) {
|
|
167967
|
-
switch (format) {
|
|
167968
|
-
case "decimal":
|
|
167969
|
-
return num.toString();
|
|
167970
|
-
case "lowerLetter":
|
|
167971
|
-
return toLetter(num, false);
|
|
167972
|
-
case "upperLetter":
|
|
167973
|
-
return toLetter(num, true);
|
|
167974
|
-
case "lowerRoman":
|
|
167975
|
-
return toRoman(num).toLowerCase();
|
|
167976
|
-
case "upperRoman":
|
|
167977
|
-
return toRoman(num);
|
|
167978
|
-
default:
|
|
167979
|
-
return num.toString();
|
|
167980
|
-
}
|
|
167981
|
-
}
|
|
167982
|
-
function toLetter(num, uppercase) {
|
|
167983
|
-
let result = "";
|
|
167984
|
-
let n = num;
|
|
167985
|
-
while (n > 0) {
|
|
167986
|
-
const remainder = (n - 1) % 26;
|
|
167987
|
-
result = String.fromCharCode((uppercase ? 65 : 97) + remainder) + result;
|
|
167988
|
-
n = Math.floor((n - 1) / 26);
|
|
167989
|
-
}
|
|
167990
|
-
return result || (uppercase ? "A" : "a");
|
|
167991
|
-
}
|
|
167992
|
-
function toRoman(num) {
|
|
167993
|
-
const lookup3 = [
|
|
167994
|
-
[1000, "M"],
|
|
167995
|
-
[900, "CM"],
|
|
167996
|
-
[500, "D"],
|
|
167997
|
-
[400, "CD"],
|
|
167998
|
-
[100, "C"],
|
|
167999
|
-
[90, "XC"],
|
|
168000
|
-
[50, "L"],
|
|
168001
|
-
[40, "XL"],
|
|
168002
|
-
[10, "X"],
|
|
168003
|
-
[9, "IX"],
|
|
168004
|
-
[5, "V"],
|
|
168005
|
-
[4, "IV"],
|
|
168006
|
-
[1, "I"]
|
|
168007
|
-
];
|
|
168008
|
-
let result = "";
|
|
168009
|
-
let remaining = num;
|
|
168010
|
-
for (const [value, numeral] of lookup3)
|
|
168011
|
-
while (remaining >= value) {
|
|
168012
|
-
result += numeral;
|
|
168013
|
-
remaining -= value;
|
|
168014
|
-
}
|
|
168015
|
-
return result;
|
|
168016
|
-
}
|
|
168017
|
-
function estimateTextWidth(text5) {
|
|
168018
|
-
return text5.length * 7;
|
|
168019
|
-
}
|
|
168020
|
-
function scaleWrapPolygon(ooxml, imageRect) {
|
|
168021
|
-
if (!ooxml || ooxml.length === 0)
|
|
168022
|
-
return [];
|
|
168023
|
-
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
168024
|
-
for (const [x, y$1] of ooxml) {
|
|
168025
|
-
minX = Math.min(minX, x);
|
|
168026
|
-
minY = Math.min(minY, y$1);
|
|
168027
|
-
maxX = Math.max(maxX, x);
|
|
168028
|
-
maxY = Math.max(maxY, y$1);
|
|
168029
|
-
}
|
|
168030
|
-
const ooxmlWidth = maxX - minX;
|
|
168031
|
-
const ooxmlHeight = maxY - minY;
|
|
168032
|
-
if (ooxmlWidth === 0 || ooxmlHeight === 0)
|
|
168033
|
-
return [];
|
|
168034
|
-
const scaleX = imageRect.width / ooxmlWidth;
|
|
168035
|
-
const scaleY = imageRect.height / ooxmlHeight;
|
|
168036
|
-
return ooxml.map(([x, y$1]) => [imageRect.x + (x - minX) * scaleX, imageRect.y + (y$1 - minY) * scaleY]);
|
|
168037
|
-
}
|
|
168038
|
-
function computeWrapExclusion(image2, lineY, lineHeight) {
|
|
168039
|
-
const { rect, wrap: wrap4 } = image2;
|
|
168040
|
-
const top$1 = rect.y - (wrap4.distTop ?? 0);
|
|
168041
|
-
const bottom$1 = rect.y + rect.height + (wrap4.distBottom ?? 0);
|
|
168042
|
-
const left$1 = rect.x - (wrap4.distLeft ?? 0);
|
|
168043
|
-
const right$1 = rect.x + rect.width + (wrap4.distRight ?? 0);
|
|
168044
|
-
if (lineY + lineHeight <= top$1 || lineY >= bottom$1)
|
|
168045
|
-
return null;
|
|
168046
|
-
switch (wrap4.type) {
|
|
168047
|
-
case "None":
|
|
168048
|
-
return null;
|
|
168049
|
-
case "TopAndBottom":
|
|
168050
|
-
return null;
|
|
168051
|
-
case "Square":
|
|
168052
|
-
return {
|
|
168053
|
-
left: left$1,
|
|
168054
|
-
right: right$1
|
|
168055
|
-
};
|
|
168056
|
-
case "Tight":
|
|
168057
|
-
case "Through": {
|
|
168058
|
-
if (!wrap4.polygon || wrap4.polygon.length === 0)
|
|
168059
|
-
return {
|
|
168060
|
-
left: left$1,
|
|
168061
|
-
right: right$1
|
|
168062
|
-
};
|
|
168063
|
-
const polygon = wrap4.polygon;
|
|
168064
|
-
const midY = lineY + lineHeight / 2;
|
|
168065
|
-
let polyLeft = Infinity;
|
|
168066
|
-
let polyRight = -Infinity;
|
|
168067
|
-
for (let i$1 = 0;i$1 < polygon.length; i$1++) {
|
|
168068
|
-
const [x1, y1] = polygon[i$1];
|
|
168069
|
-
const [x2, y2] = polygon[(i$1 + 1) % polygon.length];
|
|
168070
|
-
if (midY >= Math.min(y1, y2) && midY <= Math.max(y1, y2)) {
|
|
168071
|
-
const x = x1 + (midY - y1) / (y2 - y1) * (x2 - x1);
|
|
168072
|
-
polyLeft = Math.min(polyLeft, x);
|
|
168073
|
-
polyRight = Math.max(polyRight, x);
|
|
168074
|
-
}
|
|
168075
|
-
}
|
|
168076
|
-
if (polyLeft === Infinity || polyRight === -Infinity)
|
|
168077
|
-
return null;
|
|
168078
|
-
return {
|
|
168079
|
-
left: polyLeft - (wrap4.distLeft ?? 0),
|
|
168080
|
-
right: polyRight + (wrap4.distRight ?? 0)
|
|
168081
|
-
};
|
|
168082
|
-
}
|
|
168083
|
-
default:
|
|
168084
|
-
return null;
|
|
168085
|
-
}
|
|
168086
|
-
}
|
|
168087
168150
|
function mapWordFamilyFallback(wordFamily) {
|
|
168088
168151
|
if (!wordFamily)
|
|
168089
168152
|
return DEFAULT_GENERIC_FALLBACK2;
|
|
@@ -170998,7 +171061,7 @@ async function measureParagraphBlock(block, maxWidth) {
|
|
|
170998
171061
|
const spaceWidth = shouldIncludeDelimiterSpace ? measureRunWidth(" ", font, ctx$1, run2, wordEndNoSpace) : 0;
|
|
170999
171062
|
const wordCommitWidth = wordOnlyWidth + spaceWidth;
|
|
171000
171063
|
const wordEndWithSpace = wordEndNoSpace + (shouldIncludeDelimiterSpace ? 1 : 0);
|
|
171001
|
-
if (wordOnlyWidth > (currentLine ? currentLine.maxWidth : getEffectiveWidth(lines.length === 0 ? initialAvailableWidth : contentWidth)) && word$1.length > 1) {
|
|
171064
|
+
if (wordOnlyWidth > (currentLine ? currentLine.maxWidth : getEffectiveWidth(lines.length === 0 ? initialAvailableWidth : contentWidth)) + WIDTH_FUDGE_PX$1 && word$1.length > 1) {
|
|
171002
171065
|
if (currentLine && currentLine.width > 0 && currentLine.segments && currentLine.segments.length > 0) {
|
|
171003
171066
|
trimTrailingWrapSpaces(currentLine);
|
|
171004
171067
|
const metrics = finalizeLineMetrics(currentLine, spacing);
|
|
@@ -171015,7 +171078,7 @@ async function measureParagraphBlock(block, maxWidth) {
|
|
|
171015
171078
|
const lineMaxWidth = getEffectiveWidth(lines.length === 0 ? initialAvailableWidth : contentWidth);
|
|
171016
171079
|
const hasTabOnlyLine = currentLine && currentLine.segments && currentLine.segments.length === 0 && currentLine.width > 0;
|
|
171017
171080
|
const remainingWidthAfterTab = hasTabOnlyLine ? currentLine.maxWidth - currentLine.width : lineMaxWidth;
|
|
171018
|
-
const chunks = breakWordIntoChunks(word$1,
|
|
171081
|
+
const chunks = breakWordIntoChunks(word$1, hasTabOnlyLine ? Math.max(remainingWidthAfterTab, lineMaxWidth * 0.25) : lineMaxWidth, font, ctx$1, run2, wordStartChar);
|
|
171019
171082
|
let chunkCharOffset = wordStartChar;
|
|
171020
171083
|
for (let chunkIndex = 0;chunkIndex < chunks.length; chunkIndex++) {
|
|
171021
171084
|
const chunk = chunks[chunkIndex];
|
|
@@ -172063,14 +172126,11 @@ function computeNextSectionPropsAtBreak(blocks2) {
|
|
|
172063
172126
|
return nextSectionPropsAtBreak;
|
|
172064
172127
|
}
|
|
172065
172128
|
function getColumnConfig(blockColumns) {
|
|
172066
|
-
return blockColumns ? {
|
|
172067
|
-
count: blockColumns.count,
|
|
172068
|
-
gap: blockColumns.gap
|
|
172069
|
-
} : { ...SINGLE_COLUMN_DEFAULT };
|
|
172129
|
+
return blockColumns ? cloneColumnLayout(blockColumns) : { ...SINGLE_COLUMN_DEFAULT };
|
|
172070
172130
|
}
|
|
172071
172131
|
function isColumnConfigChanging(blockColumns, activeColumns) {
|
|
172072
172132
|
if (blockColumns)
|
|
172073
|
-
return blockColumns.count !== activeColumns.count || blockColumns.gap !== activeColumns.gap;
|
|
172133
|
+
return blockColumns.count !== activeColumns.count || blockColumns.gap !== activeColumns.gap || blockColumns.equalWidth !== activeColumns.equalWidth || !widthsEqual(blockColumns.widths, activeColumns.widths);
|
|
172074
172134
|
return activeColumns.count > 1;
|
|
172075
172135
|
}
|
|
172076
172136
|
function scheduleSectionBreak(block, state, baseMargins, maxHeaderContentHeight = 0, maxFooterContentHeight = 0) {
|
|
@@ -174072,7 +174132,13 @@ function createPaginator(opts) {
|
|
|
174072
174132
|
};
|
|
174073
174133
|
const columnX = (columnIndex) => {
|
|
174074
174134
|
const cols = opts.getCurrentColumns();
|
|
174075
|
-
|
|
174135
|
+
const widths = Array.isArray(cols.widths) && cols.widths.length > 0 ? cols.widths : null;
|
|
174136
|
+
if (!widths)
|
|
174137
|
+
return opts.margins.left + columnIndex * (cols.width + cols.gap);
|
|
174138
|
+
let x = opts.margins.left;
|
|
174139
|
+
for (let index2 = 0;index2 < columnIndex; index2 += 1)
|
|
174140
|
+
x += (widths[index2] ?? cols.width) + cols.gap;
|
|
174141
|
+
return x;
|
|
174076
174142
|
};
|
|
174077
174143
|
const startNewPage = () => {
|
|
174078
174144
|
if (opts.onNewPage)
|
|
@@ -174259,6 +174325,24 @@ function computeDisplayPageNumber(pages, sections) {
|
|
|
174259
174325
|
}
|
|
174260
174326
|
return result;
|
|
174261
174327
|
}
|
|
174328
|
+
function shouldSkipBalancing(ctx$1, config2 = DEFAULT_BALANCING_CONFIG) {
|
|
174329
|
+
if (!config2.enabled)
|
|
174330
|
+
return true;
|
|
174331
|
+
if (ctx$1.columnCount <= 1)
|
|
174332
|
+
return true;
|
|
174333
|
+
if (ctx$1.contentBlocks.length === 0)
|
|
174334
|
+
return true;
|
|
174335
|
+
if (ctx$1.contentBlocks.length === 1) {
|
|
174336
|
+
if (!ctx$1.contentBlocks[0].canBreak)
|
|
174337
|
+
return true;
|
|
174338
|
+
}
|
|
174339
|
+
const totalHeight = ctx$1.contentBlocks.reduce((sum, b$1) => sum + b$1.measuredHeight, 0);
|
|
174340
|
+
if (totalHeight < config2.minColumnHeight)
|
|
174341
|
+
return true;
|
|
174342
|
+
if (totalHeight / ctx$1.columnCount < config2.minColumnHeight)
|
|
174343
|
+
return true;
|
|
174344
|
+
return false;
|
|
174345
|
+
}
|
|
174262
174346
|
function getFragmentHeight$1(fragment2, measureMap) {
|
|
174263
174347
|
if (fragment2.kind === "para") {
|
|
174264
174348
|
const measure = measureMap.get(fragment2.blockId);
|
|
@@ -174280,7 +174364,7 @@ function getFragmentHeight$1(fragment2, measureMap) {
|
|
|
174280
174364
|
}
|
|
174281
174365
|
return 0;
|
|
174282
174366
|
}
|
|
174283
|
-
function balancePageColumns(fragments, columns, margins, topMargin, measureMap) {
|
|
174367
|
+
function balancePageColumns(fragments, columns, margins, topMargin, availableHeight, measureMap) {
|
|
174284
174368
|
if (columns.count <= 1 || fragments.length === 0)
|
|
174285
174369
|
return;
|
|
174286
174370
|
const columnX = (columnIndex) => {
|
|
@@ -174300,10 +174384,26 @@ function balancePageColumns(fragments, columns, margins, topMargin, measureMap)
|
|
|
174300
174384
|
});
|
|
174301
174385
|
const sortedRows = [...rowMap.entries()].sort((a2, b$1) => a2[0] - b$1[0]);
|
|
174302
174386
|
let totalHeight = 0;
|
|
174387
|
+
const contentBlocks = [];
|
|
174303
174388
|
for (const [, rowFragments] of sortedRows) {
|
|
174304
174389
|
const maxHeight = Math.max(...rowFragments.map((f2) => f2.height));
|
|
174305
174390
|
totalHeight += maxHeight;
|
|
174391
|
+
contentBlocks.push({
|
|
174392
|
+
blockId: rowFragments[0]?.fragment.blockId ?? `row-${contentBlocks.length}`,
|
|
174393
|
+
measuredHeight: maxHeight,
|
|
174394
|
+
canBreak: false,
|
|
174395
|
+
keepWithNext: false,
|
|
174396
|
+
keepTogether: true
|
|
174397
|
+
});
|
|
174306
174398
|
}
|
|
174399
|
+
if (shouldSkipBalancing({
|
|
174400
|
+
columnCount: columns.count,
|
|
174401
|
+
columnWidth: columns.width,
|
|
174402
|
+
columnGap: columns.gap,
|
|
174403
|
+
availableHeight,
|
|
174404
|
+
contentBlocks
|
|
174405
|
+
}))
|
|
174406
|
+
return;
|
|
174307
174407
|
const targetHeight = totalHeight / columns.count;
|
|
174308
174408
|
if (targetHeight < DEFAULT_BALANCING_CONFIG.minColumnHeight)
|
|
174309
174409
|
return;
|
|
@@ -174639,10 +174739,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
174639
174739
|
h: pageSize.h
|
|
174640
174740
|
};
|
|
174641
174741
|
let pendingPageSize = null;
|
|
174642
|
-
let activeColumns = options.columns
|
|
174643
|
-
count: 1,
|
|
174644
|
-
gap: 0
|
|
174645
|
-
};
|
|
174742
|
+
let activeColumns = cloneColumnLayout(options.columns);
|
|
174646
174743
|
let pendingColumns = null;
|
|
174647
174744
|
let activeOrientation = null;
|
|
174648
174745
|
let pendingOrientation = null;
|
|
@@ -174706,16 +174803,10 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
174706
174803
|
next2.pendingRightMargin = rightMargin;
|
|
174707
174804
|
}
|
|
174708
174805
|
if (block.columns) {
|
|
174709
|
-
next2.activeColumns =
|
|
174710
|
-
count: block.columns.count,
|
|
174711
|
-
gap: block.columns.gap
|
|
174712
|
-
};
|
|
174806
|
+
next2.activeColumns = cloneColumnLayout(block.columns);
|
|
174713
174807
|
next2.pendingColumns = null;
|
|
174714
174808
|
} else {
|
|
174715
|
-
next2.activeColumns =
|
|
174716
|
-
count: 1,
|
|
174717
|
-
gap: 0
|
|
174718
|
-
};
|
|
174809
|
+
next2.activeColumns = cloneColumnLayout(undefined);
|
|
174719
174810
|
next2.pendingColumns = null;
|
|
174720
174811
|
}
|
|
174721
174812
|
if (block.headerRefs || block.footerRefs) {
|
|
@@ -174782,7 +174873,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
174782
174873
|
if (block.orientation)
|
|
174783
174874
|
next2.pendingOrientation = block.orientation;
|
|
174784
174875
|
const sectionType = block.type ?? "continuous";
|
|
174785
|
-
const isColumnsChanging = block.columns && (block.columns.count !== next2.activeColumns.count || block.columns.gap !== next2.activeColumns.gap) || !block.columns && next2.activeColumns.count > 1;
|
|
174876
|
+
const isColumnsChanging = block.columns && (block.columns.count !== next2.activeColumns.count || block.columns.gap !== next2.activeColumns.gap || block.columns.equalWidth !== next2.activeColumns.equalWidth || !widthsEqual(block.columns.widths, next2.activeColumns.widths)) || !block.columns && next2.activeColumns.count > 1;
|
|
174786
174877
|
const sectionIndexRaw = block.attrs?.sectionIndex;
|
|
174787
174878
|
const metadataIndex = typeof sectionIndexRaw === "number" ? sectionIndexRaw : Number(sectionIndexRaw ?? NaN);
|
|
174788
174879
|
if (Number.isFinite(metadataIndex))
|
|
@@ -174799,13 +174890,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
174799
174890
|
});
|
|
174800
174891
|
layoutLog(`[Layout] Compat fallback: Scheduled pendingSectionRefs:`, pendingSectionRefs);
|
|
174801
174892
|
}
|
|
174802
|
-
const getColumnConfig$1 = () => block.columns
|
|
174803
|
-
count: block.columns.count,
|
|
174804
|
-
gap: block.columns.gap
|
|
174805
|
-
} : {
|
|
174806
|
-
count: 1,
|
|
174807
|
-
gap: 0
|
|
174808
|
-
};
|
|
174893
|
+
const getColumnConfig$1 = () => cloneColumnLayout(block.columns);
|
|
174809
174894
|
if (block.attrs?.requirePageBoundary) {
|
|
174810
174895
|
next2.pendingColumns = getColumnConfig$1();
|
|
174811
174896
|
return {
|
|
@@ -175081,21 +175166,21 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175081
175166
|
const state = states[states.length - 1] ?? null;
|
|
175082
175167
|
const colsConfig = state ? getActiveColumnsForState(state) : activeColumns;
|
|
175083
175168
|
const constraintIndex = state ? state.activeConstraintIndex : -1;
|
|
175084
|
-
if (cachedColumnsState.state === state && cachedColumnsState.constraintIndex === constraintIndex && cachedColumnsState.contentWidth === currentContentWidth && cachedColumnsState.colsConfig?.count === colsConfig.count && cachedColumnsState.colsConfig?.gap === colsConfig.gap && cachedColumnsState.normalized)
|
|
175169
|
+
if (cachedColumnsState.state === state && cachedColumnsState.constraintIndex === constraintIndex && cachedColumnsState.contentWidth === currentContentWidth && cachedColumnsState.colsConfig?.count === colsConfig.count && cachedColumnsState.colsConfig?.gap === colsConfig.gap && cachedColumnsState.colsConfig?.equalWidth === colsConfig.equalWidth && widthsEqual(cachedColumnsState.colsConfig?.widths, colsConfig.widths) && cachedColumnsState.normalized)
|
|
175085
175170
|
return cachedColumnsState.normalized;
|
|
175086
175171
|
const normalized = normalizeColumns(colsConfig, currentContentWidth);
|
|
175087
175172
|
cachedColumnsState = {
|
|
175088
175173
|
state,
|
|
175089
175174
|
constraintIndex,
|
|
175090
175175
|
contentWidth: currentContentWidth,
|
|
175091
|
-
colsConfig:
|
|
175092
|
-
count: colsConfig.count,
|
|
175093
|
-
gap: colsConfig.gap
|
|
175094
|
-
},
|
|
175176
|
+
colsConfig: cloneColumnLayout(colsConfig),
|
|
175095
175177
|
normalized
|
|
175096
175178
|
};
|
|
175097
175179
|
return normalized;
|
|
175098
175180
|
};
|
|
175181
|
+
const getCurrentColumnWidth = () => {
|
|
175182
|
+
return getColumnWidthAt(getCurrentColumns(), (states[states.length - 1] ?? null)?.columnIndex ?? 0);
|
|
175183
|
+
};
|
|
175099
175184
|
const columnX = paginator.columnX;
|
|
175100
175185
|
const advanceColumn = paginator.advanceColumn;
|
|
175101
175186
|
const startMidPageRegion = (state, newColumns) => {
|
|
@@ -175110,7 +175195,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175110
175195
|
layoutLog(` OLD activeColumns: ${JSON.stringify(activeColumns)}`);
|
|
175111
175196
|
layoutLog(` NEW activeColumns: ${JSON.stringify(newColumns)}`);
|
|
175112
175197
|
layoutLog(` Current page: ${state.page.number}, cursorY: ${state.cursorY}`);
|
|
175113
|
-
activeColumns = newColumns;
|
|
175198
|
+
activeColumns = cloneColumnLayout(newColumns);
|
|
175114
175199
|
cachedColumnsState.state = null;
|
|
175115
175200
|
const contentWidth = activePageSize.w - (activeLeftMargin + activeRightMargin);
|
|
175116
175201
|
floatManager.setLayoutContext(normalizeColumns(activeColumns, contentWidth), {
|
|
@@ -175412,7 +175497,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175412
175497
|
layoutParagraphBlock({
|
|
175413
175498
|
block,
|
|
175414
175499
|
measure,
|
|
175415
|
-
columnWidth:
|
|
175500
|
+
columnWidth: getCurrentColumnWidth(),
|
|
175416
175501
|
ensurePage: paginator.ensurePage,
|
|
175417
175502
|
advanceColumn: paginator.advanceColumn,
|
|
175418
175503
|
columnX,
|
|
@@ -175433,7 +175518,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175433
175518
|
} : undefined);
|
|
175434
175519
|
if (tablesForPara) {
|
|
175435
175520
|
const state = paginator.ensurePage();
|
|
175436
|
-
const columnWidthForTable =
|
|
175521
|
+
const columnWidthForTable = getCurrentColumnWidth();
|
|
175437
175522
|
let tableBottomY = state.cursorY;
|
|
175438
175523
|
for (const { block: tableBlock, measure: tableMeasure } of tablesForPara) {
|
|
175439
175524
|
if (placedAnchoredTableIds.has(tableBlock.id))
|
|
@@ -175474,7 +175559,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175474
175559
|
else if (relativeFrom === "margin")
|
|
175475
175560
|
maxWidth = activePageSize.w - (activeLeftMargin + activeRightMargin);
|
|
175476
175561
|
else
|
|
175477
|
-
maxWidth = cols.
|
|
175562
|
+
maxWidth = getColumnWidthAt(cols, state.columnIndex);
|
|
175478
175563
|
const aspectRatio = imgMeasure.width > 0 && imgMeasure.height > 0 ? imgMeasure.width / imgMeasure.height : 1;
|
|
175479
175564
|
const minWidth = 20;
|
|
175480
175565
|
const minHeight = minWidth / aspectRatio;
|
|
@@ -175566,7 +175651,7 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175566
175651
|
layoutTableBlock({
|
|
175567
175652
|
block,
|
|
175568
175653
|
measure,
|
|
175569
|
-
columnWidth:
|
|
175654
|
+
columnWidth: getCurrentColumnWidth(),
|
|
175570
175655
|
ensurePage: paginator.ensurePage,
|
|
175571
175656
|
advanceColumn: paginator.advanceColumn,
|
|
175572
175657
|
columnX
|
|
@@ -175641,16 +175726,23 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175641
175726
|
const normalizedCols = normalizeColumns(activeColumns, contentWidth);
|
|
175642
175727
|
const measureMap = /* @__PURE__ */ new Map;
|
|
175643
175728
|
const blockSectionMap = /* @__PURE__ */ new Map;
|
|
175729
|
+
const sectionColumnsMap = /* @__PURE__ */ new Map;
|
|
175644
175730
|
blocks2.forEach((block, idx) => {
|
|
175645
175731
|
const measure = measures[idx];
|
|
175646
175732
|
if (measure)
|
|
175647
175733
|
measureMap.set(block.id, measure);
|
|
175648
175734
|
const sectionIdx = block.attrs?.sectionIndex;
|
|
175649
|
-
if (typeof sectionIdx === "number")
|
|
175735
|
+
if (typeof sectionIdx === "number") {
|
|
175650
175736
|
blockSectionMap.set(block.id, sectionIdx);
|
|
175737
|
+
if (block.kind === "sectionBreak" && block.columns)
|
|
175738
|
+
sectionColumnsMap.set(sectionIdx, cloneColumnLayout(block.columns));
|
|
175739
|
+
}
|
|
175651
175740
|
});
|
|
175652
175741
|
for (const page of pages)
|
|
175653
175742
|
if (page === pages[pages.length - 1] && page.fragments.length > 0) {
|
|
175743
|
+
const finalSectionColumns = sectionColumnsMap.get(activeSectionIndex) ?? activeColumns;
|
|
175744
|
+
if (finalSectionColumns?.equalWidth === false && Array.isArray(finalSectionColumns.widths) && finalSectionColumns.widths.length > 0)
|
|
175745
|
+
continue;
|
|
175654
175746
|
if (new Set(page.fragments.map((f2) => Math.round(f2.x))).size > 1)
|
|
175655
175747
|
continue;
|
|
175656
175748
|
if (new Set(page.fragments.map((f2) => Math.round(f2.width))).size > 1)
|
|
@@ -175664,8 +175756,10 @@ function layoutDocument(blocks2, measures, options = {}) {
|
|
|
175664
175756
|
const fragmentsToBalance = fragmentSections.size > 1 ? page.fragments.filter((f2) => {
|
|
175665
175757
|
return blockSectionMap.get(f2.blockId) === activeSectionIndex;
|
|
175666
175758
|
}) : page.fragments;
|
|
175667
|
-
if (fragmentsToBalance.length > 0)
|
|
175668
|
-
|
|
175759
|
+
if (fragmentsToBalance.length > 0) {
|
|
175760
|
+
const availableHeight = pageSize.h - activeBottomMargin - activeTopMargin;
|
|
175761
|
+
balancePageColumns(fragmentsToBalance, normalizedCols, { left: activeLeftMargin }, activeTopMargin, availableHeight, measureMap);
|
|
175762
|
+
}
|
|
175669
175763
|
}
|
|
175670
175764
|
}
|
|
175671
175765
|
return {
|
|
@@ -175773,21 +175867,7 @@ function layoutHeaderFooter(blocks2, measures, constraints) {
|
|
|
175773
175867
|
};
|
|
175774
175868
|
}
|
|
175775
175869
|
function normalizeColumns(input2, contentWidth) {
|
|
175776
|
-
|
|
175777
|
-
const count = Math.max(1, rawCount || 1);
|
|
175778
|
-
const gap = Math.max(0, input2?.gap ?? 0);
|
|
175779
|
-
const width = (contentWidth - gap * (count - 1)) / count;
|
|
175780
|
-
if (width <= COLUMN_EPSILON$1)
|
|
175781
|
-
return {
|
|
175782
|
-
count: 1,
|
|
175783
|
-
gap: 0,
|
|
175784
|
-
width: contentWidth
|
|
175785
|
-
};
|
|
175786
|
-
return {
|
|
175787
|
-
count,
|
|
175788
|
-
gap,
|
|
175789
|
-
width
|
|
175790
|
-
};
|
|
175870
|
+
return normalizeColumnLayout(input2, contentWidth, COLUMN_EPSILON$1);
|
|
175791
175871
|
}
|
|
175792
175872
|
function resolveClipPath(value) {
|
|
175793
175873
|
if (typeof value !== "string")
|
|
@@ -180987,6 +181067,12 @@ function remeasureParagraph(block, maxWidth, firstLineIndent = 0) {
|
|
|
180987
181067
|
}
|
|
180988
181068
|
const w = measureRunSliceWidth(run2, c, c + 1);
|
|
180989
181069
|
if (width + w > effectiveMaxWidth - WIDTH_FUDGE_PX && width > 0) {
|
|
181070
|
+
if (lastBreakRun < 0 && width + w <= effectiveMaxWidth + WIDTH_FUDGE_PX) {
|
|
181071
|
+
width += w;
|
|
181072
|
+
endRun = r$1;
|
|
181073
|
+
endChar = c + 1;
|
|
181074
|
+
continue;
|
|
181075
|
+
}
|
|
180990
181076
|
if (lastBreakRun >= 0) {
|
|
180991
181077
|
endRun = lastBreakRun;
|
|
180992
181078
|
endChar = lastBreakChar;
|
|
@@ -181999,15 +182085,10 @@ function computePerSectionConstraints(options, blocks2) {
|
|
|
181999
182085
|
bottom: normalizeMargin(options.margins?.bottom, DEFAULT_MARGINS$1.bottom),
|
|
182000
182086
|
left: normalizeMargin(options.margins?.left, DEFAULT_MARGINS$1.left)
|
|
182001
182087
|
};
|
|
182002
|
-
const computeColumnWidth = (contentWidth, columns) => {
|
|
182003
|
-
if (!columns || columns.count <= 1)
|
|
182004
|
-
return contentWidth;
|
|
182005
|
-
return (contentWidth - Math.max(0, columns.gap ?? 0) * (columns.count - 1)) / columns.count;
|
|
182006
|
-
};
|
|
182007
182088
|
const defaultContentWidth = pageSize.w - (defaultMargins.left + defaultMargins.right);
|
|
182008
182089
|
const defaultContentHeight = pageSize.h - (defaultMargins.top + defaultMargins.bottom);
|
|
182009
182090
|
let current = {
|
|
182010
|
-
maxWidth:
|
|
182091
|
+
maxWidth: resolveMaxColumnWidth(defaultContentWidth, options.columns),
|
|
182011
182092
|
maxHeight: defaultContentHeight
|
|
182012
182093
|
};
|
|
182013
182094
|
const result = [];
|
|
@@ -182025,7 +182106,7 @@ function computePerSectionConstraints(options, blocks2) {
|
|
|
182025
182106
|
const contentHeight = sectionPageSize.h - (sectionMargins.top + sectionMargins.bottom);
|
|
182026
182107
|
if (contentWidth > 0 && contentHeight > 0)
|
|
182027
182108
|
current = {
|
|
182028
|
-
maxWidth:
|
|
182109
|
+
maxWidth: resolveMaxColumnWidth(contentWidth, ooXmlSectionColumns(sb.columns)),
|
|
182029
182110
|
maxHeight: contentHeight
|
|
182030
182111
|
};
|
|
182031
182112
|
}
|
|
@@ -182055,12 +182136,7 @@ function resolveMeasurementConstraints(options, blocks2) {
|
|
|
182055
182136
|
};
|
|
182056
182137
|
const baseContentWidth = pageSize.w - (margins.left + margins.right);
|
|
182057
182138
|
const baseContentHeight = pageSize.h - (margins.top + margins.bottom);
|
|
182058
|
-
|
|
182059
|
-
if (!columns || columns.count <= 1)
|
|
182060
|
-
return contentWidth;
|
|
182061
|
-
return (contentWidth - Math.max(0, columns.gap ?? 0) * (columns.count - 1)) / columns.count;
|
|
182062
|
-
};
|
|
182063
|
-
let measurementWidth = computeColumnWidth(baseContentWidth, options.columns);
|
|
182139
|
+
let measurementWidth = resolveMaxColumnWidth(baseContentWidth, options.columns);
|
|
182064
182140
|
let measurementHeight = baseContentHeight;
|
|
182065
182141
|
if (blocks2 && blocks2.length > 0)
|
|
182066
182142
|
for (const block of blocks2) {
|
|
@@ -182077,7 +182153,7 @@ function resolveMeasurementConstraints(options, blocks2) {
|
|
|
182077
182153
|
const contentHeight = sectionPageSize.h - (sectionMargins.top + sectionMargins.bottom);
|
|
182078
182154
|
if (contentWidth <= 0 || contentHeight <= 0)
|
|
182079
182155
|
continue;
|
|
182080
|
-
const columnWidth =
|
|
182156
|
+
const columnWidth = resolveMaxColumnWidth(contentWidth, ooXmlSectionColumns(block.columns));
|
|
182081
182157
|
if (columnWidth > measurementWidth)
|
|
182082
182158
|
measurementWidth = columnWidth;
|
|
182083
182159
|
if (contentHeight > measurementHeight)
|
|
@@ -189746,6 +189822,13 @@ function scrollToElement(targetElement, options = {
|
|
|
189746
189822
|
behavior: options.behavior
|
|
189747
189823
|
});
|
|
189748
189824
|
}
|
|
189825
|
+
function getParagraphFontFamilyFromProperties(paragraphProps, convertedXml = {}) {
|
|
189826
|
+
const fontFamilyProps = paragraphProps?.runProperties?.fontFamily;
|
|
189827
|
+
if (!fontFamilyProps)
|
|
189828
|
+
return null;
|
|
189829
|
+
const [markDef] = encodeMarksFromRPr({ fontFamily: fontFamilyProps }, convertedXml);
|
|
189830
|
+
return markDef?.attrs?.fontFamily ?? null;
|
|
189831
|
+
}
|
|
189749
189832
|
var Node$13 = class Node$14 {
|
|
189750
189833
|
constructor(config2) {
|
|
189751
189834
|
this.type = "node";
|
|
@@ -198578,7 +198661,26 @@ var Node$13 = class Node$14 {
|
|
|
198578
198661
|
console.warn("Failed to initialize developer tools:", error);
|
|
198579
198662
|
}
|
|
198580
198663
|
}
|
|
198581
|
-
}, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,UEsDBBQAAAAIAAAAIQAykW9XXgEAAKUFAAATABwAW0NvbnRlbnRfVHlwZXNdLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1lMtqwzAQRfeF/oPRNthKuiilxMmij2UbaPoBijRORPVCmrz+vuM4NaWkMeSxMcgz994zQsxwvLEmW0FM2ruSDYo+y8BJr7Sbl+xz+po/sCyhcEoY76BkW0hsPLq9GU63AVJGapdKtkAMj5wnuQArUuEDOKpUPlqBdIxzHoT8EnPgd/3+PZfeITjMsfZgo+EzVGJpMHvZ0O+GJIJJLHtqGuuskokQjJYCqc5XTv1JyfcJBSl3PWmhQ+pRA+MHE+rK/wF73TtdTdQKsomI+CYsdfG1j4orL5eWlMVxmwOcvqq0hFZfu4XoJaREd25N0Vas0K7XxeGWdgaRlJcHaa07IRJuDaTLEzS+3fGASIJrAOydOxHWMPu4GsUv806QinKnYmbg8hitdScE0hqA5js4m2NncyySOifRh0RrJZ4w9s/eqNU5DRwgoj7+6tpEsj57PqhXkgJ1IJvvluzoG1BLAwQKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAcAGRvY1Byb3BzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhACEYr1llAQAAxQIAABAAHABkb2NQcm9wcy9hcHAueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ1STU/DMAy9I/Efqt63dBwmNHlBaAhx4GPSCpyjxG0j0iRKson9e5wVSoEbOdnP9st7TuDqvTfFAUPUzq7LxbwqC7TSKW3bdflc384uyyImYZUwzuK6PGIsr/j5GWyD8xiSxlgQhY3rskvJrxiLssNexDmVLVUaF3qRKA0tc02jJd44ue/RJnZRVUuG7wmtQjXzI2E5MK4O6b+kysmsL77UR098HGrsvREJ+WOeNHPlUg9sRKF2SZha98grgscEtqLFyBfAhgBeXVAx9wwBbDoRhEy0vwxOMrj23mgpEu2VP2gZXHRNKp5OYos8DWzaAmRgh3IfdDpmqmkK99ri6YIhIFVBtEH47gROMthJYXBD1nkjTERg3wBsXO+FJTo2RsT3Fp997W7yFj5HfoITi686dTsvJP4yO8FhRygqUj8KGAG4o8cIJrPTrG1RffX8LeT1vQy/ki+W84rOaV9fGLkevwv/AFBLAwQUAAAACAAAACEACvOn+GYBAADtAgAAEQAcAGRvY1Byb3BzL2NvcmUueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ2SXU+DMBSG7038D6T3UGBqDAGWTLMrZ0yc0XhX27Otjn6k7cb27y0wmMRdeXc+nvP29G3z6UFUwR6M5UoWKIliFICkinG5LtDbch7eo8A6IhmplIQCHcGiaXl9lVOdUWXgxSgNxnGwgVeSNqO6QBvndIaxpRsQxEaekL65UkYQ51OzxprQLVkDTuP4DgtwhBFHcCMY6kERnSQZHST1zlStAKMYKhAgncVJlOAz68AIe3Gg7fwiBXdHDRfRvjnQB8sHsK7rqJ60qN8/wR+Lp9f2qiGXjVcUUJkzmjnuKihzfA59ZHdf30BdVx4SH1MDxClTPnO6DWZgJKlapq83jm/hWCvDrJ8eZR5jYKnh2vl37LRHBU9XxLqFf9gVBzY7jo/5224mDOx58y/KtCWGND+Z3K0GLPDmZJ2Vfed98vC4nKMyjdObMEnD5G6Zpll8m8XxZ7PdaP4sKE4L/FuxF+gMGn/Q8gdQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAYAHABfcmVscy9VVAkAA4Yc7WiHHO1odXgLAAEE9QEAAAQUAAAAUEsDBBQAAAAIAAAAIQAekRq36QAAAE4CAAALABwAX3JlbHMvLnJlbHNVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAArZLBasMwDEDvg/2D0b1R2sEYo04vY9DbGNkHCFtJTBPb2GrX/v082NgCXelhR8vS05PQenOcRnXglF3wGpZVDYq9Cdb5XsNb+7x4AJWFvKUxeNZw4gyb5vZm/cojSSnKg4tZFYrPGgaR+IiYzcAT5SpE9uWnC2kiKc/UYySzo55xVdf3mH4zoJkx1dZqSFt7B6o9Rb6GHbrOGX4KZj+xlzMtkI/C3rJdxFTqk7gyjWop9SwabDAvJZyRYqwKGvC80ep6o7+nxYmFLAmhCYkv+3xmXBJa/ueK5hk/Nu8hWbRf4W8bnF1B8wFQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAHAB3b3JkL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAHAB3b3JkL2ZvbnRUYWJsZS54bWxVVAkAA54c7WieHO1odXgLAAEE9QEAAAQUAAAAvZPBbqMwEIbvlfoOlu8NhpA0RSFV222kvexh1T6AY0ywFtvI44Tk7dcYiBSyuy3tqiCEGf75mPnHLO8PskR7bkBoleJwQjDiiulMqG2KX1/WNwuMwFKV0VIrnuIjB3y/ur5a1kmulQXk8hUkkqW4sLZKggBYwSWFia64ci9zbSS17tFsA0nNr111w7SsqBUbUQp7DCJC5vj6CrmjZZn3oHSeC8a/abaTXFkPCQwvHVYrKEQFZ8j6Pcham6wymnEA170sW6ikQp2zwviCJgUzGnRuJ663rjbPc4yQ+JUsB5TZOEr0Z8qc8cM40KIDBS7zAiaycbD5CSayIexjZQ0p2W4UJ5r2FTW3Jn0IhMxmxThmP8GgyaWWFhSKCywf1+/sxDxKNwgkWfJ9q7Shm9KR3CZDbosgD0btZJobaieO+j6Qdwiv2mK6nxLViaLSUV6E5IB+8Br91JKqXtZJK6o08NCp97RMMWkanZMpmZHYXZFbxTg4T2EFNcDtKYUMBTmVojz2743/6kBSCcuKXrGnRjQdD0Ugtk6ygw1J8TMhJHper3EbCVP85CK3i9ljF4maSvxx10WmpwhpIsxz/GPYcpjnnDT915dB6+Bf/HzSOyO4aRx908tb59+d97TxMv60l1Jn3PzbzFwcePYRJ+PpVzv54MZevunho9uPsfewPT/rIdQC4P/sx4evdrFfwuo3UEsDBBQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABwAd29yZC9kb2N1bWVudC54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAApZZbb9sgFMffJ+07WH5v8S1OYjWttGab+jCpWrcPQIDEqAYsILd9+h3s+LJ5qxz3CXPg/PjDORxz93AShXdg2nAlV354G/gek0RRLncr/+ePLzcL3zMWS4oLJdnKPzPjP9x//HB3zKgie8Gk9QAhTXYsycrPrS0zhAzJmcDmVnCilVFbe0uUQGq75YSho9IURUEYVF+lVoQZA+s9YnnAxr/gyGkcjWp8BGcHTBDJsbbs1DHCqyEztESLISiaAIIdRuEQFV+NSpFTNQAlk0CgakCaTSP9Y3PpNFI0JM2nkeIhaTGNNEgnMUxwVTIJg1ulBbbQ1TsksH7dlzcALrHlG15wewZmkDYYzOXrBEXg1RJETK8mzJFQlBUxbShq5e+1zC7+N62/k57V/pem9WDFuGVhuSViJ1sY2/jqMWdXu68vhaU6NaRZAeeopMl52VYHMZUGg3kDObx1AAdR+G1lC0detf+VtnUdhg44Rv4ldqKolb9NDIMR0XSI1mOMhD/XbJQIyOBu4UlH0zvccGTxaQDRAJASNvJn0TAWFwYi3e12HD7yWjWctOVw2uNME9MD0P1ViChudLjGufdYhlqaX4drYoScL7Y4xybvE9l1G5y1uLPonXe5e9+l+qrVvuxo/H20p668HuV1GwzSvyNYmveJeclxCVVXkOxpJ5XGmwIUwVXz4LZ4VQS8Ol1d49U3wGti7VUJ5Lmq5d/DO22j6Nm1JQwkWYk1foI0T8JlmqTz0K+s8Jezzhoks+VivpyBNYM3If0OJkiveD3/1JqetTPGYZA8fm6Na7bF+8IOpz/3JiMnwzBin/VYfiV89/ILBqFihVGUBG4iJHQ4W8A3qid8w45oFRTWMKmnaL7LbdfdKGuV6PoF2/ZGc4Ypg3XnUdXdKmV73d3eVt3LckQVBqymxITVcyozvIe/aheSrOCSPXNLQGWcVqOo2Xf1WUcEdU/o+99QSwMEFAAAAAgAAAAhAMrnZYorBAAAvgwAABEAHAB3b3JkL3NldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1V22PmzgQ/n7S/QfE58uG1ySLmq3yervV5lqVre6zAZNYa2Nkm03T0/33GwwO9BZVSav9hJln5pnxeGYM795/ZdR6wUISXsxt98axLVykPCPFfm5/edqOZrYlFSoyRHmB5/YJS/v93e+/vTtGEisFatICikJGLJ3bB6XKaDyW6QEzJG94iQsAcy4YUvAq9mOGxHNVjlLOSqRIQihRp7HnOBO7peFzuxJF1FKMGEkFlzxXtUnE85ykuH0YC3GJ38ZkzdOK4UJpj2OBKcTAC3kgpTRs7GfZADwYkpcfbeKFUaN3dJ0LtnvkIjtbXBJebVAKnmIp4YAYNQGSonMcvCI6+74B3+0WNRWYu45e9SMPryPwXhFMUvz1Oo5ZyzEGyz4Pya7jmZx5SNbj+blgegRZdRWF55s46kdt3uOSmcoO19GZMxrXtkihA5KHPiO+boPhme7EunxLekkFNtAjSQQSp375sTR62BdcoIRCOFCGFlSSpaOzmqOsH1ZTHZbJg6WTa9/B1PnGObOOUYlFCq0HI8tz7HENQMHzPFZIAVEkS0ypnmEpxQj8HqO9QAymj5FomwznqKLqCSWx4iUovSDY3tRQpgckUKqwiEuUAtuKF0pwavQy/hdXK5hkAhqttdBzrVvFzYwEiwIx2PB3c2/HM1xHVgly+cnYxrsb9l3+3xGHmS5Ihp/qRMfqRPEWgo/JN7wosg+VVAQY9fT7hQh+FAAuas8foTSeTiXeYqQqSNMbOdMnsaWk3BEhuHgoMqiNN3NG8hwLcECg1nZQPkTwo87zPUYZXKVv5LeS+G9Qhs70n6Asn5dcKc7uT+UBcv1rJ6nrfdwvX/ggyKRZfOZcnVVhbPnr6bKJtEYvQXzXCVabQWTibN1hm0XgO/4gsnLXbjCMhLPlaggJboOJuxhCJqG3CcIhZLH0Zv5sCFku3Wk4iKxW/srfDiIbZz28n83Km04HY9vees7tpj2d9kxYVH9qfBJmVTe2xRqLFWKJIMja1R8j41ojEc9LUhg8wTClcR+Jq8SAo1EDSIYo3UKJGcBp5BmR5Rrnek13SOw73lZDDEphyn44c9VTG4s/Ba/KBj0KVDYNa1TcIGgtSaEeCTNyWSWxsSrgXulBVZF9fBE6T116jpGCBtCD7xHpRtK6uBh9idtGoyKumwTvUFk2vZbs3blNyf6g3Lo9FLxl8M2qX5K912KexrwG0y8orXcG2u2ik3lG1tPzjczvZIGRBZ0sNLKwk02MbFLLDjBdBVx1z9D2ZlnLc04pP+LsvsNficwlmBI48fjEku5uu2kwSiTMoRKuQcWFwf7QmBtEGU8f6vs6aOT+YhGuF860gUN9fSo9qiC1n3G+RBJnLWZMw8b0n8nEmbjuajYKZpvb0WYaBKOZu7wdTafO1PW3rufPnH/bPjA/Hnf/AVBLAwQUAAAACAAAACEA24Vsw30EAACXHQAAEgAcAHdvcmQvbnVtYmVyaW5nLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAADNmc1u4zYQx+8F+g6CgB4Tifq2sM4iySZFFttF0U3RMy3RlhB+CBRlx9d9mT5CH2tfoaRkyXLkxJIctz4pJjk/zQxnyL+dDx+fCdaWiOcpo1MdXJq6hmjE4pQupvqfj/cXga7lAtIYYkbRVF+jXP949fNPH1YhLcgMcblQkwyah6ssmuqJEFloGHmUIALzS5JGnOVsLi4jRgw2n6cRMlaMx4ZlArP8K+MsQnkuObeQLmGub3DRcz9azOFKGiugY0QJ5AI9bxlgMMQ1JkbQBVkjQDJCC3RR9mCUZyivOiBnFEh61SG540h7gvPGkawuyR9HsrukYBypU06kW+AsQ1ROzhknUMiPfGEQyJ+K7EKCMyjSWYpTsZZM06sxMKVPIzySVg2B2PFggm8QFiNsxzWFTfWC03Bjf9HYK9fDyn7zaCwQ7vda+bqJgZ4FzkVty/vkrjL/xKKCICrKrBkcYZlHRvMkzZrTgYylycmkhizfSsCSYL052UDPVnvtaPtUbcMW2Mf9zd4RXHn+NhGYPXZTIRqLPi7svrP2hMgK3r54VGpayQU9D58aYHUAXoR6XhY1I9gwjGjb3YqT9myrmuM1nDRuccY50wLExSCEZdd+qIcyb7HyWMTJMFy9R4ayhQImME/aRDQsQLfBrUkr39niuKb6lbMi29LS42gP2+N1RYcFaHovdzDLj3PmWwIzeeqSKHxYUMbhDEuPZKtpslu0cge0qlzVQ6s6QKv3WisLSFOnln4lhRqc5YLDSHwtiLbz6UFWuxR8khlyJFUeV4OVprueC8RvOIJPaomi0Fy9LVxCeQUAD1jejenrhpohBRbpF7RE+HGdoXpNsp7xNP5NzWE1V60VJMP1Chfc3Tp3ZlDN4KWaSOWjcioUGZb3remYE9M0QelD6WPjRGUnZeg9aQZnBcZINMRHeQfVUz++/9OMf47qUYzmm+XZ71w9UqrCVMNT3bdKTxJIF6Ugtj1TrTWaxXzzuGdU5Cq5eZTKOvy2JjOGS9NrmbedgZRKcIzmUGZmAyspRunYy0yATibsckTeZ/JSXCK14ujMsKF5AY4zLjG3rOAp4tpXtGpl58VolHcXDsua1cma+/5Z+/H976F5s4A3Lm9/ydXqO1neytru2LAE2Xsa7AQJGtxwVhD83x3nnGXHyTycdce5Z9pxjj3yCH/vjvPOtONcc+RR/n4d559lx7n+yLP6P+q44Ew7znNGHuHHd5yxo24PSl8wRvq6gW8C++b6OOl7d+c5wL91+kjf+57bGKMoJRDv3cdfwOU7a9+echVMRhYlZivEvyAh92J/RNbgiA6p1p5aEtwcE9IfjEC6PyJ7X0Q8XSQDBCUIeoTUVX/3I0N6s+acwTt0SP71VGynKzp3cEiHhFtPOXWyovOGF11HU/Uquq4AOknR+YN36JAC6ilaTld0wfCQDmiXnoriZEU3GV50HVnxStF1NQAt737auvPVD2dhXJQ/q5WDMlTHn3jWy5/LHpprv34X3cO09jGdwHWB7wDwOhO0mUbrH6pX/wJQSwMEFAAAAAgAAAAhAL5+dmJWAQAA0AMAABQAHAB3b3JkL3dlYlNldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAACd01FvwiAQAOD3JfsPhHelumlMYzVZFpe9LEu2/QAKV0sGXAO46n79aLWuiy92T0DLfbnjYLneG02+wHmFNqOTcUIJWIFS2W1GP943owUlPnAruUYLGT2Ap+vV7c2yTmvI3yCEuNOTqFifGpHRMoQqZcyLEgz3Y6zAxp8FOsNDXLotM9x97qqRQFPxoHKlVTiwaZLM6Ylx1yhYFErAI4qdARvaeOZARxGtL1XlO62+RqvRycqhAO9jPUYfPcOVPTOT+wvIKOHQYxHGsZhTRi0VwydJOzP6F5gNA6YXwFzAfpixOBksRvYdJYc587OjZM/5XzI9QO4GEdO7Lo9maMJ7lpdBlsO4rkesieWBl9yXfRGGFTg7cwfTnLcR6fPWouO5jlK8QSReAtLC5NiFZiDHxpKuBNKeC13FJ4ZVUEZ9wwbdg8Pag2PNZ6411q8vT3HB/rzD1Q9QSwMEFAAAAAgAAAAhAD+v4WZfDwAADaYAAA8AHAB3b3JkL3N0eWxlcy54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA3Z1tc9s2Esff38x9B45e9V6ksp5lT92O7STnzCWpWzvX1xAJWaj5oCOpOO6nPwB8EKUlKC64UdRMZlqL4v4I4L+7xIIU+dMvXwLf+czjREThZW/w41nP4aEbeSJ8vOx9enj7at5zkpSFHvOjkF/2XnjS++Xnf/7jp+eLJH3xeeJIQJhcBO5lb5Wm64t+P3FXPGDJj9Gah/LLZRQHLJUf48d+wOKnzfqVGwVrloqF8EX60h+enU17OSZuQ4mWS+Hy15G7CXiYavt+zH1JjMJkJdZJQXtuQ3uOYm8dRy5PEtnpwM94ARNhiRmMASgQbhwl0TL9UXYmb5FGSfPBmf4r8LeACQ4wBICpy7/gGPOc0ZeWVY7wcJxpyRFehWPXmArA26AQw1HRDvU/ZV5hJV7qrXC4QqO+smUpW7FkVSVyXAcnJe4lUOMduBfvHsMoZgtfkqQHOdIJHA12MhXU/5xMWKfogqPHpfezjC4vcl/zJdv4aaI+xndx/jH/pP/3NgrTxHm+YIkrxGXvKhZMDvHzBWdJepUI9iBbLg8fCNmS26swEerLlfqjsrObXPYeRCBD+SN/dn6PAhY6P1xH3otzc/+vXl8d6InHodzzM/Mve8NsU/JXuWFcbLlJ9rf5LHwstvHw1af7ausqmxbCk01i8av7K204GF/44pGlm1g2S33ShCwRxd6N7Db/km5k++XO/Xw8+vujtC4/ZXvtDalMGDJ93GdZTH7Ll+8j94l796n84rJ31ss2fnp3F4solpnqsnd+nm+854G4FZ7Hw8qO4Up4/I8VDz8l3Ntu/+2tzjb5BjfahPLv0WyqZfYT780Xl69V7pLfhkzp9VEZaG02Yntwbf6/AjbIB7jOfsWZSuDOYB9xjkYMlUVS6W09c7PX9wH6QKNjHWh8rANNjnWg6bEONDvWgebHOtD51z6QCD2Z3wf1hwHUQxxDNKI5hmBDcwyxhOYYQgXNMUQCmmNwdDTH4MdojsFNEZw0ck1eWHH2kcHbm7mHzxF23MOnBDvu4TOAHfdwwrfjHs7vdtzD6dyOezh723EPJ2s8N5tqOe9kmIVp5yhbRlEaRil31PS0M42FkqWrWhqeOunxmKSTBJgss+Un4s40l+nPhz1k0u18nqqCzomWzlI8quKkc8N5+Jn70Zo7zPMkjxAYc1k+GUbExqdjvuQxD11O6dh0UF+E3Ak3wYLAN9fskYzFQ494+AoiSVIoHZpt0pUKEkHg1AFz44hgzsLI8sN7kXQfKwVxrje+z4lYH2lcTLO61wYa07000JjulYHGdC8MKppRDVFOIxqpnEY0YDmNaNwy/6Qat5xGNG45jWjcclr3cXsQqc/3Zx2D9mt3N36UUCS8e/EY6vXTzqR8zdS5YzF7jNl65ahl54MzLfRx9JLzA8U5rSRRzeu1i6hVZxFuug/oDo0quEoeUXiVPKIAK3ndQ+yDnCarCdotTT1zv1mktUHbviq4Z/4mm9B2jzaWdvewbQC8FXFCFgb1WAIP/qims7dEU71tK7s3bMvqHlb7WYm0eTmSoJV+5D7RpOHblzWPZVn21Jn0NvL96Jl7dMT7NI4yX6uG/HDYOuTfBOsVS0QCEO1P9cUdDM4Htu7coTufiZBGtzevAiZ8h24Gcfvw4b3zEK1VmakGhgZ4HaVpFJAx85XAH/7gi3/RNPBKFsHhC1Fvr4iWhzTsRhCcZDJS5BGR5DRThILkHKp5/+Evi4jFHg3tLubZTUMpJyLes2DtU8WWzIvPMv8QzIY0778sFmpdiCqoHkhglWXDZLP4k7vdU93HyCFZGfp1k+r1Rz3V7X61dwfXfZqwg+s+RdBqytOD8l+Czu7gund2B0fV2RufJYkwXkK15lF1t+BR97d78ZfzIj+KlxufbgALINkIFkCyIYz8TRAmlD3WPMIOax51fwldRvMIluQ079+x8MjE0DAqJTSMSgYNo9JAw0gF6H6HTgXW/TadCqz7vToZjGgKUIFR+Rnp6Z/oKk8FRuVnGkblZxpG5WcaRuVno9cOXy7lJJjuFFNBUvlcBUl3oglTHqyjmMUvRMg3Pn9kBAukGe0ujpbq1yRRmN3ETTGd3SxSysl2hqMS+Q++IGuaYlG2i2BFlPl+FBGtrW1PONpy9961Q2b65xydm3DnM5evIt/jsaFPjfXy/Zq5Ai6dtr9Y8l48rlLnflWu9lcx07ODlkXBvmN2+IB1Yz4dNl5m8sQmKBoKf0wxHbU3HgLj8WHj7Uxix3LS0hIec3rYcjtL3rGctbSEx5y3tBwBy6Z4eM3ip1pHmDX5T1njGZxv1nhhvjCuPWyTI5WWdS44a/KinVBxrlxXXS2A6rSLGbN9u+Ax22OiyEzBhJOZ0jquzIimAPudfxZJ7Rr1gevf5d0TIO+PW2fO3zZRCi5TD9v/qOudnDiFCXdqOaP2F652sox5HFunGzOidd4xI1onIDOiVSYymqNSkpnSOjeZEa2TlBmBzlbwjIDLVtAel62gvU22ghSbbNVhFmBGtJ4OmBHoQIUIdKB2mCmYEahABeZWgQop6ECFCHSgQgQ6UOEEDBeo0B4XqNDeJlAhxSZQIQUdqBCBDlSIQAcqRKADFSLQgWo5tzeaWwUqpKADFSLQgQoR6EAddwxUaI8LVGhvE6iQYhOokIIOVIhABypEoAMVItCBChHoQIUIVKACc6tAhRR0oEIEOlAhAh2ok46BCu1xgQrtbQIVUmwCFVLQgQoR6ECFCHSgQgQ6UCECHagQgQpUYG4VqJCCDlSIQAcqRKADddoxUKE9LlChvU2gQopNoEIKOlAhAh2oEIEOVIhABypEoAMVIlCBCsytAhVS0IEKEehAhYgm/8wvUZpusx/gVz2Nd+wjfueTNer36k+5d9ZQ26OKVplZ7X+LcB1FT07tDw9Ho/YQsfBFpJeoDZfVq9wZ+sLnrzfNv/Bp8RiPtl3Jfwuhr5kC+LitJVhTGTe5fNUSFHnjJk+vWoJZ57gp+1YtwWlw3JR0dVwWN6XI0xEwbkozFeOBwbwpW1fM4RA35eiKIRzhpsxcMYQD3JSPK4YTRyXnfetJy3GalveXAkKTO1YIMzOhyS2hVsa1/daimQlt1TMT2spoJqD0NGLwwppRaIXNKDupYZhhpbYPVDMBKzUkWEkNMPZSQ5S11BBlJzVMjFipIQErtX1yNhOspAYYe6khylpqiLKTGp7KsFJDAlZqSMBK3fGEbMTYSw1R1lJDlJ3UcHKHlRoSsFJDAlZqSLCSGmDspYYoa6khyk5qUCWjpYYErNSQgJUaEqykBhh7qSHKWmqIapJar6LYV0sVc9wkrGKIOyFXDHHJuWJoUS1VrC2rpQrBslqCWtlVS1XR7Kqlqnp21VJVRrtqCehpVy3VCmtXLdUqbFctmaXGVUt1UtsHql21VCc1rloySo2rlhqlxlVLjVLjqiWz1LhqqU5qXLVUJ7V9crarloxS46qlRqlx1VKj1LhqySw1rlqqkxpXLdVJjauW6qTueEK2q5YapcZVS41S46ols9S4aqlOaly1VCc1rlqqkxpXLRmlxlVLjVLjqqVGqXHVkllqXLVUJzWuWqqTGlct1UmNq5aMUuOqpUapcdVSo9S4aumDNBEEj4C6D1icOnTPi7tlySpl3R9O+CmMeRL5n7nn0Hb1PaqX/eed118ptn6dn9w/lWOmnoBe+bmSlz0BNgfqHd955WuqlLFqiZO/5yvfrBucX67NjqgNDxyqhOfXigcAv325lT7Cgsle/RrWHTxUD0as2a4cotheHOZmxeLs262rFvuc7/fl+SJO1Avcsq/Pzoaj0evZdbbXOns12xPn64/y+P3ig9SHJ/pTkv2AVpov1DPF5AiMpvq3V2yZ8viyN8+jNsqe2vT+s18eKZcuP0btW+CKV76xPyuvfNt/H5z68k2+TX2vXwlXa+kmaWXztfBE1jhXRXnZrrfj2VT7ht5ZZ4DLHtPxv92sbkpR9xm8zQjbF8gVF5urL5AbF30tXu1m4zxDo/MMKZ1n2MJ5tmGZ7bcTlF/ZvQYt3WvwfbrXaAjdK9vW0b1GRvcaUbrX6Dtxr2Gzex1yomO4ynAOXSXb1tFVxkZXGVO6yvjEXWVe9ZSx0VNGX8dTRPbfm4TEbzp6xMToERNKj5h8Hx4xPs3c0dEHpkYfmFL6wPTEfcAs++ToiWByrv7tO4F609LWBR6EeoPv1ZTAA2ZGD5hResDsb+sB0yME/pE1nxs1n1NqPj8pzaGys6PH9nCm/rXR+TXFnO/cqPM5pc7nJ67z/AgRTK+sKweVufkD1Q3rX/mLkcon++jXIu1rbnh7kkGvQTu9zO1O1SpsQ5v1Km3jwl3+sHaTQ7X2qHThZ1LLP96FyqGe83fYZy31vrBeseMN9/0PLNs7Wpt39fkyzb4dnM1rvl9kr4Qw2sf62oER0N9tTL/shHm8s5dE5j9qMa6T6keGweHOHiXWcaRb+rC7SeTQ6OXe/fbtrIHut/K2WG51tnlmL3HVxoEpXQ0OpCpz8vle1qO6LHciJR02SjokknSIO/t8/wp3WXFEKjxqVHhEpPDoayn8d1/0Q6o1blRrTKTW+NTUOvbCG1KVSaMqEyJVJqemysnpMG3UYUqkw/TUdDjqahRSklmjJDMiSWanJslpiTBvFGFOJML81EQ46koOUpLzRknOiSQ5PzVJvslyWvZgi/2xzrZSrKNpUtMi2iAv2FBrZNtF7r0L4656fcWXdMP8/En6jctjxyyBtk3W3XpV9PuJx+XgbifLZXqcwunzhDgRbiWqdYOu4VbxJbP6p1m2Hl+z+iAtX6K9L1D5BUWoFrDGaB1YRGu4CbI/hA/vhyq/BDE9mB64Je+bTECAVwwm36Lm3RHL5BZdQ3fXvczecOJzxq8sWX3MZq8B2Fcm20oRrZrUFKpDmztrD92ANige3venW3BUEcvj2khtmGSOz9S/NhpS18PbgasVp2vMVBQ2a3IwYI46cvUOrC6fbN+rsT9We6/dOOTRcChGYwv3FPpSl7pQpZ6R12LO19Jdyk7nD44rn2a3323wuDuco9R4BOqEetg7jnifVT4W9Ylu920oFAmverimvDeyKSjW117lAqneL5GelL9X+y91j5yTZUeuJ61OPuyW6+PlpdSvfKT+tmeHfhgxKjJ7NcbmU90afWU3+0SS/L/peijwo0bX7Xo62AmSAx57cnHfmCO3z9Y0DeB2j65Zsrjmh8qSi+yo+WglMqn4N2xNM3ZgSjmpH9Hir+Tn/wNQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL3RoZW1lL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAHAB3b3JkL3RoZW1lL3RoZW1lMS54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA7VlPb9s2FL8P2HcgdHf1x5IsBXUL/23XJm3RpB16ZGRaYkyJAkknMYoCQ3vaZcCAbthlwG47DMMKrMCKXfZhCrTYug8xSnZs0abatE23AksMxCL5e48/vvf4+ExdvHycEnCIGMc0axv2BcsAKIvoCGdx27izN2wEBuACZiNIaIbaxgxx4/KlTz+5CLdEglIEpHzGt2DbSITIt0yTR7Ib8gs0R5kcG1OWQiGbLDZHDB5JvSkxHcvyzRTizAAZTKXam+MxjhDYK1Qal06UD4j8lwledESE7UbljFWJEjua2MUXn/EeYeAQkrYh5xnRoz10LAxAIBdyoG1Y5Z9hXrpoLoWIqJGtyA3Lv4XcQmA0cUo5Fu8vBa2BE7j2Ur8z17+JGwTFZ6mvBMAokiu1N7C251uBs8BWQPNHje6wZTdVfEV/c1N/6HcdV8E3V3h3c43DcND3FLy7wnsb+I7ldMOmgvdWeH8D7w46LWeg4EtQQnA22UT7rSDwF+glZEzJVS089H2r1V/AVyizEl1z+UzUxVoKDygbSkDpXChwBsQsR2MYSVwnF5SDPuY5gTMD5DCjXHZbjm3LwHMtZ/kpLQ63EKxIz7sivtFV8AE8YjgXbeOa1GpUIC+ePXv+8Onzh789f/To+cNfwDaOE6GRuwqzuCr36sev//7+C/DXrz+8evyNHs+r+Jc/f/ny9z9ep14otL598vLpkxffffXnT4818A6D+1X4Hk4RBzfQEbhNU7lAzQRon72dxF4CcVWik8UcZrCQ0aAHIlHQN2aQQA2ui1Q73mUyXeiAV6YHCuHdhE0F1gCvJ6kC3KGUdCnTrul6MVfVCtMs1k/OplXcbQgPdXP31rw8mOYy7rFOZS9BCs1bRLocxihDAhRjdIKQRuwexopdd3DEKKdjAe5h0IVYa5I9vC/0QldxKv0y0xGU/lZss3MXdCnRqe+jQxUp9wYkOpWIKGa8AqcCplrGMCVV5DYUiY7k7oxFisG5kJ6OEaFgMEKc62RusplC9zqUeUvr9h0yS1UkE3iiQ25DSqvIPp30EpjmWs44S6rYz/hEhigEt6jQkqDqDina0g8wq3X3XYzE2+3tOzIN6QOkGJky3ZZAVN2PMzKGSKe8w1IlxXYY1kZHdxorob2NEIFHcIQQuPOZDk9zqid9LZFZ5SrS2eYaVGO1aGeIy1qpKG40jsVcCdldFNMaPjuztcQzg1kKWZ3mGxM1ZAb7TG5GXbySaKKkUsyKTasncZOn8FRabyVQCauizfXxOmPZ2+4xKXPwDjLorWVkYj+1bfYgQfqA2YMYbOvSrRSZ6kWK7VSKTbVyY3XTrtxgrhU9Kc7eUAH9N5XPB6t5zr7aqUso6zVOHW69sulRNsIff2HTh9PsFpJnyXldc17X/B/rmrr9fF7NnFcz59XMv1bNrAoYs3rZU2pJa29+xpiQXTEjaJuXpQ+Xe380lJ1loxRaXjTliXxcTKfgYgbLZ8Co+ByLZDeBuZzGLmeI+UJ1zEFOuSyfjFrdZfE1TXfoaHGPZ5/cbUoBKFb9lrfsl6WamPf6rdVF6FJ92Yp5lYBXKj09icpkKommhkSreToStnVWLEINi8B+HQuz4hV5OAFYXIt77pyRDDcZ0qPCT3P5E++euafrjKku29EsL3TPzNMKiUq4qSQqYZjIw2O9+4x9HYZ6VztaGq3gQ/ja3MwNJFNb4EjuuaYn1UQwbxtj+bNJPqa51MeLTAVJnLWNSCwM/S6ZJWdc9CFP5rByaL7+FAvEAMGpjPWqG0i24mY7LevjJRdaH5/lzHUno/EYRaKmZ9WUY3Ml2tH3BBcNOpWkd5PREdgnU3YbSkN5Lbsw4AhzsbTmCLNKcK+suJauFltReQO02qKQ5AlcnCjVZD6Hl89LOpV1lEzXV2XqTLgfD8/i1H2z0FrSrDlAWrVZ7MMd8hVWTT0rT5vrwsB6/Snx/gdChVqgp9bUU6s7O86wIKhM59fYzan15nueButRa1bqyrK18XKb7h/IyO/LanVKBJ9fkB3L8rt38lpyngnK3pPscizAlOG2cd/yOm7P8XoNK/AGDbfpWo3A6zQbHc9r2gPPtvpd54E0ikhS25vPPZQ/9sls8e6+7N94f5+elNoXIpqatKyDzVK4fH9vO/Xv7wGWlrnvO8OwGXb9RtjsDBtuvxs0wp7fbfT9Xqs/7Pe8IBw+MMBhCXY7zZ7rD4KGb/d6Dde3CvpB2Gi5jtNxW51g4HYeLGwtV37yfWLektelfwBQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL19yZWxzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhALO+ix3+AAAAtgMAABwAHAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQJAAMw0M4SiBztaHV4CwABBPUBAAAEFAAAAK2TzWrDMBCE74W+g9h7LTttQwmRcymBXFv3AWR7/UP1Y6RNWr99RUoShwbTg44zYme+hdV6860VO6DzvTUCsiQFhqaydW9aAR/F9uEFmCdpaqmsQQEjetjk93frN1SSwpDv+sGzkGK8gI5oWHHuqw619Ikd0ISXxjotKUjX8kFWn7JFvkjTJXfTDMivMtmuFuB29SOwYhzwP9m2afoKX22112joRgX3SBQ28yFTuhZJwMlJQhbw2wiLqAg0KpwCHPVcfRaz3ux1iS5sfCE4W3MQy5gQFGbxAnCUv2Y2x/Ack6GxhgpZqgnH2ZqDeIoJ8YXl+5+TnJgnEH712/IfUEsBAh4DFAAAAAgAAAAhADKRb1deAQAApQUAABMAGAAAAAAAAQAAAKSBAAAAAFtDb250ZW50X1R5cGVzXS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UGrAQAAZG9jUHJvcHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhACEYr1llAQAAxQIAABAAGAAAAAAAAQAAAKSB7gEAAGRvY1Byb3BzL2FwcC54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEACvOn+GYBAADtAgAAEQAYAAAAAAABAAAApIGdAwAAZG9jUHJvcHMvY29yZS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UFOBQAAX3JlbHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAB6RGrfpAAAATgIAAAsAGAAAAAAAAQAAAKSBjgUAAF9yZWxzLy5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1BvAYAAHdvcmQvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAGAAAAAAAAQAAAKSB+wYAAHdvcmQvZm9udFRhYmxlLnhtbFVUBQADnhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABgAAAAAAAEAAACkgVcJAAB3b3JkL2RvY3VtZW50LnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDK52WKKwQAAL4MAAARABgAAAAAAAEAAACkgXcMAAB3b3JkL3NldHRpbmdzLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDbhWzDfQQAAJcdAAASABgAAAAAAAEAAACkge0QAAB3b3JkL251bWJlcmluZy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAvn52YlYBAADQAwAAFAAYAAAAAAABAAAApIG2FQAAd29yZC93ZWJTZXR0aW5ncy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAP6/hZl8PAAANpgAADwAYAAAAAAABAAAApIFaFwAAd29yZC9zdHlsZXMueG1sVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BAicAAHdvcmQvdGhlbWUvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAGAAAAAAAAQAAAKSBRycAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJNkTVsAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQTEuAAB3b3JkL19yZWxzL1VUBQADhhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCzvosd/gAAALYDAAAcABgAAAAAAAEAAACkgXYuAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsFBgAAAAARABEAqQUAAMovAAAAAA==`, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, cacheByEditor, OBJECT_REPLACEMENT_CHAR = "", LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES, VALID_APPEARANCES, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, ALIGNMENT_TO_JUSTIFICATION, DERIVED_ID_LENGTH = 24, groupedCache, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES, SETTINGS_PART_PATH = "word/settings.xml", POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART = "word/settings.xml", TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS$1 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, DOCUMENT_RELS_PATH$1 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN$1, FOOTER_FILE_PATTERN$1, HISTORY_UNSAFE_OPS, IGNORED_ATTRIBUTE_KEYS, TRACK_CHANGE_MARK_NAMES, TRACK_CHANGE_IGNORED_ATTRIBUTE_KEYS, SIMILARITY_THRESHOLD = 0.65, MIN_LENGTH_FOR_SIMILARITY = 4, COMMENT_ATTRS_DIFF_IGNORED_KEYS, setNestedValue = (target, path2, value) => {
|
|
198664
|
+
}, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,UEsDBBQAAAAIAAAAIQAykW9XXgEAAKUFAAATABwAW0NvbnRlbnRfVHlwZXNdLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1lMtqwzAQRfeF/oPRNthKuiilxMmij2UbaPoBijRORPVCmrz+vuM4NaWkMeSxMcgz994zQsxwvLEmW0FM2ruSDYo+y8BJr7Sbl+xz+po/sCyhcEoY76BkW0hsPLq9GU63AVJGapdKtkAMj5wnuQArUuEDOKpUPlqBdIxzHoT8EnPgd/3+PZfeITjMsfZgo+EzVGJpMHvZ0O+GJIJJLHtqGuuskokQjJYCqc5XTv1JyfcJBSl3PWmhQ+pRA+MHE+rK/wF73TtdTdQKsomI+CYsdfG1j4orL5eWlMVxmwOcvqq0hFZfu4XoJaREd25N0Vas0K7XxeGWdgaRlJcHaa07IRJuDaTLEzS+3fGASIJrAOydOxHWMPu4GsUv806QinKnYmbg8hitdScE0hqA5js4m2NncyySOifRh0RrJZ4w9s/eqNU5DRwgoj7+6tpEsj57PqhXkgJ1IJvvluzoG1BLAwQKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAcAGRvY1Byb3BzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhACEYr1llAQAAxQIAABAAHABkb2NQcm9wcy9hcHAueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ1STU/DMAy9I/Efqt63dBwmNHlBaAhx4GPSCpyjxG0j0iRKson9e5wVSoEbOdnP9st7TuDqvTfFAUPUzq7LxbwqC7TSKW3bdflc384uyyImYZUwzuK6PGIsr/j5GWyD8xiSxlgQhY3rskvJrxiLssNexDmVLVUaF3qRKA0tc02jJd44ue/RJnZRVUuG7wmtQjXzI2E5MK4O6b+kysmsL77UR098HGrsvREJ+WOeNHPlUg9sRKF2SZha98grgscEtqLFyBfAhgBeXVAx9wwBbDoRhEy0vwxOMrj23mgpEu2VP2gZXHRNKp5OYos8DWzaAmRgh3IfdDpmqmkK99ri6YIhIFVBtEH47gROMthJYXBD1nkjTERg3wBsXO+FJTo2RsT3Fp997W7yFj5HfoITi686dTsvJP4yO8FhRygqUj8KGAG4o8cIJrPTrG1RffX8LeT1vQy/ki+W84rOaV9fGLkevwv/AFBLAwQUAAAACAAAACEACvOn+GYBAADtAgAAEQAcAGRvY1Byb3BzL2NvcmUueG1sVVQJAAMw0M4SMNDOEnV4CwABBPUBAAAEFAAAAJ2SXU+DMBSG7038D6T3UGBqDAGWTLMrZ0yc0XhX27Otjn6k7cb27y0wmMRdeXc+nvP29G3z6UFUwR6M5UoWKIliFICkinG5LtDbch7eo8A6IhmplIQCHcGiaXl9lVOdUWXgxSgNxnGwgVeSNqO6QBvndIaxpRsQxEaekL65UkYQ51OzxprQLVkDTuP4DgtwhBFHcCMY6kERnSQZHST1zlStAKMYKhAgncVJlOAz68AIe3Gg7fwiBXdHDRfRvjnQB8sHsK7rqJ60qN8/wR+Lp9f2qiGXjVcUUJkzmjnuKihzfA59ZHdf30BdVx4SH1MDxClTPnO6DWZgJKlapq83jm/hWCvDrJ8eZR5jYKnh2vl37LRHBU9XxLqFf9gVBzY7jo/5224mDOx58y/KtCWGND+Z3K0GLPDmZJ2Vfed98vC4nKMyjdObMEnD5G6Zpll8m8XxZ7PdaP4sKE4L/FuxF+gMGn/Q8gdQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAYAHABfcmVscy9VVAkAA4Yc7WiHHO1odXgLAAEE9QEAAAQUAAAAUEsDBBQAAAAIAAAAIQAekRq36QAAAE4CAAALABwAX3JlbHMvLnJlbHNVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAArZLBasMwDEDvg/2D0b1R2sEYo04vY9DbGNkHCFtJTBPb2GrX/v082NgCXelhR8vS05PQenOcRnXglF3wGpZVDYq9Cdb5XsNb+7x4AJWFvKUxeNZw4gyb5vZm/cojSSnKg4tZFYrPGgaR+IiYzcAT5SpE9uWnC2kiKc/UYySzo55xVdf3mH4zoJkx1dZqSFt7B6o9Rb6GHbrOGX4KZj+xlzMtkI/C3rJdxFTqk7gyjWop9SwabDAvJZyRYqwKGvC80ep6o7+nxYmFLAmhCYkv+3xmXBJa/ueK5hk/Nu8hWbRf4W8bnF1B8wFQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAHAB3b3JkL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAHAB3b3JkL2ZvbnRUYWJsZS54bWxVVAkAA54c7WieHO1odXgLAAEE9QEAAAQUAAAAvZPBbqMwEIbvlfoOlu8NhpA0RSFV222kvexh1T6AY0ywFtvI44Tk7dcYiBSyuy3tqiCEGf75mPnHLO8PskR7bkBoleJwQjDiiulMqG2KX1/WNwuMwFKV0VIrnuIjB3y/ur5a1kmulQXk8hUkkqW4sLZKggBYwSWFia64ci9zbSS17tFsA0nNr111w7SsqBUbUQp7DCJC5vj6CrmjZZn3oHSeC8a/abaTXFkPCQwvHVYrKEQFZ8j6Pcham6wymnEA170sW6ikQp2zwviCJgUzGnRuJ663rjbPc4yQ+JUsB5TZOEr0Z8qc8cM40KIDBS7zAiaycbD5CSayIexjZQ0p2W4UJ5r2FTW3Jn0IhMxmxThmP8GgyaWWFhSKCywf1+/sxDxKNwgkWfJ9q7Shm9KR3CZDbosgD0btZJobaieO+j6Qdwiv2mK6nxLViaLSUV6E5IB+8Br91JKqXtZJK6o08NCp97RMMWkanZMpmZHYXZFbxTg4T2EFNcDtKYUMBTmVojz2743/6kBSCcuKXrGnRjQdD0Ugtk6ygw1J8TMhJHper3EbCVP85CK3i9ljF4maSvxx10WmpwhpIsxz/GPYcpjnnDT915dB6+Bf/HzSOyO4aRx908tb59+d97TxMv60l1Jn3PzbzFwcePYRJ+PpVzv54MZevunho9uPsfewPT/rIdQC4P/sx4evdrFfwuo3UEsDBBQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABwAd29yZC9kb2N1bWVudC54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAApZZbb9sgFMffJ+07WH5v8S1OYjWttGab+jCpWrcPQIDEqAYsILd9+h3s+LJ5qxz3CXPg/PjDORxz93AShXdg2nAlV354G/gek0RRLncr/+ePLzcL3zMWS4oLJdnKPzPjP9x//HB3zKgie8Gk9QAhTXYsycrPrS0zhAzJmcDmVnCilVFbe0uUQGq75YSho9IURUEYVF+lVoQZA+s9YnnAxr/gyGkcjWp8BGcHTBDJsbbs1DHCqyEztESLISiaAIIdRuEQFV+NSpFTNQAlk0CgakCaTSP9Y3PpNFI0JM2nkeIhaTGNNEgnMUxwVTIJg1ulBbbQ1TsksH7dlzcALrHlG15wewZmkDYYzOXrBEXg1RJETK8mzJFQlBUxbShq5e+1zC7+N62/k57V/pem9WDFuGVhuSViJ1sY2/jqMWdXu68vhaU6NaRZAeeopMl52VYHMZUGg3kDObx1AAdR+G1lC0detf+VtnUdhg44Rv4ldqKolb9NDIMR0XSI1mOMhD/XbJQIyOBu4UlH0zvccGTxaQDRAJASNvJn0TAWFwYi3e12HD7yWjWctOVw2uNME9MD0P1ViChudLjGufdYhlqaX4drYoScL7Y4xybvE9l1G5y1uLPonXe5e9+l+qrVvuxo/H20p668HuV1GwzSvyNYmveJeclxCVVXkOxpJ5XGmwIUwVXz4LZ4VQS8Ol1d49U3wGti7VUJ5Lmq5d/DO22j6Nm1JQwkWYk1foI0T8JlmqTz0K+s8Jezzhoks+VivpyBNYM3If0OJkiveD3/1JqetTPGYZA8fm6Na7bF+8IOpz/3JiMnwzBin/VYfiV89/ILBqFihVGUBG4iJHQ4W8A3qid8w45oFRTWMKmnaL7LbdfdKGuV6PoF2/ZGc4Ypg3XnUdXdKmV73d3eVt3LckQVBqymxITVcyozvIe/aheSrOCSPXNLQGWcVqOo2Xf1WUcEdU/o+99QSwMEFAAAAAgAAAAhAMrnZYorBAAAvgwAABEAHAB3b3JkL3NldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAAC1V22PmzgQ/n7S/QfE58uG1ySLmq3yervV5lqVre6zAZNYa2Nkm03T0/33GwwO9BZVSav9hJln5pnxeGYM795/ZdR6wUISXsxt98axLVykPCPFfm5/edqOZrYlFSoyRHmB5/YJS/v93e+/vTtGEisFatICikJGLJ3bB6XKaDyW6QEzJG94iQsAcy4YUvAq9mOGxHNVjlLOSqRIQihRp7HnOBO7peFzuxJF1FKMGEkFlzxXtUnE85ykuH0YC3GJ38ZkzdOK4UJpj2OBKcTAC3kgpTRs7GfZADwYkpcfbeKFUaN3dJ0LtnvkIjtbXBJebVAKnmIp4YAYNQGSonMcvCI6+74B3+0WNRWYu45e9SMPryPwXhFMUvz1Oo5ZyzEGyz4Pya7jmZx5SNbj+blgegRZdRWF55s46kdt3uOSmcoO19GZMxrXtkihA5KHPiO+boPhme7EunxLekkFNtAjSQQSp375sTR62BdcoIRCOFCGFlSSpaOzmqOsH1ZTHZbJg6WTa9/B1PnGObOOUYlFCq0HI8tz7HENQMHzPFZIAVEkS0ypnmEpxQj8HqO9QAymj5FomwznqKLqCSWx4iUovSDY3tRQpgckUKqwiEuUAtuKF0pwavQy/hdXK5hkAhqttdBzrVvFzYwEiwIx2PB3c2/HM1xHVgly+cnYxrsb9l3+3xGHmS5Ihp/qRMfqRPEWgo/JN7wosg+VVAQY9fT7hQh+FAAuas8foTSeTiXeYqQqSNMbOdMnsaWk3BEhuHgoMqiNN3NG8hwLcECg1nZQPkTwo87zPUYZXKVv5LeS+G9Qhs70n6Asn5dcKc7uT+UBcv1rJ6nrfdwvX/ggyKRZfOZcnVVhbPnr6bKJtEYvQXzXCVabQWTibN1hm0XgO/4gsnLXbjCMhLPlaggJboOJuxhCJqG3CcIhZLH0Zv5sCFku3Wk4iKxW/srfDiIbZz28n83Km04HY9vees7tpj2d9kxYVH9qfBJmVTe2xRqLFWKJIMja1R8j41ojEc9LUhg8wTClcR+Jq8SAo1EDSIYo3UKJGcBp5BmR5Rrnek13SOw73lZDDEphyn44c9VTG4s/Ba/KBj0KVDYNa1TcIGgtSaEeCTNyWSWxsSrgXulBVZF9fBE6T116jpGCBtCD7xHpRtK6uBh9idtGoyKumwTvUFk2vZbs3blNyf6g3Lo9FLxl8M2qX5K912KexrwG0y8orXcG2u2ik3lG1tPzjczvZIGRBZ0sNLKwk02MbFLLDjBdBVx1z9D2ZlnLc04pP+LsvsNficwlmBI48fjEku5uu2kwSiTMoRKuQcWFwf7QmBtEGU8f6vs6aOT+YhGuF860gUN9fSo9qiC1n3G+RBJnLWZMw8b0n8nEmbjuajYKZpvb0WYaBKOZu7wdTafO1PW3rufPnH/bPjA/Hnf/AVBLAwQUAAAACAAAACEA24Vsw30EAACXHQAAEgAcAHdvcmQvbnVtYmVyaW5nLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAADNmc1u4zYQx+8F+g6CgB4Tifq2sM4iySZFFttF0U3RMy3RlhB+CBRlx9d9mT5CH2tfoaRkyXLkxJIctz4pJjk/zQxnyL+dDx+fCdaWiOcpo1MdXJq6hmjE4pQupvqfj/cXga7lAtIYYkbRVF+jXP949fNPH1YhLcgMcblQkwyah6ssmuqJEFloGHmUIALzS5JGnOVsLi4jRgw2n6cRMlaMx4ZlArP8K+MsQnkuObeQLmGub3DRcz9azOFKGiugY0QJ5AI9bxlgMMQ1JkbQBVkjQDJCC3RR9mCUZyivOiBnFEh61SG540h7gvPGkawuyR9HsrukYBypU06kW+AsQ1ROzhknUMiPfGEQyJ+K7EKCMyjSWYpTsZZM06sxMKVPIzySVg2B2PFggm8QFiNsxzWFTfWC03Bjf9HYK9fDyn7zaCwQ7vda+bqJgZ4FzkVty/vkrjL/xKKCICrKrBkcYZlHRvMkzZrTgYylycmkhizfSsCSYL052UDPVnvtaPtUbcMW2Mf9zd4RXHn+NhGYPXZTIRqLPi7svrP2hMgK3r54VGpayQU9D58aYHUAXoR6XhY1I9gwjGjb3YqT9myrmuM1nDRuccY50wLExSCEZdd+qIcyb7HyWMTJMFy9R4ayhQImME/aRDQsQLfBrUkr39niuKb6lbMi29LS42gP2+N1RYcFaHovdzDLj3PmWwIzeeqSKHxYUMbhDEuPZKtpslu0cge0qlzVQ6s6QKv3WisLSFOnln4lhRqc5YLDSHwtiLbz6UFWuxR8khlyJFUeV4OVprueC8RvOIJPaomi0Fy9LVxCeQUAD1jejenrhpohBRbpF7RE+HGdoXpNsp7xNP5NzWE1V60VJMP1Chfc3Tp3ZlDN4KWaSOWjcioUGZb3remYE9M0QelD6WPjRGUnZeg9aQZnBcZINMRHeQfVUz++/9OMf47qUYzmm+XZ71w9UqrCVMNT3bdKTxJIF6Ugtj1TrTWaxXzzuGdU5Cq5eZTKOvy2JjOGS9NrmbedgZRKcIzmUGZmAyspRunYy0yATibsckTeZ/JSXCK14ujMsKF5AY4zLjG3rOAp4tpXtGpl58VolHcXDsua1cma+/5Z+/H976F5s4A3Lm9/ydXqO1neytru2LAE2Xsa7AQJGtxwVhD83x3nnGXHyTycdce5Z9pxjj3yCH/vjvPOtONcc+RR/n4d559lx7n+yLP6P+q44Ew7znNGHuHHd5yxo24PSl8wRvq6gW8C++b6OOl7d+c5wL91+kjf+57bGKMoJRDv3cdfwOU7a9+echVMRhYlZivEvyAh92J/RNbgiA6p1p5aEtwcE9IfjEC6PyJ7X0Q8XSQDBCUIeoTUVX/3I0N6s+acwTt0SP71VGynKzp3cEiHhFtPOXWyovOGF11HU/Uquq4AOknR+YN36JAC6ilaTld0wfCQDmiXnoriZEU3GV50HVnxStF1NQAt737auvPVD2dhXJQ/q5WDMlTHn3jWy5/LHpprv34X3cO09jGdwHWB7wDwOhO0mUbrH6pX/wJQSwMEFAAAAAgAAAAhAL5+dmJWAQAA0AMAABQAHAB3b3JkL3dlYlNldHRpbmdzLnhtbFVUCQADMNDOEjDQzhJ1eAsAAQT1AQAABBQAAACd01FvwiAQAOD3JfsPhHelumlMYzVZFpe9LEu2/QAKV0sGXAO46n79aLWuiy92T0DLfbnjYLneG02+wHmFNqOTcUIJWIFS2W1GP943owUlPnAruUYLGT2Ap+vV7c2yTmvI3yCEuNOTqFifGpHRMoQqZcyLEgz3Y6zAxp8FOsNDXLotM9x97qqRQFPxoHKlVTiwaZLM6Ylx1yhYFErAI4qdARvaeOZARxGtL1XlO62+RqvRycqhAO9jPUYfPcOVPTOT+wvIKOHQYxHGsZhTRi0VwydJOzP6F5gNA6YXwFzAfpixOBksRvYdJYc587OjZM/5XzI9QO4GEdO7Lo9maMJ7lpdBlsO4rkesieWBl9yXfRGGFTg7cwfTnLcR6fPWouO5jlK8QSReAtLC5NiFZiDHxpKuBNKeC13FJ4ZVUEZ9wwbdg8Pag2PNZ6411q8vT3HB/rzD1Q9QSwMEFAAAAAgAAAAhAD+v4WZfDwAADaYAAA8AHAB3b3JkL3N0eWxlcy54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA3Z1tc9s2Esff38x9B45e9V6ksp5lT92O7STnzCWpWzvX1xAJWaj5oCOpOO6nPwB8EKUlKC64UdRMZlqL4v4I4L+7xIIU+dMvXwLf+czjREThZW/w41nP4aEbeSJ8vOx9enj7at5zkpSFHvOjkF/2XnjS++Xnf/7jp+eLJH3xeeJIQJhcBO5lb5Wm64t+P3FXPGDJj9Gah/LLZRQHLJUf48d+wOKnzfqVGwVrloqF8EX60h+enU17OSZuQ4mWS+Hy15G7CXiYavt+zH1JjMJkJdZJQXtuQ3uOYm8dRy5PEtnpwM94ARNhiRmMASgQbhwl0TL9UXYmb5FGSfPBmf4r8LeACQ4wBICpy7/gGPOc0ZeWVY7wcJxpyRFehWPXmArA26AQw1HRDvU/ZV5hJV7qrXC4QqO+smUpW7FkVSVyXAcnJe4lUOMduBfvHsMoZgtfkqQHOdIJHA12MhXU/5xMWKfogqPHpfezjC4vcl/zJdv4aaI+xndx/jH/pP/3NgrTxHm+YIkrxGXvKhZMDvHzBWdJepUI9iBbLg8fCNmS26swEerLlfqjsrObXPYeRCBD+SN/dn6PAhY6P1xH3otzc/+vXl8d6InHodzzM/Mve8NsU/JXuWFcbLlJ9rf5LHwstvHw1af7ausqmxbCk01i8av7K204GF/44pGlm1g2S33ShCwRxd6N7Db/km5k++XO/Xw8+vujtC4/ZXvtDalMGDJ93GdZTH7Ll+8j94l796n84rJ31ss2fnp3F4solpnqsnd+nm+854G4FZ7Hw8qO4Up4/I8VDz8l3Ntu/+2tzjb5BjfahPLv0WyqZfYT780Xl69V7pLfhkzp9VEZaG02Yntwbf6/AjbIB7jOfsWZSuDOYB9xjkYMlUVS6W09c7PX9wH6QKNjHWh8rANNjnWg6bEONDvWgebHOtD51z6QCD2Z3wf1hwHUQxxDNKI5hmBDcwyxhOYYQgXNMUQCmmNwdDTH4MdojsFNEZw0ck1eWHH2kcHbm7mHzxF23MOnBDvu4TOAHfdwwrfjHs7vdtzD6dyOezh723EPJ2s8N5tqOe9kmIVp5yhbRlEaRil31PS0M42FkqWrWhqeOunxmKSTBJgss+Un4s40l+nPhz1k0u18nqqCzomWzlI8quKkc8N5+Jn70Zo7zPMkjxAYc1k+GUbExqdjvuQxD11O6dh0UF+E3Ak3wYLAN9fskYzFQ494+AoiSVIoHZpt0pUKEkHg1AFz44hgzsLI8sN7kXQfKwVxrje+z4lYH2lcTLO61wYa07000JjulYHGdC8MKppRDVFOIxqpnEY0YDmNaNwy/6Qat5xGNG45jWjcclr3cXsQqc/3Zx2D9mt3N36UUCS8e/EY6vXTzqR8zdS5YzF7jNl65ahl54MzLfRx9JLzA8U5rSRRzeu1i6hVZxFuug/oDo0quEoeUXiVPKIAK3ndQ+yDnCarCdotTT1zv1mktUHbviq4Z/4mm9B2jzaWdvewbQC8FXFCFgb1WAIP/qims7dEU71tK7s3bMvqHlb7WYm0eTmSoJV+5D7RpOHblzWPZVn21Jn0NvL96Jl7dMT7NI4yX6uG/HDYOuTfBOsVS0QCEO1P9cUdDM4Htu7coTufiZBGtzevAiZ8h24Gcfvw4b3zEK1VmakGhgZ4HaVpFJAx85XAH/7gi3/RNPBKFsHhC1Fvr4iWhzTsRhCcZDJS5BGR5DRThILkHKp5/+Evi4jFHg3tLubZTUMpJyLes2DtU8WWzIvPMv8QzIY0778sFmpdiCqoHkhglWXDZLP4k7vdU93HyCFZGfp1k+r1Rz3V7X61dwfXfZqwg+s+RdBqytOD8l+Czu7gund2B0fV2RufJYkwXkK15lF1t+BR97d78ZfzIj+KlxufbgALINkIFkCyIYz8TRAmlD3WPMIOax51fwldRvMIluQ079+x8MjE0DAqJTSMSgYNo9JAw0gF6H6HTgXW/TadCqz7vToZjGgKUIFR+Rnp6Z/oKk8FRuVnGkblZxpG5WcaRuVno9cOXy7lJJjuFFNBUvlcBUl3oglTHqyjmMUvRMg3Pn9kBAukGe0ujpbq1yRRmN3ETTGd3SxSysl2hqMS+Q++IGuaYlG2i2BFlPl+FBGtrW1PONpy9961Q2b65xydm3DnM5evIt/jsaFPjfXy/Zq5Ai6dtr9Y8l48rlLnflWu9lcx07ODlkXBvmN2+IB1Yz4dNl5m8sQmKBoKf0wxHbU3HgLj8WHj7Uxix3LS0hIec3rYcjtL3rGctbSEx5y3tBwBy6Z4eM3ip1pHmDX5T1njGZxv1nhhvjCuPWyTI5WWdS44a/KinVBxrlxXXS2A6rSLGbN9u+Ax22OiyEzBhJOZ0jquzIimAPudfxZJ7Rr1gevf5d0TIO+PW2fO3zZRCi5TD9v/qOudnDiFCXdqOaP2F652sox5HFunGzOidd4xI1onIDOiVSYymqNSkpnSOjeZEa2TlBmBzlbwjIDLVtAel62gvU22ghSbbNVhFmBGtJ4OmBHoQIUIdKB2mCmYEahABeZWgQop6ECFCHSgQgQ6UOEEDBeo0B4XqNDeJlAhxSZQIQUdqBCBDlSIQAcqRKADFSLQgWo5tzeaWwUqpKADFSLQgQoR6EAddwxUaI8LVGhvE6iQYhOokIIOVIhABypEoAMVItCBChHoQIUIVKACc6tAhRR0oEIEOlAhAh2ok46BCu1xgQrtbQIVUmwCFVLQgQoR6ECFCHSgQgQ6UCECHagQgQpUYG4VqJCCDlSIQAcqRKADddoxUKE9LlChvU2gQopNoEIKOlAhAh2oEIEOVIhABypEoAMVIlCBCsytAhVS0IEKEehAhYgm/8wvUZpusx/gVz2Nd+wjfueTNer36k+5d9ZQ26OKVplZ7X+LcB1FT07tDw9Ho/YQsfBFpJeoDZfVq9wZ+sLnrzfNv/Bp8RiPtl3Jfwuhr5kC+LitJVhTGTe5fNUSFHnjJk+vWoJZ57gp+1YtwWlw3JR0dVwWN6XI0xEwbkozFeOBwbwpW1fM4RA35eiKIRzhpsxcMYQD3JSPK4YTRyXnfetJy3GalveXAkKTO1YIMzOhyS2hVsa1/daimQlt1TMT2spoJqD0NGLwwppRaIXNKDupYZhhpbYPVDMBKzUkWEkNMPZSQ5S11BBlJzVMjFipIQErtX1yNhOspAYYe6khylpqiLKTGp7KsFJDAlZqSMBK3fGEbMTYSw1R1lJDlJ3UcHKHlRoSsFJDAlZqSLCSGmDspYYoa6khyk5qUCWjpYYErNSQgJUaEqykBhh7qSHKWmqIapJar6LYV0sVc9wkrGKIOyFXDHHJuWJoUS1VrC2rpQrBslqCWtlVS1XR7Kqlqnp21VJVRrtqCehpVy3VCmtXLdUqbFctmaXGVUt1UtsHql21VCc1rloySo2rlhqlxlVLjVLjqiWz1LhqqU5qXLVUJ7V9crarloxS46qlRqlx1VKj1LhqySw1rlqqkxpXLdVJjauW6qTueEK2q5YapcZVS41S46ols9S4aqlOaly1VCc1rlqqkxpXLRmlxlVLjVLjqqVGqXHVkllqXLVUJzWuWqqTGlct1UmNq5aMUuOqpUapcdVSo9S4aumDNBEEj4C6D1icOnTPi7tlySpl3R9O+CmMeRL5n7nn0Hb1PaqX/eed118ptn6dn9w/lWOmnoBe+bmSlz0BNgfqHd955WuqlLFqiZO/5yvfrBucX67NjqgNDxyqhOfXigcAv325lT7Cgsle/RrWHTxUD0as2a4cotheHOZmxeLs262rFvuc7/fl+SJO1Avcsq/Pzoaj0evZdbbXOns12xPn64/y+P3ig9SHJ/pTkv2AVpov1DPF5AiMpvq3V2yZ8viyN8+jNsqe2vT+s18eKZcuP0btW+CKV76xPyuvfNt/H5z68k2+TX2vXwlXa+kmaWXztfBE1jhXRXnZrrfj2VT7ht5ZZ4DLHtPxv92sbkpR9xm8zQjbF8gVF5urL5AbF30tXu1m4zxDo/MMKZ1n2MJ5tmGZ7bcTlF/ZvQYt3WvwfbrXaAjdK9vW0b1GRvcaUbrX6Dtxr2Gzex1yomO4ynAOXSXb1tFVxkZXGVO6yvjEXWVe9ZSx0VNGX8dTRPbfm4TEbzp6xMToERNKj5h8Hx4xPs3c0dEHpkYfmFL6wPTEfcAs++ToiWByrv7tO4F609LWBR6EeoPv1ZTAA2ZGD5hResDsb+sB0yME/pE1nxs1n1NqPj8pzaGys6PH9nCm/rXR+TXFnO/cqPM5pc7nJ67z/AgRTK+sKweVufkD1Q3rX/mLkcon++jXIu1rbnh7kkGvQTu9zO1O1SpsQ5v1Km3jwl3+sHaTQ7X2qHThZ1LLP96FyqGe83fYZy31vrBeseMN9/0PLNs7Wpt39fkyzb4dnM1rvl9kr4Qw2sf62oER0N9tTL/shHm8s5dE5j9qMa6T6keGweHOHiXWcaRb+rC7SeTQ6OXe/fbtrIHut/K2WG51tnlmL3HVxoEpXQ0OpCpz8vle1qO6LHciJR02SjokknSIO/t8/wp3WXFEKjxqVHhEpPDoayn8d1/0Q6o1blRrTKTW+NTUOvbCG1KVSaMqEyJVJqemysnpMG3UYUqkw/TUdDjqahRSklmjJDMiSWanJslpiTBvFGFOJML81EQ46koOUpLzRknOiSQ5PzVJvslyWvZgi/2xzrZSrKNpUtMi2iAv2FBrZNtF7r0L4656fcWXdMP8/En6jctjxyyBtk3W3XpV9PuJx+XgbifLZXqcwunzhDgRbiWqdYOu4VbxJbP6p1m2Hl+z+iAtX6K9L1D5BUWoFrDGaB1YRGu4CbI/hA/vhyq/BDE9mB64Je+bTECAVwwm36Lm3RHL5BZdQ3fXvczecOJzxq8sWX3MZq8B2Fcm20oRrZrUFKpDmztrD92ANige3venW3BUEcvj2khtmGSOz9S/NhpS18PbgasVp2vMVBQ2a3IwYI46cvUOrC6fbN+rsT9We6/dOOTRcChGYwv3FPpSl7pQpZ6R12LO19Jdyk7nD44rn2a3323wuDuco9R4BOqEetg7jnifVT4W9Ylu920oFAmverimvDeyKSjW117lAqneL5GelL9X+y91j5yTZUeuJ61OPuyW6+PlpdSvfKT+tmeHfhgxKjJ7NcbmU90afWU3+0SS/L/peijwo0bX7Xo62AmSAx57cnHfmCO3z9Y0DeB2j65Zsrjmh8qSi+yo+WglMqn4N2xNM3ZgSjmpH9Hir+Tn/wNQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL3RoZW1lL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAHAB3b3JkL3RoZW1lL3RoZW1lMS54bWxVVAkAAzDQzhIw0M4SdXgLAAEE9QEAAAQUAAAA7VlPb9s2FL8P2HcgdHf1x5IsBXUL/23XJm3RpB16ZGRaYkyJAkknMYoCQ3vaZcCAbthlwG47DMMKrMCKXfZhCrTYug8xSnZs0abatE23AksMxCL5e48/vvf4+ExdvHycEnCIGMc0axv2BcsAKIvoCGdx27izN2wEBuACZiNIaIbaxgxx4/KlTz+5CLdEglIEpHzGt2DbSITIt0yTR7Ib8gs0R5kcG1OWQiGbLDZHDB5JvSkxHcvyzRTizAAZTKXam+MxjhDYK1Qal06UD4j8lwledESE7UbljFWJEjua2MUXn/EeYeAQkrYh5xnRoz10LAxAIBdyoG1Y5Z9hXrpoLoWIqJGtyA3Lv4XcQmA0cUo5Fu8vBa2BE7j2Ur8z17+JGwTFZ6mvBMAokiu1N7C251uBs8BWQPNHje6wZTdVfEV/c1N/6HcdV8E3V3h3c43DcND3FLy7wnsb+I7ldMOmgvdWeH8D7w46LWeg4EtQQnA22UT7rSDwF+glZEzJVS089H2r1V/AVyizEl1z+UzUxVoKDygbSkDpXChwBsQsR2MYSVwnF5SDPuY5gTMD5DCjXHZbjm3LwHMtZ/kpLQ63EKxIz7sivtFV8AE8YjgXbeOa1GpUIC+ePXv+8Onzh789f/To+cNfwDaOE6GRuwqzuCr36sev//7+C/DXrz+8evyNHs+r+Jc/f/ny9z9ep14otL598vLpkxffffXnT4818A6D+1X4Hk4RBzfQEbhNU7lAzQRon72dxF4CcVWik8UcZrCQ0aAHIlHQN2aQQA2ui1Q73mUyXeiAV6YHCuHdhE0F1gCvJ6kC3KGUdCnTrul6MVfVCtMs1k/OplXcbQgPdXP31rw8mOYy7rFOZS9BCs1bRLocxihDAhRjdIKQRuwexopdd3DEKKdjAe5h0IVYa5I9vC/0QldxKv0y0xGU/lZss3MXdCnRqe+jQxUp9wYkOpWIKGa8AqcCplrGMCVV5DYUiY7k7oxFisG5kJ6OEaFgMEKc62RusplC9zqUeUvr9h0yS1UkE3iiQ25DSqvIPp30EpjmWs44S6rYz/hEhigEt6jQkqDqDina0g8wq3X3XYzE2+3tOzIN6QOkGJky3ZZAVN2PMzKGSKe8w1IlxXYY1kZHdxorob2NEIFHcIQQuPOZDk9zqid9LZFZ5SrS2eYaVGO1aGeIy1qpKG40jsVcCdldFNMaPjuztcQzg1kKWZ3mGxM1ZAb7TG5GXbySaKKkUsyKTasncZOn8FRabyVQCauizfXxOmPZ2+4xKXPwDjLorWVkYj+1bfYgQfqA2YMYbOvSrRSZ6kWK7VSKTbVyY3XTrtxgrhU9Kc7eUAH9N5XPB6t5zr7aqUso6zVOHW69sulRNsIff2HTh9PsFpJnyXldc17X/B/rmrr9fF7NnFcz59XMv1bNrAoYs3rZU2pJa29+xpiQXTEjaJuXpQ+Xe380lJ1loxRaXjTliXxcTKfgYgbLZ8Co+ByLZDeBuZzGLmeI+UJ1zEFOuSyfjFrdZfE1TXfoaHGPZ5/cbUoBKFb9lrfsl6WamPf6rdVF6FJ92Yp5lYBXKj09icpkKommhkSreToStnVWLEINi8B+HQuz4hV5OAFYXIt77pyRDDcZ0qPCT3P5E++euafrjKku29EsL3TPzNMKiUq4qSQqYZjIw2O9+4x9HYZ6VztaGq3gQ/ja3MwNJFNb4EjuuaYn1UQwbxtj+bNJPqa51MeLTAVJnLWNSCwM/S6ZJWdc9CFP5rByaL7+FAvEAMGpjPWqG0i24mY7LevjJRdaH5/lzHUno/EYRaKmZ9WUY3Ml2tH3BBcNOpWkd5PREdgnU3YbSkN5Lbsw4AhzsbTmCLNKcK+suJauFltReQO02qKQ5AlcnCjVZD6Hl89LOpV1lEzXV2XqTLgfD8/i1H2z0FrSrDlAWrVZ7MMd8hVWTT0rT5vrwsB6/Snx/gdChVqgp9bUU6s7O86wIKhM59fYzan15nueButRa1bqyrK18XKb7h/IyO/LanVKBJ9fkB3L8rt38lpyngnK3pPscizAlOG2cd/yOm7P8XoNK/AGDbfpWo3A6zQbHc9r2gPPtvpd54E0ikhS25vPPZQ/9sls8e6+7N94f5+elNoXIpqatKyDzVK4fH9vO/Xv7wGWlrnvO8OwGXb9RtjsDBtuvxs0wp7fbfT9Xqs/7Pe8IBw+MMBhCXY7zZ7rD4KGb/d6Dde3CvpB2Gi5jtNxW51g4HYeLGwtV37yfWLektelfwBQSwMECgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAHAB3b3JkL19yZWxzL1VUCQADhhztaIcc7Wh1eAsAAQT1AQAABBQAAABQSwMEFAAAAAgAAAAhALO+ix3+AAAAtgMAABwAHAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQJAAMw0M4SiBztaHV4CwABBPUBAAAEFAAAAK2TzWrDMBCE74W+g9h7LTttQwmRcymBXFv3AWR7/UP1Y6RNWr99RUoShwbTg44zYme+hdV6860VO6DzvTUCsiQFhqaydW9aAR/F9uEFmCdpaqmsQQEjetjk93frN1SSwpDv+sGzkGK8gI5oWHHuqw619Ikd0ISXxjotKUjX8kFWn7JFvkjTJXfTDMivMtmuFuB29SOwYhzwP9m2afoKX22112joRgX3SBQ28yFTuhZJwMlJQhbw2wiLqAg0KpwCHPVcfRaz3ux1iS5sfCE4W3MQy5gQFGbxAnCUv2Y2x/Ack6GxhgpZqgnH2ZqDeIoJ8YXl+5+TnJgnEH712/IfUEsBAh4DFAAAAAgAAAAhADKRb1deAQAApQUAABMAGAAAAAAAAQAAAKSBAAAAAFtDb250ZW50X1R5cGVzXS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UGrAQAAZG9jUHJvcHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhACEYr1llAQAAxQIAABAAGAAAAAAAAQAAAKSB7gEAAGRvY1Byb3BzL2FwcC54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEACvOn+GYBAADtAgAAEQAYAAAAAAABAAAApIGdAwAAZG9jUHJvcHMvY29yZS54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTZE1bAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UFOBQAAX3JlbHMvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAB6RGrfpAAAATgIAAAsAGAAAAAAAAQAAAKSBjgUAAF9yZWxzLy5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1BvAYAAHdvcmQvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAoWRNW+xw0GIQAgAAtAcAABIAGAAAAAAAAQAAAKSB+wYAAHdvcmQvZm9udFRhYmxlLnhtbFVUBQADnhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCWFrgr1QIAAIgLAAARABgAAAAAAAEAAACkgVcJAAB3b3JkL2RvY3VtZW50LnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDK52WKKwQAAL4MAAARABgAAAAAAAEAAACkgXcMAAB3b3JkL3NldHRpbmdzLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQDbhWzDfQQAAJcdAAASABgAAAAAAAEAAACkge0QAAB3b3JkL251bWJlcmluZy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAvn52YlYBAADQAwAAFAAYAAAAAAABAAAApIG2FQAAd29yZC93ZWJTZXR0aW5ncy54bWxVVAUAAzDQzhJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAAACAAAACEAP6/hZl8PAAANpgAADwAYAAAAAAABAAAApIFaFwAAd29yZC9zdHlsZXMueG1sVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAk2RNWwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BAicAAHdvcmQvdGhlbWUvVVQFAAOGHO1odXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgAAAAhAGeA/LSbBgAAzSAAABUAGAAAAAAAAQAAAKSBRycAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbFVUBQADMNDOEnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJNkTVsAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQTEuAAB3b3JkL19yZWxzL1VUBQADhhztaHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAAAIAAAAIQCzvosd/gAAALYDAAAcABgAAAAAAAEAAACkgXYuAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzVVQFAAMw0M4SdXgLAAEE9QEAAAQUAAAAUEsFBgAAAAARABEAqQUAAMovAAAAAA==`, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, OOXML_PCT_DIVISOR = 5000, SPACE_CHARS, isAtomicRunKind = (kind) => kind === "image" || kind === "lineBreak" || kind === "break" || kind === "tab" || kind === "fieldAnnotation", isImageLikeRun = (run2) => {
|
|
198665
|
+
if (!run2 || typeof run2 !== "object")
|
|
198666
|
+
return false;
|
|
198667
|
+
return typeof run2.src === "string";
|
|
198668
|
+
}, coerceRunText = (run2) => {
|
|
198669
|
+
if (!run2 || typeof run2 !== "object")
|
|
198670
|
+
return "";
|
|
198671
|
+
const candidate = run2.text;
|
|
198672
|
+
return typeof candidate === "string" ? candidate : "";
|
|
198673
|
+
}, coercePmStart = (run2) => {
|
|
198674
|
+
if (!run2 || typeof run2 !== "object")
|
|
198675
|
+
return;
|
|
198676
|
+
const candidate = run2.pmStart;
|
|
198677
|
+
return typeof candidate === "number" ? candidate : undefined;
|
|
198678
|
+
}, coercePmEnd = (run2) => {
|
|
198679
|
+
if (!run2 || typeof run2 !== "object")
|
|
198680
|
+
return;
|
|
198681
|
+
const candidate = run2.pmEnd;
|
|
198682
|
+
return typeof candidate === "number" ? candidate : undefined;
|
|
198683
|
+
}, engines_exports, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, cacheByEditor, OBJECT_REPLACEMENT_CHAR = "", LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", VALID_CONTROL_TYPES, VALID_LOCK_MODES, VALID_APPEARANCES, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, ALIGNMENT_TO_JUSTIFICATION, DERIVED_ID_LENGTH = 24, groupedCache, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES, SETTINGS_PART_PATH = "word/settings.xml", POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART = "word/settings.xml", TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS$1 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, DOCUMENT_RELS_PATH$1 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN$1, FOOTER_FILE_PATTERN$1, HISTORY_UNSAFE_OPS, IGNORED_ATTRIBUTE_KEYS, TRACK_CHANGE_MARK_NAMES, TRACK_CHANGE_IGNORED_ATTRIBUTE_KEYS, SIMILARITY_THRESHOLD = 0.65, MIN_LENGTH_FOR_SIMILARITY = 4, COMMENT_ATTRS_DIFF_IGNORED_KEYS, setNestedValue = (target, path2, value) => {
|
|
198582
198684
|
if (!path2.includes(".")) {
|
|
198583
198685
|
target[path2] = value;
|
|
198584
198686
|
return;
|
|
@@ -200825,26 +200927,7 @@ var Node$13 = class Node$14 {
|
|
|
200825
200927
|
if (epoch < minKeptFromEpoch)
|
|
200826
200928
|
this.#mapsByFromEpoch.delete(epoch);
|
|
200827
200929
|
}
|
|
200828
|
-
},
|
|
200829
|
-
if (!run2 || typeof run2 !== "object")
|
|
200830
|
-
return false;
|
|
200831
|
-
return typeof run2.src === "string";
|
|
200832
|
-
}, coerceRunText = (run2) => {
|
|
200833
|
-
if (!run2 || typeof run2 !== "object")
|
|
200834
|
-
return "";
|
|
200835
|
-
const candidate = run2.text;
|
|
200836
|
-
return typeof candidate === "string" ? candidate : "";
|
|
200837
|
-
}, coercePmStart = (run2) => {
|
|
200838
|
-
if (!run2 || typeof run2 !== "object")
|
|
200839
|
-
return;
|
|
200840
|
-
const candidate = run2.pmStart;
|
|
200841
|
-
return typeof candidate === "number" ? candidate : undefined;
|
|
200842
|
-
}, coercePmEnd = (run2) => {
|
|
200843
|
-
if (!run2 || typeof run2 !== "object")
|
|
200844
|
-
return;
|
|
200845
|
-
const candidate = run2.pmEnd;
|
|
200846
|
-
return typeof candidate === "number" ? candidate : undefined;
|
|
200847
|
-
}, engines_exports, FONT_FAMILY_FALLBACKS2, DEFAULT_GENERIC_FALLBACK2 = "sans-serif", normalizeParts = (value) => (value || "").split(",").map((part) => part.trim()).filter(Boolean), splitOutsideQuotes = (str, delimiter) => {
|
|
200930
|
+
}, FONT_FAMILY_FALLBACKS2, DEFAULT_GENERIC_FALLBACK2 = "sans-serif", normalizeParts = (value) => (value || "").split(",").map((part) => part.trim()).filter(Boolean), splitOutsideQuotes = (str, delimiter) => {
|
|
200848
200931
|
if (!str.includes('"') && !str.includes("'"))
|
|
200849
200932
|
return str.split(delimiter).map((p$12) => p$12.trim()).filter(Boolean);
|
|
200850
200933
|
const parts = [];
|
|
@@ -201979,7 +202062,11 @@ var Node$13 = class Node$14 {
|
|
|
201979
202062
|
if (!Number.isFinite(value) || value < 0)
|
|
201980
202063
|
return 0;
|
|
201981
202064
|
return value;
|
|
201982
|
-
}, COLUMN_MIN_WIDTH_PX = 25, COLUMN_MAX_WIDTH_PX = 200, ROW_MIN_HEIGHT_PX = 10, MIN_PARTIAL_ROW_HEIGHT = 20, ROW_HEIGHT_EPSILON = 0.1, DEFAULT_BALANCING_CONFIG,
|
|
202065
|
+
}, COLUMN_MIN_WIDTH_PX = 25, COLUMN_MAX_WIDTH_PX = 200, ROW_MIN_HEIGHT_PX = 10, MIN_PARTIAL_ROW_HEIGHT = 20, ROW_HEIGHT_EPSILON = 0.1, DEFAULT_BALANCING_CONFIG, getColumnWidthAt = (columns, columnIndex) => {
|
|
202066
|
+
if (Array.isArray(columns.widths) && columns.widths.length > 0)
|
|
202067
|
+
return columns.widths[Math.max(0, Math.min(columnIndex, columns.widths.length - 1))] ?? columns.width;
|
|
202068
|
+
return columns.width;
|
|
202069
|
+
}, DEFAULT_PARAGRAPH_LINE_HEIGHT_PX = 20, SEMANTIC_PAGE_HEIGHT_PX = 1e6, DEFAULT_PAGE_SIZE$2, DEFAULT_MARGINS$2, COLUMN_EPSILON$1 = 0.0001, PAGE_START_EPSILON = 0.0001, asBoolean = (value) => {
|
|
201983
202070
|
if (value === true || value === 1)
|
|
201984
202071
|
return true;
|
|
201985
202072
|
if (typeof value === "string") {
|
|
@@ -208070,43 +208157,26 @@ var Node$13 = class Node$14 {
|
|
|
208070
208157
|
if (layout.pages.length > 0)
|
|
208071
208158
|
return layout.pages.length - 1;
|
|
208072
208159
|
return null;
|
|
208073
|
-
}, footnoteColumnKey = (pageIndex, columnIndex) => `${pageIndex}:${columnIndex}`, COLUMN_EPSILON = 0.01,
|
|
208074
|
-
|
|
208075
|
-
|
|
208076
|
-
|
|
208077
|
-
|
|
208078
|
-
|
|
208079
|
-
|
|
208080
|
-
count: 1,
|
|
208081
|
-
gap: 0,
|
|
208082
|
-
width: Math.max(0, contentWidth)
|
|
208083
|
-
};
|
|
208084
|
-
return {
|
|
208085
|
-
count,
|
|
208086
|
-
gap,
|
|
208087
|
-
width
|
|
208088
|
-
};
|
|
208089
|
-
}, resolveSectionColumnsByIndex = (options, blocks2) => {
|
|
208160
|
+
}, footnoteColumnKey = (pageIndex, columnIndex) => `${pageIndex}:${columnIndex}`, COLUMN_EPSILON = 0.01, resolveMaxColumnWidth = (contentWidth, columns) => {
|
|
208161
|
+
if (!columns || columns.count <= 1)
|
|
208162
|
+
return contentWidth;
|
|
208163
|
+
return normalizeColumnsForFootnotes(columns, contentWidth).width;
|
|
208164
|
+
}, normalizeColumnsForFootnotes = (input2, contentWidth) => {
|
|
208165
|
+
return normalizeColumnLayout(input2, contentWidth, COLUMN_EPSILON);
|
|
208166
|
+
}, ooXmlSectionColumns = (columns) => cloneColumnLayout(columns), resolveSectionColumnsByIndex = (options, blocks2) => {
|
|
208090
208167
|
const result = /* @__PURE__ */ new Map;
|
|
208091
|
-
let activeColumns = options.columns
|
|
208092
|
-
count: 1,
|
|
208093
|
-
gap: 0
|
|
208094
|
-
};
|
|
208168
|
+
let activeColumns = cloneColumnLayout(options.columns);
|
|
208095
208169
|
if (blocks2 && blocks2.length > 0)
|
|
208096
208170
|
for (const block of blocks2) {
|
|
208097
208171
|
if (block.kind !== "sectionBreak")
|
|
208098
208172
|
continue;
|
|
208099
208173
|
const sectionIndexRaw = block.attrs?.sectionIndex;
|
|
208100
208174
|
const sectionIndex = typeof sectionIndexRaw === "number" && Number.isFinite(sectionIndexRaw) ? sectionIndexRaw : result.size;
|
|
208101
|
-
|
|
208102
|
-
|
|
208103
|
-
count: block.columns.count,
|
|
208104
|
-
gap: block.columns.gap
|
|
208105
|
-
};
|
|
208106
|
-
result.set(sectionIndex, { ...activeColumns });
|
|
208175
|
+
activeColumns = ooXmlSectionColumns(block.columns);
|
|
208176
|
+
result.set(sectionIndex, cloneColumnLayout(activeColumns));
|
|
208107
208177
|
}
|
|
208108
208178
|
if (result.size === 0)
|
|
208109
|
-
result.set(0,
|
|
208179
|
+
result.set(0, cloneColumnLayout(activeColumns));
|
|
208110
208180
|
return result;
|
|
208111
208181
|
}, resolvePageColumns = (layout, options, blocks2) => {
|
|
208112
208182
|
const sectionColumns = resolveSectionColumnsByIndex(options, blocks2);
|
|
@@ -208152,9 +208222,23 @@ var Node$13 = class Node$14 {
|
|
|
208152
208222
|
if (columns && columns.count > 1 && page) {
|
|
208153
208223
|
const fragment2 = findFragmentForPos(page, ref$1.pos);
|
|
208154
208224
|
if (fragment2 && typeof fragment2.x === "number") {
|
|
208155
|
-
const
|
|
208156
|
-
|
|
208157
|
-
|
|
208225
|
+
const widths = Array.isArray(columns.widths) && columns.widths.length > 0 ? columns.widths : undefined;
|
|
208226
|
+
if (widths) {
|
|
208227
|
+
let cursorX = columns.left;
|
|
208228
|
+
for (let index2 = 0;index2 < columns.count; index2 += 1) {
|
|
208229
|
+
const columnWidth = widths[index2] ?? columns.width;
|
|
208230
|
+
if (fragment2.x < cursorX + columnWidth + columns.gap / 2) {
|
|
208231
|
+
columnIndex = index2;
|
|
208232
|
+
break;
|
|
208233
|
+
}
|
|
208234
|
+
cursorX += columnWidth + columns.gap;
|
|
208235
|
+
columnIndex = Math.min(columns.count - 1, index2 + 1);
|
|
208236
|
+
}
|
|
208237
|
+
} else {
|
|
208238
|
+
const columnStride = columns.width + columns.gap;
|
|
208239
|
+
const rawIndex = columnStride > 0 ? Math.floor((fragment2.x - columns.left) / columnStride) : 0;
|
|
208240
|
+
columnIndex = Math.max(0, Math.min(columns.count - 1, rawIndex));
|
|
208241
|
+
}
|
|
208158
208242
|
}
|
|
208159
208243
|
}
|
|
208160
208244
|
const key$1 = footnoteColumnKey(pageIndex, columnIndex);
|
|
@@ -208180,10 +208264,7 @@ var Node$13 = class Node$14 {
|
|
|
208180
208264
|
left: normalizeMargin(options.margins?.left, DEFAULT_MARGINS$1.left)
|
|
208181
208265
|
};
|
|
208182
208266
|
let width = pageSize.w - (margins.left + margins.right);
|
|
208183
|
-
let activeColumns = options.columns
|
|
208184
|
-
count: 1,
|
|
208185
|
-
gap: 0
|
|
208186
|
-
};
|
|
208267
|
+
let activeColumns = cloneColumnLayout(options.columns);
|
|
208187
208268
|
let activePageSize = pageSize;
|
|
208188
208269
|
let activeMargins = { ...margins };
|
|
208189
208270
|
const resolveColumnWidth = () => {
|
|
@@ -208200,11 +208281,7 @@ var Node$13 = class Node$14 {
|
|
|
208200
208281
|
right: normalizeMargin(block.margins?.right, activeMargins.right),
|
|
208201
208282
|
left: normalizeMargin(block.margins?.left, activeMargins.left)
|
|
208202
208283
|
};
|
|
208203
|
-
|
|
208204
|
-
activeColumns = {
|
|
208205
|
-
count: block.columns.count,
|
|
208206
|
-
gap: block.columns.gap
|
|
208207
|
-
};
|
|
208284
|
+
activeColumns = ooXmlSectionColumns(block.columns);
|
|
208208
208285
|
const w = resolveColumnWidth();
|
|
208209
208286
|
if (w > 0 && w < width)
|
|
208210
208287
|
width = w;
|
|
@@ -217670,7 +217747,7 @@ var Node$13 = class Node$14 {
|
|
|
217670
217747
|
return false;
|
|
217671
217748
|
return Boolean(checker(attrs));
|
|
217672
217749
|
}, SuperToolbar, ICONS, TEXTS, tableActionsOptions;
|
|
217673
|
-
var
|
|
217750
|
+
var init_src_BQ8I1JWL_es = __esm(() => {
|
|
217674
217751
|
init_rolldown_runtime_B2q5OVn9_es();
|
|
217675
217752
|
init_SuperConverter_C2Sw7Q5Z_es();
|
|
217676
217753
|
init_jszip_ChlR43oI_es();
|
|
@@ -225757,6 +225834,20 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
225757
225834
|
}({});
|
|
225758
225835
|
DEFAULT_PARAGRAPH_SECTION_TYPE = SectionType.NEXT_PAGE;
|
|
225759
225836
|
DEFAULT_BODY_SECTION_TYPE = SectionType.CONTINUOUS;
|
|
225837
|
+
SPACE_CHARS = new Set([" ", " "]);
|
|
225838
|
+
engines_exports = /* @__PURE__ */ __export2({
|
|
225839
|
+
OOXML_PCT_DIVISOR: () => OOXML_PCT_DIVISOR,
|
|
225840
|
+
calculateTabWidth: () => calculateTabWidth,
|
|
225841
|
+
computeListIndent: () => computeListIndent,
|
|
225842
|
+
computeTabStops: () => computeTabStops$1,
|
|
225843
|
+
computeWrapExclusion: () => computeWrapExclusion,
|
|
225844
|
+
formatListLabel: () => formatListLabel,
|
|
225845
|
+
layoutWithTabs: () => layoutWithTabs,
|
|
225846
|
+
measureRowHeights: () => measureRowHeights,
|
|
225847
|
+
resolveColumnWidths: () => resolveColumnWidths,
|
|
225848
|
+
resolveSpacingIndent: () => resolveSpacingIndent,
|
|
225849
|
+
scaleWrapPolygon: () => scaleWrapPolygon
|
|
225850
|
+
}, 1);
|
|
225760
225851
|
COMMENT_MARK_NAME = CommentMarkName;
|
|
225761
225852
|
SUPPORTED_INLINE_TYPES = new Set([
|
|
225762
225853
|
"run",
|
|
@@ -229520,20 +229611,6 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
229520
229611
|
"search",
|
|
229521
229612
|
"yjs-cursor"
|
|
229522
229613
|
];
|
|
229523
|
-
SPACE_CHARS = new Set([" ", " "]);
|
|
229524
|
-
engines_exports = /* @__PURE__ */ __export2({
|
|
229525
|
-
OOXML_PCT_DIVISOR: () => OOXML_PCT_DIVISOR,
|
|
229526
|
-
calculateTabWidth: () => calculateTabWidth,
|
|
229527
|
-
computeListIndent: () => computeListIndent,
|
|
229528
|
-
computeTabStops: () => computeTabStops$1,
|
|
229529
|
-
computeWrapExclusion: () => computeWrapExclusion,
|
|
229530
|
-
formatListLabel: () => formatListLabel,
|
|
229531
|
-
layoutWithTabs: () => layoutWithTabs,
|
|
229532
|
-
measureRowHeights: () => measureRowHeights,
|
|
229533
|
-
resolveColumnWidths: () => resolveColumnWidths,
|
|
229534
|
-
resolveSpacingIndent: () => resolveSpacingIndent,
|
|
229535
|
-
scaleWrapPolygon: () => scaleWrapPolygon
|
|
229536
|
-
}, 1);
|
|
229537
229614
|
FONT_FAMILY_FALLBACKS2 = Object.freeze({
|
|
229538
229615
|
swiss: "Arial, sans-serif",
|
|
229539
229616
|
roman: "Times New Roman, serif",
|
|
@@ -239388,7 +239465,10 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
239388
239465
|
...firstSection?.margins?.header != null ? { header: firstSection.margins.header } : {},
|
|
239389
239466
|
...firstSection?.margins?.footer != null ? { footer: firstSection.margins.footer } : {}
|
|
239390
239467
|
};
|
|
239391
|
-
const columns = firstSection
|
|
239468
|
+
const columns = firstSection ? firstSection.columns ?? {
|
|
239469
|
+
count: 1,
|
|
239470
|
+
gap: 0
|
|
239471
|
+
} : defaults2.columns;
|
|
239392
239472
|
this.#layoutOptions.pageSize = pageSize;
|
|
239393
239473
|
this.#layoutOptions.margins = margins;
|
|
239394
239474
|
const flowMode = this.#layoutOptions.flowMode ?? "paginated";
|
|
@@ -251279,8 +251359,12 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
251279
251359
|
const inTable = isInTable(this.activeEditor.state);
|
|
251280
251360
|
const paragraphParent = findParentNode((n) => n.type.name === "paragraph")(selection);
|
|
251281
251361
|
const paragraphProps = paragraphParent ? calculateResolvedParagraphProperties(this.activeEditor, paragraphParent.node, state.doc.resolve(paragraphParent.pos)) : null;
|
|
251362
|
+
const selectionIsCollapsed = selection.empty;
|
|
251363
|
+
const paragraphIsEmpty = paragraphParent?.node?.content?.size === 0;
|
|
251364
|
+
const paragraphFontFamily = getParagraphFontFamilyFromProperties(paragraphProps, this.activeEditor?.converter?.convertedXml ?? {});
|
|
251282
251365
|
this.toolbarItems.forEach((item) => {
|
|
251283
251366
|
item.resetDisabled();
|
|
251367
|
+
let activatedFromLinkedStyle = false;
|
|
251284
251368
|
if (item.name.value === "undo")
|
|
251285
251369
|
item.setDisabled(this.undoDepth === 0);
|
|
251286
251370
|
if (item.name.value === "redo")
|
|
@@ -251317,10 +251401,13 @@ function print() { __p += __j.call(arguments, '') }
|
|
|
251317
251401
|
const linkedStylesItem = linkedStyles.definition.styles[markToStyleMap[item.name.value]];
|
|
251318
251402
|
const value = { [item.name.value]: linkedStylesItem };
|
|
251319
251403
|
item.activate(value);
|
|
251404
|
+
activatedFromLinkedStyle = true;
|
|
251320
251405
|
}
|
|
251321
251406
|
}
|
|
251322
251407
|
if (item.name.value === "textAlign" && paragraphProps?.justification)
|
|
251323
251408
|
item.activate({ textAlign: paragraphProps.justification });
|
|
251409
|
+
if (item.name.value === "fontFamily" && selectionIsCollapsed && paragraphIsEmpty && !activeMark && !markNegated && !activatedFromLinkedStyle && paragraphFontFamily)
|
|
251410
|
+
item.activate({ fontFamily: paragraphFontFamily });
|
|
251324
251411
|
if (item.name.value === "lineHeight")
|
|
251325
251412
|
if (paragraphProps?.spacing)
|
|
251326
251413
|
item.selectedValue.value = twipsToLines(paragraphProps.spacing.line);
|
|
@@ -251763,7 +251850,7 @@ var init_zipper_DqXT7uTa_es = __esm(() => {
|
|
|
251763
251850
|
|
|
251764
251851
|
// ../../packages/superdoc/dist/super-editor.es.js
|
|
251765
251852
|
var init_super_editor_es = __esm(() => {
|
|
251766
|
-
|
|
251853
|
+
init_src_BQ8I1JWL_es();
|
|
251767
251854
|
init_SuperConverter_C2Sw7Q5Z_es();
|
|
251768
251855
|
init_jszip_ChlR43oI_es();
|
|
251769
251856
|
init_xml_js_BtmJ6bNs_es();
|