@knowvah/dot-engine 2.3.1 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/arith.d.ts +12 -0
- package/dist/common/arith.d.ts.map +1 -1
- package/dist/common/edge-in-box.d.ts +31 -0
- package/dist/common/edge-in-box.d.ts.map +1 -0
- package/dist/common/htmltable-emit.d.ts +1 -1
- package/dist/common/htmltable-emit.d.ts.map +1 -1
- package/dist/common/make-label.d.ts +3 -1
- package/dist/common/make-label.d.ts.map +1 -1
- package/dist/common/poly-gencode.d.ts +12 -1
- package/dist/common/poly-gencode.d.ts.map +1 -1
- package/dist/gvc/device.d.ts.map +1 -1
- package/dist/gvc/emit-gates.d.ts +35 -0
- package/dist/gvc/emit-gates.d.ts.map +1 -0
- package/dist/gvc/job.d.ts +4 -0
- package/dist/gvc/job.d.ts.map +1 -1
- package/dist/gvc/viewport.d.ts +13 -0
- package/dist/gvc/viewport.d.ts.map +1 -1
- package/dist/index.js +821 -548
- package/dist/index.js.map +4 -4
- package/dist/layout/circo/blockpath.d.ts +1 -38
- package/dist/layout/circo/blockpath.d.ts.map +1 -1
- package/dist/layout/circo/crossings.d.ts +59 -0
- package/dist/layout/circo/crossings.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-chain.d.ts +5 -3
- package/dist/layout/dot/edge-route-chain.d.ts.map +1 -1
- package/dist/layout/dot/edge-route.d.ts.map +1 -1
- package/dist/layout/dot/index.d.ts +10 -2
- package/dist/layout/dot/index.d.ts.map +1 -1
- package/dist/layout/dot/ortho-adapter.d.ts +6 -2
- package/dist/layout/dot/ortho-adapter.d.ts.map +1 -1
- package/dist/layout/dot/pack-components.d.ts +4 -1
- package/dist/layout/dot/pack-components.d.ts.map +1 -1
- package/dist/layout/dot/splines-flat-multi.d.ts +4 -4
- package/dist/layout/dot/splines-flat.d.ts +1 -11
- package/dist/layout/dot/splines-flat.d.ts.map +1 -1
- package/dist/layout/dot/splines-route.d.ts.map +1 -1
- package/dist/layout/neato/constraint-adjust.d.ts +32 -0
- package/dist/layout/neato/constraint-adjust.d.ts.map +1 -1
- package/dist/layout/neato/multispline.d.ts.map +1 -1
- package/dist/layout/neato/splines.d.ts.map +1 -1
- package/dist/layout/pack/poly-pack.d.ts +3 -0
- package/dist/layout/pack/poly-pack.d.ts.map +1 -1
- package/dist/layout/pack/poly-place.d.ts.map +1 -1
- package/dist/layout/sfdp/__fixtures__/pcp-rotate-native.d.ts +23 -0
- package/dist/layout/sfdp/__fixtures__/pcp-rotate-native.d.ts.map +1 -0
- package/dist/layout/sfdp/spring-driver.d.ts +6 -0
- package/dist/layout/sfdp/spring-driver.d.ts.map +1 -1
- package/dist/ortho/index.d.ts +4 -1
- package/dist/ortho/index.d.ts.map +1 -1
- package/dist/ortho/maze.d.ts +5 -2
- package/dist/ortho/maze.d.ts.map +1 -1
- package/dist/ortho/partition.d.ts +8 -1
- package/dist/ortho/partition.d.ts.map +1 -1
- package/dist/ortho/trap-segment.d.ts +2 -1
- package/dist/ortho/trap-segment.d.ts.map +1 -1
- package/dist/ortho/trapezoid.d.ts.map +1 -1
- package/dist/parser/index.d.ts +0 -7
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/number-scan.d.ts +31 -0
- package/dist/parser/number-scan.d.ts.map +1 -0
- package/dist/render/dot/edge-draw.d.ts +12 -0
- package/dist/render/dot/edge-draw.d.ts.map +1 -1
- package/dist/render/svg-graph.d.ts +6 -5
- package/dist/render/svg-graph.d.ts.map +1 -1
- package/dist/render/svg.d.ts +2 -21
- package/dist/render/svg.d.ts.map +1 -1
- package/dist/render.js +821 -548
- package/dist/render.js.map +4 -4
- package/dist/xdot/parse.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/common/arith.ts +25 -0
- package/src/common/edge-in-box.ts +54 -0
- package/src/common/graph-init.ts +3 -3
- package/src/common/htmltable-emit.ts +4 -2
- package/src/common/make-label.ts +3 -1
- package/src/common/poly-gencode.ts +18 -4
- package/src/gvc/device.ts +8 -41
- package/src/gvc/edge-labels.ts +30 -13
- package/src/gvc/emit-gates.ts +89 -0
- package/src/gvc/job.ts +4 -0
- package/src/gvc/viewport.ts +29 -0
- package/src/layout/circo/blockpath.ts +6 -125
- package/src/layout/circo/crossings.ts +171 -0
- package/src/layout/dot/__fixtures__/2784.dot +1 -0
- package/src/layout/dot/__fixtures__/2784.native-16.1.svg +48 -0
- package/src/layout/dot/edge-route-chain.ts +11 -5
- package/src/layout/dot/edge-route.ts +2 -1
- package/src/layout/dot/index.ts +14 -4
- package/src/layout/dot/ortho-adapter.ts +7 -3
- package/src/layout/dot/pack-components.ts +11 -4
- package/src/layout/dot/splines-flat-multi.ts +4 -4
- package/src/layout/dot/splines-flat.ts +5 -32
- package/src/layout/dot/splines-route.ts +10 -2
- package/src/layout/dot/splines.ts +6 -6
- package/src/layout/neato/constraint-adjust.ts +10 -4
- package/src/layout/neato/multispline.ts +26 -9
- package/src/layout/neato/splines.ts +7 -7
- package/src/layout/pack/poly-pack.ts +19 -6
- package/src/layout/pack/poly-place.ts +9 -2
- package/src/layout/sfdp/__fixtures__/pcp-rotate-native.ts +94 -0
- package/src/layout/sfdp/spring-driver.ts +45 -13
- package/src/ortho/index.ts +22 -13
- package/src/ortho/maze.ts +8 -2
- package/src/ortho/partition.ts +17 -2
- package/src/ortho/trap-segment.ts +47 -24
- package/src/ortho/trapezoid.ts +24 -15
- package/src/parser/dot.js +334 -343
- package/src/parser/dot.pegjs +19 -5
- package/src/parser/index.ts +15 -0
- package/src/parser/number-scan.ts +118 -0
- package/src/render/dot/edge-draw.ts +25 -0
- package/src/render/svg-graph.ts +77 -47
- package/src/render/svg-helpers.ts +2 -2
- package/src/render/svg.ts +4 -41
- package/src/xdot/parse.ts +19 -5
package/dist/render.js
CHANGED
|
@@ -5086,8 +5086,8 @@ function normalizeFontName(name) {
|
|
|
5086
5086
|
for (let i = 0; i < name.length; i++) {
|
|
5087
5087
|
const ch = name[i];
|
|
5088
5088
|
const code = ch.charCodeAt(0);
|
|
5089
|
-
const
|
|
5090
|
-
if (
|
|
5089
|
+
const isLetter2 = code >= 65 && code <= 90 || code >= 97 && code <= 122;
|
|
5090
|
+
if (isLetter2) result += ch.toLowerCase();
|
|
5091
5091
|
}
|
|
5092
5092
|
return result;
|
|
5093
5093
|
}
|
|
@@ -7338,7 +7338,7 @@ function interpretCRNL(str) {
|
|
|
7338
7338
|
|
|
7339
7339
|
// src/common/make-label.ts
|
|
7340
7340
|
var DEFAULT_FONTSIZE2 = 14;
|
|
7341
|
-
var DEFAULT_FONTNAME = "Times
|
|
7341
|
+
var DEFAULT_FONTNAME = "Times-Roman";
|
|
7342
7342
|
var DEFAULT_COLOR = "black";
|
|
7343
7343
|
function getPenColor(obj) {
|
|
7344
7344
|
if (obj === void 0) return void 0;
|
|
@@ -8765,6 +8765,10 @@ var RenderJob = class {
|
|
|
8765
8765
|
format;
|
|
8766
8766
|
bb = { ll: { x: 0, y: 0 }, ur: { x: 0, y: 0 } };
|
|
8767
8767
|
pad = { x: 0, y: 0 };
|
|
8768
|
+
/** Current page clip in graph units, as setup_page computes it from the
|
|
8769
|
+
* viewport focus/view (see setupPageClip). Read by the SVG page translate and
|
|
8770
|
+
* background. @see lib/gvc/gvcjob.h:GVJ_s.clip; lib/common/emit.c:setup_page */
|
|
8771
|
+
clip = { ll: { x: 0, y: 0 }, ur: { x: 0, y: 0 } };
|
|
8768
8772
|
/** Graph-level `margin=` (init_job_margin); page-pagination margin, distinct
|
|
8769
8773
|
* from node/cluster label margin. @see lib/common/emit.c:3309-3331 */
|
|
8770
8774
|
margin = { x: 0, y: 0 };
|
|
@@ -10317,11 +10321,11 @@ function emitHtmlLabel(placed, pos, renderer, job) {
|
|
|
10317
10321
|
style: placed.style
|
|
10318
10322
|
});
|
|
10319
10323
|
}
|
|
10320
|
-
for (const cell2 of placed.cells) emitHtmlCell(cell2, pos, renderer, job);
|
|
10321
10324
|
emitTableRules(placed, pos, renderer, job);
|
|
10322
10325
|
if (placed.border > 0) {
|
|
10323
10326
|
emitBorder({ box: placed.box, pos, border: placed.border, color: placed.color, sides: placed.sides, style: placed.style }, renderer, job);
|
|
10324
10327
|
}
|
|
10328
|
+
for (const cell2 of placed.cells) emitHtmlCell(cell2, pos, renderer, job);
|
|
10325
10329
|
}
|
|
10326
10330
|
if (inAnchor) endHtmlAnchor(renderer, job);
|
|
10327
10331
|
if (clustersLast && initHtmlAnchor(anchorData, tblBox, renderer, job)) {
|
|
@@ -10509,6 +10513,18 @@ function fms(a, b, c) {
|
|
|
10509
10513
|
function cround(v) {
|
|
10510
10514
|
return v >= 0 ? Math.floor(v + 0.5) : Math.ceil(v - 0.5);
|
|
10511
10515
|
}
|
|
10516
|
+
var INT64_MAX = 2n ** 63n - 1n;
|
|
10517
|
+
var INT64_MIN = -(2n ** 63n);
|
|
10518
|
+
var TWO_POW_63 = 2 ** 63;
|
|
10519
|
+
function croundNarrow32(v) {
|
|
10520
|
+
const r = cround(v);
|
|
10521
|
+
let i64;
|
|
10522
|
+
if (Number.isNaN(r)) i64 = 0n;
|
|
10523
|
+
else if (r >= TWO_POW_63) i64 = INT64_MAX;
|
|
10524
|
+
else if (r < -TWO_POW_63) i64 = INT64_MIN;
|
|
10525
|
+
else i64 = BigInt(r);
|
|
10526
|
+
return Number(BigInt.asIntN(32, i64));
|
|
10527
|
+
}
|
|
10512
10528
|
function RADIANS(deg) {
|
|
10513
10529
|
return deg / 180 * Math.PI;
|
|
10514
10530
|
}
|
|
@@ -11346,6 +11362,8 @@ function parseSegs(colorlist) {
|
|
|
11346
11362
|
}
|
|
11347
11363
|
|
|
11348
11364
|
// src/util/math.ts
|
|
11365
|
+
var INT32_MAX = 2147483647;
|
|
11366
|
+
var INT32_MIN = -2147483648;
|
|
11349
11367
|
function isExactlyEqual(a, b) {
|
|
11350
11368
|
const buf = new ArrayBuffer(16);
|
|
11351
11369
|
const dv = new DataView(buf);
|
|
@@ -11357,6 +11375,11 @@ function isExactlyEqual(a, b) {
|
|
|
11357
11375
|
}
|
|
11358
11376
|
return true;
|
|
11359
11377
|
}
|
|
11378
|
+
function d2i(v) {
|
|
11379
|
+
if (v > INT32_MAX) return INT32_MAX;
|
|
11380
|
+
if (v < INT32_MIN) return INT32_MIN;
|
|
11381
|
+
return Math.trunc(v);
|
|
11382
|
+
}
|
|
11360
11383
|
|
|
11361
11384
|
// src/common/colorData.ts
|
|
11362
11385
|
var COLOR_LIB = [
|
|
@@ -14568,9 +14591,12 @@ function isMulticolor(fillcolor) {
|
|
|
14568
14591
|
return fillcolor.includes(":");
|
|
14569
14592
|
}
|
|
14570
14593
|
function renderEllipse(ring, coord, renderer, job, filled) {
|
|
14571
|
-
const
|
|
14572
|
-
const
|
|
14573
|
-
const
|
|
14594
|
+
const af0 = { x: ring[0].x + coord.x, y: ring[0].y + coord.y };
|
|
14595
|
+
const af1 = { x: ring[1].x + coord.x, y: ring[1].y + coord.y };
|
|
14596
|
+
const mid = { x: (af0.x + af1.x) / 2, y: (af0.y + af1.y) / 2 };
|
|
14597
|
+
const rx = af1.x - mid.x;
|
|
14598
|
+
const ry = af1.y - mid.y;
|
|
14599
|
+
const center = transformPoint(mid, job);
|
|
14574
14600
|
renderer.ellipse(center, rx, ry, filled, job);
|
|
14575
14601
|
}
|
|
14576
14602
|
function renderPolygon(ring, coord, renderer, job, filled) {
|
|
@@ -18173,7 +18199,7 @@ var BGCOLOR_TRANSPARENT = "\0transparent";
|
|
|
18173
18199
|
function formatG(n) {
|
|
18174
18200
|
return String(parseFloat(n.toPrecision(6)));
|
|
18175
18201
|
}
|
|
18176
|
-
function emitSvgTag(job) {
|
|
18202
|
+
function emitSvgTag(job, svgid = "") {
|
|
18177
18203
|
const bb = job.bb;
|
|
18178
18204
|
const szx = bb.ur.x - bb.ll.x + 2 * job.pad.x;
|
|
18179
18205
|
const szy = bb.ur.y - bb.ll.y + 2 * job.pad.y;
|
|
@@ -18182,16 +18208,20 @@ function emitSvgTag(job) {
|
|
|
18182
18208
|
const rotated = job.rotation !== 0;
|
|
18183
18209
|
const pageX = rotated ? viewY : viewX;
|
|
18184
18210
|
const pageY = rotated ? viewX : viewY;
|
|
18185
|
-
const w =
|
|
18186
|
-
const h =
|
|
18211
|
+
const w = croundNarrow32(pageX + 2 * job.margin.x);
|
|
18212
|
+
const h = croundNarrow32(pageY + 2 * job.margin.y);
|
|
18187
18213
|
job.write('<svg width="' + String(w) + 'pt" height="' + String(h) + 'pt"\n');
|
|
18188
|
-
const vbLLx =
|
|
18189
|
-
const vbLLy =
|
|
18190
|
-
const vbURx =
|
|
18191
|
-
const vbURy =
|
|
18214
|
+
const vbLLx = croundNarrow32(job.margin.x);
|
|
18215
|
+
const vbLLy = croundNarrow32(job.margin.y);
|
|
18216
|
+
const vbURx = croundNarrow32(job.margin.x + pageX);
|
|
18217
|
+
const vbURy = croundNarrow32(job.margin.y + pageY);
|
|
18192
18218
|
job.write(' viewBox="' + String(vbLLx) + ".00 " + String(vbLLy) + ".00 " + String(vbURx) + ".00 " + String(vbURy) + '.00"\n');
|
|
18193
18219
|
job.write(' xmlns="http://www.w3.org/2000/svg"');
|
|
18194
|
-
job.write(' xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
18220
|
+
job.write(' xmlns:xlink="http://www.w3.org/1999/xlink"');
|
|
18221
|
+
if (svgid !== void 0 && svgid.length > 0) {
|
|
18222
|
+
job.write(' id="' + escapeXmlTitle(svgid) + '"');
|
|
18223
|
+
}
|
|
18224
|
+
job.write(">\n");
|
|
18195
18225
|
}
|
|
18196
18226
|
function emitGraphGroupOpen(graphId, classStr, tx, ty, job) {
|
|
18197
18227
|
const sx = formatG(job.scale.x);
|
|
@@ -18215,12 +18245,12 @@ function resolveGraphBgcolor(bgcolorAttr) {
|
|
|
18215
18245
|
const solid = grad !== null ? grad[0] : bgcolorAttr;
|
|
18216
18246
|
return colorPaint(resolveRenderColor(solid));
|
|
18217
18247
|
}
|
|
18218
|
-
function emitGraphBackground(
|
|
18248
|
+
function emitGraphBackground(clip, resolvedColor, job) {
|
|
18219
18249
|
if (resolvedColor === BGCOLOR_TRANSPARENT) return;
|
|
18220
|
-
const left2 =
|
|
18221
|
-
const right2 =
|
|
18222
|
-
const top = -
|
|
18223
|
-
const bottom = -
|
|
18250
|
+
const left2 = clip.ll.x;
|
|
18251
|
+
const right2 = clip.ur.x;
|
|
18252
|
+
const top = -clip.ur.y;
|
|
18253
|
+
const bottom = -clip.ll.y;
|
|
18224
18254
|
const corners = [
|
|
18225
18255
|
[left2, bottom],
|
|
18226
18256
|
[left2, top],
|
|
@@ -18237,11 +18267,11 @@ function emitGraphBackground(bb, resolvedColor, job) {
|
|
|
18237
18267
|
});
|
|
18238
18268
|
job.write('"/>\n');
|
|
18239
18269
|
}
|
|
18240
|
-
function bgGradientPts(
|
|
18241
|
-
const left2 =
|
|
18242
|
-
const right2 =
|
|
18243
|
-
const bottom =
|
|
18244
|
-
const top =
|
|
18270
|
+
function bgGradientPts(clip) {
|
|
18271
|
+
const left2 = clip.ll.x;
|
|
18272
|
+
const right2 = clip.ur.x;
|
|
18273
|
+
const bottom = clip.ll.y;
|
|
18274
|
+
const top = clip.ur.y;
|
|
18245
18275
|
return [
|
|
18246
18276
|
{ x: left2, y: bottom },
|
|
18247
18277
|
{ x: left2, y: top },
|
|
@@ -18249,11 +18279,11 @@ function bgGradientPts(bb, pad) {
|
|
|
18249
18279
|
{ x: right2, y: bottom }
|
|
18250
18280
|
];
|
|
18251
18281
|
}
|
|
18252
|
-
function writeGradientPolygon(
|
|
18253
|
-
const left2 =
|
|
18254
|
-
const right2 =
|
|
18255
|
-
const top = -
|
|
18256
|
-
const bottom = -
|
|
18282
|
+
function writeGradientPolygon(clip, id, job) {
|
|
18283
|
+
const left2 = clip.ll.x;
|
|
18284
|
+
const right2 = clip.ur.x;
|
|
18285
|
+
const top = -clip.ur.y;
|
|
18286
|
+
const bottom = -clip.ll.y;
|
|
18257
18287
|
const corners = [
|
|
18258
18288
|
[left2, bottom],
|
|
18259
18289
|
[left2, top],
|
|
@@ -18270,7 +18300,7 @@ function writeGradientPolygon(bb, id, job) {
|
|
|
18270
18300
|
});
|
|
18271
18301
|
job.write('"/>\n');
|
|
18272
18302
|
}
|
|
18273
|
-
function emitGradientBackground(
|
|
18303
|
+
function emitGradientBackground(clip, spec, job) {
|
|
18274
18304
|
const obj = createObjState(0 /* RootGraph */);
|
|
18275
18305
|
obj.id = "graph0";
|
|
18276
18306
|
obj.fillColor = resolveRenderColor(spec.fillColor);
|
|
@@ -18285,10 +18315,10 @@ function emitGradientBackground(bb, spec, job) {
|
|
|
18285
18315
|
emitRadialGradient(job, gid);
|
|
18286
18316
|
} else {
|
|
18287
18317
|
gid = gradientId("graph0", "l", job.linearGradId++);
|
|
18288
|
-
emitLinearGradient(job, bgGradientPts(
|
|
18318
|
+
emitLinearGradient(job, bgGradientPts(clip), gid);
|
|
18289
18319
|
}
|
|
18290
18320
|
job.popObj();
|
|
18291
|
-
writeGradientPolygon(
|
|
18321
|
+
writeGradientPolygon(clip, gid, job);
|
|
18292
18322
|
}
|
|
18293
18323
|
function resolveBgGradientSpec(g, bgcolorAttr) {
|
|
18294
18324
|
const stop = findStopColor(bgcolorAttr);
|
|
@@ -18298,17 +18328,17 @@ function resolveBgGradientSpec(g, bgcolorAttr) {
|
|
|
18298
18328
|
const angle = angleStr ? parseInt(angleStr, 10) || 0 : 0;
|
|
18299
18329
|
return { fillColor: stop.fillColor, stopColor: stop.stopColor, frac: stop.frac, angle, radial: flags.radial };
|
|
18300
18330
|
}
|
|
18301
|
-
function emitBgcolorBackground(g,
|
|
18331
|
+
function emitBgcolorBackground(g, clip, bgcolorAttr, job) {
|
|
18302
18332
|
if (!bgcolorAttr || bgcolorAttr.length === 0 || bgcolorAttr === "transparent") {
|
|
18303
|
-
emitGraphBackground(
|
|
18333
|
+
emitGraphBackground(clip, resolveGraphBgcolor(bgcolorAttr), job);
|
|
18304
18334
|
return;
|
|
18305
18335
|
}
|
|
18306
18336
|
const spec = resolveBgGradientSpec(g, bgcolorAttr);
|
|
18307
18337
|
if (spec !== null) {
|
|
18308
|
-
emitGradientBackground(
|
|
18338
|
+
emitGradientBackground(clip, spec, job);
|
|
18309
18339
|
return;
|
|
18310
18340
|
}
|
|
18311
|
-
emitGraphBackground(
|
|
18341
|
+
emitGraphBackground(clip, resolveGraphBgcolor(bgcolorAttr), job);
|
|
18312
18342
|
}
|
|
18313
18343
|
function svgBeginGraph(g, job) {
|
|
18314
18344
|
job.devscale = { x: 1, y: -1 };
|
|
@@ -18322,13 +18352,23 @@ function svgBeginGraph(g, job) {
|
|
|
18322
18352
|
}
|
|
18323
18353
|
job.write(SVG_DOCTYPE);
|
|
18324
18354
|
job.write(SVG_GENERATOR_COMMENT);
|
|
18325
|
-
|
|
18355
|
+
const comment = g.attrs.get("comment");
|
|
18356
|
+
if (comment !== void 0 && comment.length > 0) svgComment(comment, job);
|
|
18357
|
+
emitTitlePagesComment(g, job);
|
|
18358
|
+
emitSvgTag(job, g.attrs.get("svgid"));
|
|
18359
|
+
}
|
|
18360
|
+
function emitTitlePagesComment(g, job) {
|
|
18361
|
+
job.write("<!--");
|
|
18362
|
+
if (g.name.length > 0 && g.name[0] !== "%") {
|
|
18363
|
+
job.write(" Title: " + escapeXmlTitle(g.name));
|
|
18364
|
+
}
|
|
18365
|
+
job.write(" Pages: 1 -->\n");
|
|
18326
18366
|
}
|
|
18327
18367
|
function svgBeginPage(g, job) {
|
|
18328
|
-
const
|
|
18368
|
+
const clip = job.clip;
|
|
18329
18369
|
const z = job.scale.x;
|
|
18330
|
-
const tx = job.rotation !== 0 ? -
|
|
18331
|
-
const ty =
|
|
18370
|
+
const tx = job.rotation !== 0 ? -clip.ur.x - job.margin.x / z : -clip.ll.x + job.margin.x / z;
|
|
18371
|
+
const ty = clip.ur.y + job.margin.y / z;
|
|
18332
18372
|
emitGraphGroupOpen(
|
|
18333
18373
|
job.idLayerPrefix() + svgGraphId(g, job),
|
|
18334
18374
|
svgGraphClass(g),
|
|
@@ -18339,7 +18379,7 @@ function svgBeginPage(g, job) {
|
|
|
18339
18379
|
emitGraphTitle(g, job);
|
|
18340
18380
|
}
|
|
18341
18381
|
function svgPageBackground(g, job) {
|
|
18342
|
-
emitBgcolorBackground(g, job.
|
|
18382
|
+
emitBgcolorBackground(g, job.clip, g.attrs.get("bgcolor"), job);
|
|
18343
18383
|
}
|
|
18344
18384
|
function svgEndPage(job) {
|
|
18345
18385
|
job.write("</g>\n");
|
|
@@ -18675,7 +18715,7 @@ function svgPolyline(pts, job) {
|
|
|
18675
18715
|
job.write('"/>\n');
|
|
18676
18716
|
}
|
|
18677
18717
|
function svgComment(text, job) {
|
|
18678
|
-
job.write("<!-- " +
|
|
18718
|
+
job.write("<!-- " + escapeXmlTitle(text) + " -->\n");
|
|
18679
18719
|
}
|
|
18680
18720
|
function svgEdgePath(e, job) {
|
|
18681
18721
|
const spl = e.info.spl;
|
|
@@ -18862,6 +18902,22 @@ function initJobViewportZoom(bb, size, pad) {
|
|
|
18862
18902
|
if (drawingNeedsFit(size, szx, szy)) return Math.min(size.x / szx, size.y / szy);
|
|
18863
18903
|
return 1;
|
|
18864
18904
|
}
|
|
18905
|
+
function setupPageClip(bb, size, pad, z) {
|
|
18906
|
+
const jbLL = { x: bb.ll.x - pad.x, y: bb.ll.y - pad.y };
|
|
18907
|
+
const jbUR = { x: bb.ur.x + pad.x, y: bb.ur.y + pad.y };
|
|
18908
|
+
const sz = { x: jbUR.x - jbLL.x, y: jbUR.y - jbLL.y };
|
|
18909
|
+
if (size !== null && size.x > 1e-3 && size.y > 1e-3) {
|
|
18910
|
+
if (sz.x <= 1e-3) sz.x = size.x;
|
|
18911
|
+
if (sz.y <= 1e-3) sz.y = size.y;
|
|
18912
|
+
}
|
|
18913
|
+
const focus = { x: 0.5 * (bb.ll.x + bb.ur.x), y: 0.5 * (bb.ll.y + bb.ur.y) };
|
|
18914
|
+
const pageSize = { x: z * sz.x / z, y: z * sz.y / z };
|
|
18915
|
+
const ll = {
|
|
18916
|
+
x: focus.x + pageSize.x * (0 - 1 / 2),
|
|
18917
|
+
y: focus.y + pageSize.y * (0 - 1 / 2)
|
|
18918
|
+
};
|
|
18919
|
+
return { ll, ur: { x: ll.x + pageSize.x, y: ll.y + pageSize.y } };
|
|
18920
|
+
}
|
|
18865
18921
|
|
|
18866
18922
|
// src/gvc/anchor.ts
|
|
18867
18923
|
function attr(attrs, key) {
|
|
@@ -19373,10 +19429,22 @@ function renderClusterLabel(sg, renderer, job) {
|
|
|
19373
19429
|
renderOneLabel(sg.info.label, renderer, job, false);
|
|
19374
19430
|
}
|
|
19375
19431
|
|
|
19376
|
-
// src/
|
|
19377
|
-
function
|
|
19378
|
-
|
|
19432
|
+
// src/common/edge-in-box.ts
|
|
19433
|
+
function overlapLabel(lp, b) {
|
|
19434
|
+
const sx = lp.dimen.x / 2;
|
|
19435
|
+
const sy = lp.dimen.y / 2;
|
|
19436
|
+
const bb = {
|
|
19437
|
+
ll: { x: lp.pos.x - sx, y: lp.pos.y - sy },
|
|
19438
|
+
ur: { x: lp.pos.x + sx, y: lp.pos.y + sy }
|
|
19439
|
+
};
|
|
19440
|
+
return boxOverlap(b, bb);
|
|
19379
19441
|
}
|
|
19442
|
+
function edgeHasDrawableContent(e, clip) {
|
|
19443
|
+
const i = e.info;
|
|
19444
|
+
return i.spl !== void 0 || i.label !== void 0 && i.label.set && overlapLabel(i.label, clip) || i.xlabel !== void 0 || i.head_label !== void 0 || i.tail_label !== void 0;
|
|
19445
|
+
}
|
|
19446
|
+
|
|
19447
|
+
// src/gvc/emit-gates.ts
|
|
19380
19448
|
function nodeBBox(n) {
|
|
19381
19449
|
const { coord, lw, rw, ht } = n.info;
|
|
19382
19450
|
return {
|
|
@@ -19391,6 +19459,26 @@ function nodeInBox(n, job) {
|
|
|
19391
19459
|
};
|
|
19392
19460
|
return boxOverlap(nodeBBox(n), clip);
|
|
19393
19461
|
}
|
|
19462
|
+
function gvrenderComment(renderer, job, str) {
|
|
19463
|
+
if (str === void 0 || str.length === 0) return;
|
|
19464
|
+
renderer.comment?.(str, job);
|
|
19465
|
+
}
|
|
19466
|
+
function emitNodeComments(n, renderer, job) {
|
|
19467
|
+
gvrenderComment(renderer, job, n.name);
|
|
19468
|
+
gvrenderComment(renderer, job, nodeAttr(n, n.root, "comment"));
|
|
19469
|
+
}
|
|
19470
|
+
function emitEdgeComments(e, renderer, job) {
|
|
19471
|
+
if (!edgeHasDrawableContent(e, job.bb)) return;
|
|
19472
|
+
const kind = e.head.root.kind;
|
|
19473
|
+
const op = kind === "directed" || kind === "strict-directed" ? "->" : "--";
|
|
19474
|
+
gvrenderComment(renderer, job, e.tail.name + op + e.head.name);
|
|
19475
|
+
gvrenderComment(renderer, job, e.attrs.get("comment"));
|
|
19476
|
+
}
|
|
19477
|
+
|
|
19478
|
+
// src/gvc/device.ts
|
|
19479
|
+
function labelTextOf2(lp) {
|
|
19480
|
+
return lp?.text ?? null;
|
|
19481
|
+
}
|
|
19394
19482
|
function emitNodeBody(n, renderer, job) {
|
|
19395
19483
|
setHtmlAnchorObj(svgNodeId(n, job), labelTextOf2(n.info.label), job.obj ?? void 0);
|
|
19396
19484
|
setHtmlObjImgscale(nodeAttr(n, n.root, "imagescale"));
|
|
@@ -19406,6 +19494,7 @@ function renderNode(n, renderer, job, done) {
|
|
|
19406
19494
|
if (done.has(n)) return;
|
|
19407
19495
|
done.add(n);
|
|
19408
19496
|
if (!nodeInBox(n, job)) return;
|
|
19497
|
+
emitNodeComments(n, renderer, job);
|
|
19409
19498
|
const nodeStyle = nodeAttr(n, n.root, "style");
|
|
19410
19499
|
if (parseStyleFlags(nodeStyle).invis) return;
|
|
19411
19500
|
if (!isPointNode(n) && styleHasInvisibleAlias(nodeStyle)) return;
|
|
@@ -19431,6 +19520,7 @@ function setEdgePen(e, job) {
|
|
|
19431
19520
|
obj.rawStyle = styleTokens(e.attrs.get("style"));
|
|
19432
19521
|
}
|
|
19433
19522
|
function renderEdge(e, renderer, job) {
|
|
19523
|
+
emitEdgeComments(e, renderer, job);
|
|
19434
19524
|
const edgeStyle = e.attrs.get("style");
|
|
19435
19525
|
if (parseStyleFlags(edgeStyle).invis || styleHasInvisibleAlias(edgeStyle)) return;
|
|
19436
19526
|
const obj = createObjState(3 /* Edge */);
|
|
@@ -19544,7 +19634,9 @@ function render(ctx, g, format, inlineImages = false) {
|
|
|
19544
19634
|
job.bb = g.info.bb;
|
|
19545
19635
|
job.pad = parseGraphPad(g.attrs.get("pad"));
|
|
19546
19636
|
job.margin = parseGraphMargin(g.attrs.get("margin"));
|
|
19547
|
-
const
|
|
19637
|
+
const drawingSize = parseDrawingSize(g.attrs.get("size"));
|
|
19638
|
+
const z = initJobViewportZoom(job.bb, drawingSize, job.pad);
|
|
19639
|
+
job.clip = setupPageClip(job.bb, drawingSize, job.pad, z);
|
|
19548
19640
|
const drawingDpi = lateDouble(
|
|
19549
19641
|
g.attrs.get("dpi"),
|
|
19550
19642
|
lateDouble(g.attrs.get("resolution"), 0, 0),
|
|
@@ -27199,7 +27291,7 @@ function routeMultiRankEdgeFaithful(g, e) {
|
|
|
27199
27291
|
}
|
|
27200
27292
|
const segs = chainSegments(e);
|
|
27201
27293
|
if (segs.length === 0 || segs[segs.length - 1].head !== e.head) return null;
|
|
27202
|
-
return routeChainSegmented(g, segs[0], segs[segs.length - 1], segs);
|
|
27294
|
+
return routeChainSegmented(g, segs[0], segs[segs.length - 1], segs) ?? "lost";
|
|
27203
27295
|
}
|
|
27204
27296
|
function entryRunSegments(e) {
|
|
27205
27297
|
const segs = [e];
|
|
@@ -27271,7 +27363,10 @@ function routeBackEdge(e, _tailBox, _headBox, g) {
|
|
|
27271
27363
|
if (segs.length < 2 || segs[segs.length - 1].head !== e.tail) return;
|
|
27272
27364
|
const fwdEdge = makeFwdEdge(e);
|
|
27273
27365
|
const fwd = routeChainSegmented(g, segs[0], segs[segs.length - 1], segs);
|
|
27274
|
-
if (fwd === null)
|
|
27366
|
+
if (fwd === null) {
|
|
27367
|
+
e.info.lost = true;
|
|
27368
|
+
return;
|
|
27369
|
+
}
|
|
27275
27370
|
clipAndInstall(fwdEdge, fwdEdge.head, fwd, fwd.length, buildDotSinfo());
|
|
27276
27371
|
if (swapEndsP(e)) swapEdgeSpline(e);
|
|
27277
27372
|
}
|
|
@@ -27423,7 +27518,7 @@ function baseSplineForGroup(g, e0) {
|
|
|
27423
27518
|
const orig = resolveOrigEdge(e0);
|
|
27424
27519
|
const fe = isBackEdgeMember(orig) ? makeFwdEdge(orig) : orig;
|
|
27425
27520
|
const pts = routeRegularEdgeFaithful(g, fe);
|
|
27426
|
-
if (pts === "lost") return
|
|
27521
|
+
if (pts === "lost") return "lost";
|
|
27427
27522
|
return pts ?? routeMultiRankEdgeFaithful(g, fe);
|
|
27428
27523
|
}
|
|
27429
27524
|
function isBackEdgeMember(e) {
|
|
@@ -27452,6 +27547,10 @@ function routeParallelEdgeGroup(g, edges, multisep) {
|
|
|
27452
27547
|
return o.info.head_port?.defined || o.info.tail_port?.defined;
|
|
27453
27548
|
}) ?? edges[0];
|
|
27454
27549
|
const base = baseSplineForGroup(g, baseEdge);
|
|
27550
|
+
if (base === "lost") {
|
|
27551
|
+
for (const e of edges) resolveOrigEdge(e).info.lost = true;
|
|
27552
|
+
return;
|
|
27553
|
+
}
|
|
27455
27554
|
if (base === null) return;
|
|
27456
27555
|
if (cnt === 1) {
|
|
27457
27556
|
installShiftedEdge(edges[0], base);
|
|
@@ -30357,6 +30456,10 @@ function routeOneEdge(e, g) {
|
|
|
30357
30456
|
function routeFaithfulMultiRank(e, g) {
|
|
30358
30457
|
const pts = routeMultiRankEdgeFaithful(g, e);
|
|
30359
30458
|
if (pts === null) return false;
|
|
30459
|
+
if (pts === "lost") {
|
|
30460
|
+
e.info.lost = true;
|
|
30461
|
+
return true;
|
|
30462
|
+
}
|
|
30360
30463
|
clipAndInstall(e, e.head, pts, pts.length, buildDotSinfo());
|
|
30361
30464
|
return true;
|
|
30362
30465
|
}
|
|
@@ -30865,24 +30968,28 @@ function addSegment(segnum, seg2, tr, qs) {
|
|
|
30865
30968
|
swapSegEndpoints(s);
|
|
30866
30969
|
isSwapped = true;
|
|
30867
30970
|
}
|
|
30868
|
-
|
|
30869
|
-
|
|
30870
|
-
|
|
30871
|
-
|
|
30872
|
-
|
|
30971
|
+
const ctx = { s, seg: seg2, tr, qs, segnum, tribot: false, isSwapped };
|
|
30972
|
+
const tfirst = firstTrap(ctx);
|
|
30973
|
+
const tlast = lastTrap(ctx);
|
|
30974
|
+
if (threadSegment(ctx, tfirst, tlast) !== 0) return -1;
|
|
30975
|
+
seg2[segnum].isInserted = true;
|
|
30976
|
+
return 0;
|
|
30977
|
+
}
|
|
30978
|
+
function firstTrap(c) {
|
|
30979
|
+
if (!inserted(c.segnum, c.seg, c.isSwapped ? LASTPT : FIRSTPT)) {
|
|
30980
|
+
return insertV0(c.s, c.seg, c.tr, c.qs, c.segnum);
|
|
30873
30981
|
}
|
|
30874
|
-
|
|
30875
|
-
|
|
30876
|
-
|
|
30877
|
-
|
|
30878
|
-
|
|
30879
|
-
tlast = locateEndpoint(s.v1, s.v0, s.root1, seg2, qs);
|
|
30880
|
-
tribot = true;
|
|
30982
|
+
return locateEndpoint(c.s.v0, c.s.v1, c.s.root0, c.seg, c.qs);
|
|
30983
|
+
}
|
|
30984
|
+
function lastTrap(c) {
|
|
30985
|
+
if (!inserted(c.segnum, c.seg, c.isSwapped ? FIRSTPT : LASTPT)) {
|
|
30986
|
+
return insertV1(c.s, c.seg, c.tr, c.qs, c.segnum);
|
|
30881
30987
|
}
|
|
30882
|
-
|
|
30883
|
-
|
|
30988
|
+
c.tribot = true;
|
|
30989
|
+
return locateEndpoint(c.s.v1, c.s.v0, c.s.root1, c.seg, c.qs);
|
|
30884
30990
|
}
|
|
30885
|
-
function threadSegment(
|
|
30991
|
+
function threadSegment(c, tfirst, tlast) {
|
|
30992
|
+
const { s, seg: seg2, tr, qs, segnum, tribot, isSwapped } = c;
|
|
30886
30993
|
let tfirstr = INVALID_TRAP;
|
|
30887
30994
|
let tlastr = INVALID_TRAP;
|
|
30888
30995
|
let t = tfirst;
|
|
@@ -30909,17 +31016,20 @@ function threadSegment(s, seg2, tr, qs, segnum, tfirst, tlast, tribot, isSwapped
|
|
|
30909
31016
|
if (equalTo(tr[t].lo, tr[tlast].lo)) tlastr = tn;
|
|
30910
31017
|
const tSav = t;
|
|
30911
31018
|
const tnSav = tn;
|
|
31019
|
+
if (!isValidTrap(tr[t].d0) && !isValidTrap(tr[t].d1)) {
|
|
31020
|
+
console.error("trapezoid segment construction failed");
|
|
31021
|
+
return -1;
|
|
31022
|
+
}
|
|
30912
31023
|
t = advanceT(s, seg2, tr, t, tn, tlast, segnum, isSwapped, tribot);
|
|
30913
31024
|
tr[tSav].rseg = segnum;
|
|
30914
31025
|
tr[tnSav].lseg = segnum;
|
|
30915
31026
|
}
|
|
30916
31027
|
mergeTrapezoids(segnum, tfirst, tlast, S_LEFT, tr, qs);
|
|
30917
31028
|
mergeTrapezoids(segnum, tfirstr, tlastr, S_RIGHT, tr, qs);
|
|
31029
|
+
return 0;
|
|
30918
31030
|
}
|
|
30919
31031
|
function advanceT(s, seg2, tr, t, tn, tlast, segnum, isSwapped, tribot) {
|
|
30920
|
-
if (
|
|
30921
|
-
return INVALID_TRAP;
|
|
30922
|
-
} else if (isValidTrap(tr[t].d0) && !isValidTrap(tr[t].d1)) {
|
|
31032
|
+
if (isValidTrap(tr[t].d0) && !isValidTrap(tr[t].d1)) {
|
|
30923
31033
|
handleD0Only(s, seg2, tr, t, tn, tlast, segnum, isSwapped, tribot);
|
|
30924
31034
|
return tr[t].d0;
|
|
30925
31035
|
} else if (!isValidTrap(tr[t].d0) && isValidTrap(tr[t].d1)) {
|
|
@@ -30939,33 +31049,16 @@ function findNewRoots(segnum, seg2, tr, qs) {
|
|
|
30939
31049
|
// src/ortho/trapezoid.ts
|
|
30940
31050
|
function constructTrapezoids(nseg, seg2, permute) {
|
|
30941
31051
|
const qs = [];
|
|
30942
|
-
const tr = [];
|
|
30943
|
-
tr.push({
|
|
30944
|
-
lseg: 0,
|
|
30945
|
-
rseg: 0,
|
|
30946
|
-
hi: { x: 0, y: 0 },
|
|
30947
|
-
lo: { x: 0, y: 0 },
|
|
30948
|
-
u0: 0,
|
|
30949
|
-
u1: 0,
|
|
30950
|
-
d0: 0,
|
|
30951
|
-
d1: 0,
|
|
30952
|
-
sink: 0,
|
|
30953
|
-
usave: 0,
|
|
30954
|
-
uside: 0,
|
|
30955
|
-
isValid: false
|
|
30956
|
-
});
|
|
31052
|
+
const tr = [sentinelTrap()];
|
|
30957
31053
|
let segi = 0;
|
|
30958
31054
|
const root = initQueryStructure(permute[segi++], seg2, tr, qs);
|
|
30959
|
-
|
|
30960
|
-
seg2[i].root0 = root;
|
|
30961
|
-
seg2[i].root1 = root;
|
|
30962
|
-
}
|
|
31055
|
+
seedRoots(nseg, seg2, root);
|
|
30963
31056
|
const logstar = mathLogstarN(nseg);
|
|
30964
31057
|
for (let h = 1; h <= logstar; h++) {
|
|
30965
31058
|
const lo = mathN(nseg, h - 1) + 1;
|
|
30966
31059
|
const hi = mathN(nseg, h);
|
|
30967
31060
|
for (let i = lo; i <= hi; i++) {
|
|
30968
|
-
addSegment(permute[segi++], seg2, tr, qs);
|
|
31061
|
+
if (addSegment(permute[segi++], seg2, tr, qs) !== 0) return [];
|
|
30969
31062
|
}
|
|
30970
31063
|
for (let i = 1; i <= nseg; i++) {
|
|
30971
31064
|
findNewRoots(i, seg2, tr, qs);
|
|
@@ -30973,10 +31066,32 @@ function constructTrapezoids(nseg, seg2, permute) {
|
|
|
30973
31066
|
}
|
|
30974
31067
|
const remaining = mathN(nseg, logstar) + 1;
|
|
30975
31068
|
for (let i = remaining; i <= nseg; i++) {
|
|
30976
|
-
addSegment(permute[segi++], seg2, tr, qs);
|
|
31069
|
+
if (addSegment(permute[segi++], seg2, tr, qs) !== 0) return [];
|
|
30977
31070
|
}
|
|
30978
31071
|
return tr;
|
|
30979
31072
|
}
|
|
31073
|
+
function sentinelTrap() {
|
|
31074
|
+
return {
|
|
31075
|
+
lseg: 0,
|
|
31076
|
+
rseg: 0,
|
|
31077
|
+
hi: { x: 0, y: 0 },
|
|
31078
|
+
lo: { x: 0, y: 0 },
|
|
31079
|
+
u0: 0,
|
|
31080
|
+
u1: 0,
|
|
31081
|
+
d0: 0,
|
|
31082
|
+
d1: 0,
|
|
31083
|
+
sink: 0,
|
|
31084
|
+
usave: 0,
|
|
31085
|
+
uside: 0,
|
|
31086
|
+
isValid: false
|
|
31087
|
+
};
|
|
31088
|
+
}
|
|
31089
|
+
function seedRoots(nseg, seg2, root) {
|
|
31090
|
+
for (let i = 1; i <= nseg; i++) {
|
|
31091
|
+
seg2[i].root0 = root;
|
|
31092
|
+
seg2[i].root1 = root;
|
|
31093
|
+
}
|
|
31094
|
+
}
|
|
30980
31095
|
function initQueryStructure(segnum, seg2, tr, qs) {
|
|
30981
31096
|
const s = seg2[segnum];
|
|
30982
31097
|
const i1 = newQNode(qs);
|
|
@@ -31280,10 +31395,18 @@ function partition(cells, bb) {
|
|
|
31280
31395
|
const hSeg = h.genSegments(cells, bb, false);
|
|
31281
31396
|
const hPerm = h.generateRandomOrdering(nsegs);
|
|
31282
31397
|
const hTr = constructTrapezoids(nsegs, hSeg, hPerm);
|
|
31398
|
+
if (hTr.length === 0) {
|
|
31399
|
+
console.error("horizontal trapezoid construction failed");
|
|
31400
|
+
return null;
|
|
31401
|
+
}
|
|
31283
31402
|
const hDecomp = h.monotonateTrapezoids(hTr, hSeg, false);
|
|
31284
31403
|
const vSeg = h.genSegments(cells, bb, true);
|
|
31285
31404
|
const vPerm = h.generateRandomOrdering(nsegs);
|
|
31286
31405
|
const vTr = constructTrapezoids(nsegs, vSeg, vPerm);
|
|
31406
|
+
if (vTr.length === 0) {
|
|
31407
|
+
console.error("vertical trapezoid construction failed");
|
|
31408
|
+
return null;
|
|
31409
|
+
}
|
|
31287
31410
|
const vDecomp = h.monotonateTrapezoids(vTr, vSeg, true);
|
|
31288
31411
|
const result = [];
|
|
31289
31412
|
for (const v of vDecomp) {
|
|
@@ -31292,7 +31415,7 @@ function partition(cells, bb) {
|
|
|
31292
31415
|
if (isect) result.push(isect);
|
|
31293
31416
|
}
|
|
31294
31417
|
}
|
|
31295
|
-
return result;
|
|
31418
|
+
return result.length === 0 ? null : result;
|
|
31296
31419
|
}
|
|
31297
31420
|
|
|
31298
31421
|
// src/ortho/rawgraph.ts
|
|
@@ -32140,6 +32263,7 @@ function mkMaze(g) {
|
|
|
32140
32263
|
UR: { x: BB.UR.x + MARGIN, y: BB.UR.y + MARGIN }
|
|
32141
32264
|
};
|
|
32142
32265
|
const rects = partition(gcells, BB);
|
|
32266
|
+
if (rects === null) return null;
|
|
32143
32267
|
const cells = rects.map((bb) => ({
|
|
32144
32268
|
flags: 0,
|
|
32145
32269
|
nedges: 0,
|
|
@@ -32621,6 +32745,24 @@ function buildSpline(e, rte, mp) {
|
|
|
32621
32745
|
pts.push({ ...p });
|
|
32622
32746
|
return pts;
|
|
32623
32747
|
}
|
|
32748
|
+
function ensureDummyNodes(sg, gstart) {
|
|
32749
|
+
while (sg.nodes.length < gstart + 2) {
|
|
32750
|
+
sg.nodes.push({
|
|
32751
|
+
nVal: 0,
|
|
32752
|
+
nIdx: 0,
|
|
32753
|
+
nDad: null,
|
|
32754
|
+
nEdge: null,
|
|
32755
|
+
nAdj: 0,
|
|
32756
|
+
saveNAdj: 0,
|
|
32757
|
+
cells: [null, null],
|
|
32758
|
+
adjEdgeList: [],
|
|
32759
|
+
index: sg.nodes.length,
|
|
32760
|
+
isVert: false,
|
|
32761
|
+
x: 0,
|
|
32762
|
+
y: 0
|
|
32763
|
+
});
|
|
32764
|
+
}
|
|
32765
|
+
}
|
|
32624
32766
|
function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
32625
32767
|
if (useLbls) {
|
|
32626
32768
|
console.warn(
|
|
@@ -32630,6 +32772,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
32630
32772
|
}
|
|
32631
32773
|
void useLbls;
|
|
32632
32774
|
const mp = mkMaze(g);
|
|
32775
|
+
if (mp === null) return -1;
|
|
32633
32776
|
const sg = mp.sg;
|
|
32634
32777
|
const es = g.edges.map((e) => ({ e, d: edgeLen(e) }));
|
|
32635
32778
|
gvQsort(es, edgeCmp);
|
|
@@ -32639,22 +32782,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
32639
32782
|
const pq = pqGenForGraph(sg);
|
|
32640
32783
|
const sn = sg.nodes[gstart];
|
|
32641
32784
|
const dn = sg.nodes[gstart + 1];
|
|
32642
|
-
|
|
32643
|
-
sg.nodes.push({
|
|
32644
|
-
nVal: 0,
|
|
32645
|
-
nIdx: 0,
|
|
32646
|
-
nDad: null,
|
|
32647
|
-
nEdge: null,
|
|
32648
|
-
nAdj: 0,
|
|
32649
|
-
saveNAdj: 0,
|
|
32650
|
-
cells: [null, null],
|
|
32651
|
-
adjEdgeList: [],
|
|
32652
|
-
index: sg.nodes.length,
|
|
32653
|
-
isVert: false,
|
|
32654
|
-
x: 0,
|
|
32655
|
-
y: 0
|
|
32656
|
-
});
|
|
32657
|
-
}
|
|
32785
|
+
ensureDummyNodes(sg, gstart);
|
|
32658
32786
|
for (let i = 0; i < nEdges; i++) {
|
|
32659
32787
|
const e = es[i].e;
|
|
32660
32788
|
const start = mp.gcells[g.nodes.indexOf(e.tail)];
|
|
@@ -32668,7 +32796,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
32668
32796
|
if (shortPath(pq, sg, dn, sn) !== 0) {
|
|
32669
32797
|
pqFree(pq);
|
|
32670
32798
|
freeMaze(mp);
|
|
32671
|
-
return;
|
|
32799
|
+
return 0;
|
|
32672
32800
|
}
|
|
32673
32801
|
routeList[i] = convertSPtoRoute(sg, sn, dn);
|
|
32674
32802
|
reset(sg);
|
|
@@ -32679,7 +32807,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
32679
32807
|
assignSegs(routeList, mp);
|
|
32680
32808
|
if (assignTracks(mp) !== 0) {
|
|
32681
32809
|
freeMaze(mp);
|
|
32682
|
-
return;
|
|
32810
|
+
return 0;
|
|
32683
32811
|
}
|
|
32684
32812
|
if (clipAndInstall2) {
|
|
32685
32813
|
for (let i = 0; i < nEdges; i++) {
|
|
@@ -32690,6 +32818,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
32690
32818
|
}
|
|
32691
32819
|
}
|
|
32692
32820
|
freeMaze(mp);
|
|
32821
|
+
return 0;
|
|
32693
32822
|
}
|
|
32694
32823
|
|
|
32695
32824
|
// src/layout/dot/ortho-adapter.ts
|
|
@@ -32760,7 +32889,7 @@ function installOrthoResult(oe, pts) {
|
|
|
32760
32889
|
clipAndInstall(origEdge, origEdge.head, pts, pts.length, ORTHO_SINFO);
|
|
32761
32890
|
}
|
|
32762
32891
|
function dispatchOrthoEdges(g, useLbls) {
|
|
32763
|
-
orthoEdges(
|
|
32892
|
+
return orthoEdges(
|
|
32764
32893
|
buildOrthoGraph(g),
|
|
32765
32894
|
useLbls,
|
|
32766
32895
|
(_og, oe, pts) => installOrthoResult(oe, pts)
|
|
@@ -33297,12 +33426,12 @@ function resetRW(g) {
|
|
|
33297
33426
|
}
|
|
33298
33427
|
function orthoDispatch(g) {
|
|
33299
33428
|
resetRW(g);
|
|
33429
|
+
let rc;
|
|
33300
33430
|
if (((g.root.info.has_labels ?? 0) & EDGE_LABEL) !== 0) {
|
|
33301
33431
|
setEdgeLabelPos(g);
|
|
33302
|
-
dispatchOrthoEdges(g, true);
|
|
33303
|
-
} else
|
|
33304
|
-
|
|
33305
|
-
}
|
|
33432
|
+
rc = dispatchOrthoEdges(g, true);
|
|
33433
|
+
} else rc = dispatchOrthoEdges(g, false);
|
|
33434
|
+
if (rc !== 0) return rc;
|
|
33306
33435
|
placePortLabels(g);
|
|
33307
33436
|
g.info.edgeLabelsDone = true;
|
|
33308
33437
|
return 0;
|
|
@@ -33828,12 +33957,14 @@ function computeStep(ng, bbs, margin) {
|
|
|
33828
33957
|
c -= W * H;
|
|
33829
33958
|
}
|
|
33830
33959
|
const d = b * b - 4 * a * c;
|
|
33831
|
-
|
|
33832
|
-
const
|
|
33833
|
-
|
|
33960
|
+
const r = Math.sqrt(d);
|
|
33961
|
+
const l1 = (-b + r) / (2 * a);
|
|
33962
|
+
let root = Number.isNaN(l1) ? 0 : d2i(l1);
|
|
33963
|
+
if (root === 0) root = 1;
|
|
33964
|
+
return root;
|
|
33834
33965
|
}
|
|
33835
33966
|
function gridCells(x, s) {
|
|
33836
|
-
return Math.ceil(x / s);
|
|
33967
|
+
return d2i(Math.ceil(x / s));
|
|
33837
33968
|
}
|
|
33838
33969
|
function cval(v, s) {
|
|
33839
33970
|
return v >= 0 ? v / s : (v + 1) / s - 1;
|
|
@@ -33874,8 +34005,8 @@ function fits(x, y, info, ctx) {
|
|
|
33874
34005
|
const bb = ctx.bbs[info.index];
|
|
33875
34006
|
if (bb === void 0) return null;
|
|
33876
34007
|
const place = {
|
|
33877
|
-
x: ctx.step
|
|
33878
|
-
y: ctx.step
|
|
34008
|
+
x: Math.imul(ctx.step, x) - cround(bb.ll.x),
|
|
34009
|
+
y: Math.imul(ctx.step, y) - cround(bb.ll.y)
|
|
33879
34010
|
};
|
|
33880
34011
|
markCells(info.cells, x, y, ctx.ps);
|
|
33881
34012
|
return place;
|
|
@@ -33958,7 +34089,7 @@ function computeStep2(bbs, margin) {
|
|
|
33958
34089
|
c -= W * H;
|
|
33959
34090
|
}
|
|
33960
34091
|
const r = Math.sqrt(b * b - 4 * a * c);
|
|
33961
|
-
const root =
|
|
34092
|
+
const root = d2i((-b + r) / (2 * a));
|
|
33962
34093
|
return root === 0 ? 1 : root;
|
|
33963
34094
|
}
|
|
33964
34095
|
function lineXDominant(st, ps) {
|
|
@@ -34104,7 +34235,7 @@ function fits2(x, y, info, ctx) {
|
|
|
34104
34235
|
}
|
|
34105
34236
|
const bb = ctx.bbs[info.index];
|
|
34106
34237
|
const LL = { x: cround(bb.ll.x), y: cround(bb.ll.y) };
|
|
34107
|
-
ctx.places[info.index] = { x: ctx.step
|
|
34238
|
+
ctx.places[info.index] = { x: Math.imul(ctx.step, x) - LL.x, y: Math.imul(ctx.step, y) - LL.y };
|
|
34108
34239
|
for (const c of info.cells) ctx.ps.add(c.x + x, c.y + y);
|
|
34109
34240
|
return true;
|
|
34110
34241
|
}
|
|
@@ -34590,7 +34721,7 @@ function dotLayoutComponent(sg, root) {
|
|
|
34590
34721
|
dotRank(sg);
|
|
34591
34722
|
dotMincross(sg);
|
|
34592
34723
|
dotPosition(sg);
|
|
34593
|
-
dotPhasePostNoFinish(sg);
|
|
34724
|
+
return dotPhasePostNoFinish(sg);
|
|
34594
34725
|
}
|
|
34595
34726
|
function mapClust(clone, origOf) {
|
|
34596
34727
|
const orig = origOf.get(clone);
|
|
@@ -34676,7 +34807,9 @@ function packComponentsClusterAware(root, comps, pinfo) {
|
|
|
34676
34807
|
}
|
|
34677
34808
|
function layoutAndPack(root, comps, pinfo, origOf) {
|
|
34678
34809
|
dotGraphInit(root);
|
|
34679
|
-
for (const sg of comps)
|
|
34810
|
+
for (const sg of comps) {
|
|
34811
|
+
if (dotLayoutComponent(sg, root) !== 0) return;
|
|
34812
|
+
}
|
|
34680
34813
|
packComponentsClusterAware(root, comps, pinfo);
|
|
34681
34814
|
copyClusterInfo(comps, root, origOf);
|
|
34682
34815
|
expandRootBbForClusters(root);
|
|
@@ -34708,11 +34841,13 @@ function dotPhaseInit(g) {
|
|
|
34708
34841
|
function dotPhasePostNoFinish(g) {
|
|
34709
34842
|
removeFill(g);
|
|
34710
34843
|
dotSameports(g);
|
|
34711
|
-
dotSplines(g);
|
|
34844
|
+
const r = dotSplines(g);
|
|
34845
|
+
if (r !== 0) return r;
|
|
34712
34846
|
if (mapbool2(g.attrs.get("compound") ?? g.root.attrs.get("compound"))) dotCompoundEdges(g);
|
|
34847
|
+
return 0;
|
|
34713
34848
|
}
|
|
34714
34849
|
function dotPhasePost(g) {
|
|
34715
|
-
dotPhasePostNoFinish(g);
|
|
34850
|
+
if (dotPhasePostNoFinish(g) !== 0) return;
|
|
34716
34851
|
gvPostprocess(g);
|
|
34717
34852
|
}
|
|
34718
34853
|
function graphPhase(g) {
|
|
@@ -37598,10 +37733,10 @@ function raySegIntersect(v, w, a, b) {
|
|
|
37598
37733
|
const mv = { x: w.x - v.x, y: w.y - v.y };
|
|
37599
37734
|
const lv = { x: b.x - a.x, y: b.y - a.y };
|
|
37600
37735
|
const ln = { x: -lv.y, y: lv.x };
|
|
37601
|
-
const lc = -(ln.x
|
|
37602
|
-
const dt = ln.x
|
|
37736
|
+
const lc = -fma(ln.x, a.x, ln.y * a.y);
|
|
37737
|
+
const dt = fma(ln.x, mv.x, ln.y * mv.y);
|
|
37603
37738
|
if (Math.abs(dt) < SMALL3) return null;
|
|
37604
|
-
const s = (ln.x
|
|
37739
|
+
const s = (fma(ln.x, v.x, ln.y * v.y) + lc) / dt;
|
|
37605
37740
|
return { x: v.x - s * mv.x, y: v.y - s * mv.y };
|
|
37606
37741
|
}
|
|
37607
37742
|
function triPoint(trip, vx, v, w) {
|
|
@@ -37619,36 +37754,44 @@ function ctrlPtIdx(v, ps) {
|
|
|
37619
37754
|
return -1;
|
|
37620
37755
|
}
|
|
37621
37756
|
var SEP = 15;
|
|
37757
|
+
function bisectorTarget(v, cosTheta, sinTheta) {
|
|
37758
|
+
return { x: fma(cosTheta, 100, v.x), y: fma(sinTheta, 100, v.y) };
|
|
37759
|
+
}
|
|
37760
|
+
function distFused(p, q) {
|
|
37761
|
+
const dx = p.x - q.x;
|
|
37762
|
+
const dy = p.y - q.y;
|
|
37763
|
+
return Math.sqrt(fma(dx, dx, dy * dy));
|
|
37764
|
+
}
|
|
37622
37765
|
function mkCtrlPts(s, mult, prev, v, nxt, trip) {
|
|
37623
37766
|
const idx = ctrlPtIdx(v, trip.ps);
|
|
37624
37767
|
if (idx < 0) return null;
|
|
37625
37768
|
const theta = bisect(prev, v, nxt);
|
|
37626
37769
|
let sinTheta = Math.sin(theta);
|
|
37627
37770
|
let cosTheta = Math.cos(theta);
|
|
37628
|
-
let w =
|
|
37771
|
+
let w = bisectorTarget(v, cosTheta, sinTheta);
|
|
37629
37772
|
if (idx > s) {
|
|
37630
37773
|
if (wind(prev, v, w) !== 1) {
|
|
37631
37774
|
sinTheta *= -1;
|
|
37632
37775
|
cosTheta *= -1;
|
|
37633
|
-
w =
|
|
37776
|
+
w = bisectorTarget(v, cosTheta, sinTheta);
|
|
37634
37777
|
}
|
|
37635
37778
|
} else if (wind(prev, v, w) !== -1) {
|
|
37636
37779
|
sinTheta *= -1;
|
|
37637
37780
|
cosTheta *= -1;
|
|
37638
|
-
w =
|
|
37781
|
+
w = bisectorTarget(v, cosTheta, sinTheta);
|
|
37639
37782
|
}
|
|
37640
37783
|
const q = triPoint(trip, idx, v, w);
|
|
37641
37784
|
if (q === null) return null;
|
|
37642
|
-
const d =
|
|
37785
|
+
const d = distFused(q, v);
|
|
37643
37786
|
const sep = d >= mult * SEP ? SEP : d / mult;
|
|
37644
37787
|
const ps = new Array(mult);
|
|
37645
37788
|
if (idx < s) {
|
|
37646
37789
|
for (let i = 0; i < mult; i++) {
|
|
37647
|
-
ps[i] = { x:
|
|
37790
|
+
ps[i] = { x: fma(i * sep, cosTheta, v.x), y: fma(i * sep, sinTheta, v.y) };
|
|
37648
37791
|
}
|
|
37649
37792
|
} else {
|
|
37650
37793
|
for (let i = 0; i < mult; i++) {
|
|
37651
|
-
ps[mult - i - 1] = { x:
|
|
37794
|
+
ps[mult - i - 1] = { x: fma(i * sep, cosTheta, v.x), y: fma(i * sep, sinTheta, v.y) };
|
|
37652
37795
|
}
|
|
37653
37796
|
}
|
|
37654
37797
|
return ps;
|
|
@@ -38082,7 +38225,7 @@ var ObstacleHelper = class {
|
|
|
38082
38225
|
};
|
|
38083
38226
|
function ellipseTangentSlope(a, b, p) {
|
|
38084
38227
|
const signY = p.y >= 0 ? 1 : -1;
|
|
38085
|
-
return -signY * (b * p.x) / (a * Math.sqrt(a
|
|
38228
|
+
return -signY * (b * p.x) / (a * Math.sqrt(fma(a, a, -(p.x * p.x))));
|
|
38086
38229
|
}
|
|
38087
38230
|
function circumscribedCorner(a, b, i, nsides) {
|
|
38088
38231
|
const angle0 = 2 * Math.PI * (i - 0.5) / nsides;
|
|
@@ -38091,8 +38234,8 @@ function circumscribedCorner(a, b, i, nsides) {
|
|
|
38091
38234
|
const p1 = { x: a * Math.cos(angle1), y: b * Math.sin(angle1) };
|
|
38092
38235
|
const m0 = ellipseTangentSlope(a, b, p0);
|
|
38093
38236
|
const m1 = ellipseTangentSlope(a, b, p1);
|
|
38094
|
-
const x = (m0
|
|
38095
|
-
const y =
|
|
38237
|
+
const x = (fms(p1.x, m1, fma(m0, p0.x, -p0.y)) + p1.y) / (m0 - m1);
|
|
38238
|
+
const y = fma(m0, x - p0.x, p0.y);
|
|
38096
38239
|
return { x, y };
|
|
38097
38240
|
}
|
|
38098
38241
|
function boxCornerMargin(j, m) {
|
|
@@ -42169,8 +42312,8 @@ function initItem(n, margin) {
|
|
|
42169
42312
|
let w2;
|
|
42170
42313
|
let h2;
|
|
42171
42314
|
if (margin.doAdd) {
|
|
42172
|
-
w2 =
|
|
42173
|
-
h2 =
|
|
42315
|
+
w2 = d2i(SCALE * (cround(width / 2 * POINTS_PER_INCH6) + margin.x));
|
|
42316
|
+
h2 = d2i(SCALE * (cround(height / 2 * POINTS_PER_INCH6) + margin.y));
|
|
42174
42317
|
} else {
|
|
42175
42318
|
w2 = cround(margin.x * SCALE2 * width * POINTS_PER_INCH6);
|
|
42176
42319
|
h2 = cround(margin.y * SCALE2 * height * POINTS_PER_INCH6);
|
|
@@ -46178,6 +46321,20 @@ function powerLawGraph(A3) {
|
|
|
46178
46321
|
}
|
|
46179
46322
|
return mask[1] > 0.8 * max && mask[1] > 0.3 * m;
|
|
46180
46323
|
}
|
|
46324
|
+
var PCP_COVARIANCE_LANES = 4;
|
|
46325
|
+
function pcpCovariance(n, dim, x, y) {
|
|
46326
|
+
const nUnfused = n - n % PCP_COVARIANCE_LANES;
|
|
46327
|
+
for (let i = 0; i < n; i++) {
|
|
46328
|
+
for (let k = 0; k < dim; k++) {
|
|
46329
|
+
for (let l = 0; l < dim; l++) {
|
|
46330
|
+
const a = x[i * dim + k];
|
|
46331
|
+
const b = x[i * dim + l];
|
|
46332
|
+
const acc = y[dim * k + l];
|
|
46333
|
+
y[dim * k + l] = i < nUnfused ? acc + a * b : fma(a, b, acc);
|
|
46334
|
+
}
|
|
46335
|
+
}
|
|
46336
|
+
}
|
|
46337
|
+
}
|
|
46181
46338
|
function pcpRotate(n, dim, x) {
|
|
46182
46339
|
const y = [0, 0, 0, 0];
|
|
46183
46340
|
const center = [0, 0];
|
|
@@ -46188,24 +46345,23 @@ function pcpRotate(n, dim, x) {
|
|
|
46188
46345
|
for (let i = 0; i < n; i++) {
|
|
46189
46346
|
for (let k = 0; k < dim; k++) x[dim * i + k] -= center[k];
|
|
46190
46347
|
}
|
|
46191
|
-
|
|
46192
|
-
for (let k = 0; k < dim; k++) {
|
|
46193
|
-
for (let l = 0; l < dim; l++) {
|
|
46194
|
-
y[dim * k + l] = fma(x[i * dim + k], x[i * dim + l], y[dim * k + l]);
|
|
46195
|
-
}
|
|
46196
|
-
}
|
|
46197
|
-
}
|
|
46348
|
+
pcpCovariance(n, dim, x, y);
|
|
46198
46349
|
const axis = [0, 1];
|
|
46199
46350
|
if (y[1] !== 0) {
|
|
46200
|
-
|
|
46351
|
+
const radicand = fma(
|
|
46352
|
+
y[3],
|
|
46353
|
+
y[3],
|
|
46354
|
+
fma(-2 * y[0], y[3], fma(y[0], y[0], 4 * y[1] * y[1]))
|
|
46355
|
+
);
|
|
46356
|
+
axis[0] = -(-y[0] + y[3] - Math.sqrt(radicand)) / (2 * y[1]);
|
|
46201
46357
|
axis[1] = 1;
|
|
46202
46358
|
}
|
|
46203
|
-
const dist4 = Math.sqrt(
|
|
46359
|
+
const dist4 = Math.sqrt(fma(axis[0], axis[0], 1));
|
|
46204
46360
|
axis[0] = axis[0] / dist4;
|
|
46205
46361
|
axis[1] = axis[1] / dist4;
|
|
46206
46362
|
for (let i = 0; i < n; i++) {
|
|
46207
|
-
const x0 = x[dim * i]
|
|
46208
|
-
const x1 = -x[dim * i]
|
|
46363
|
+
const x0 = fma(x[dim * i], axis[0], x[dim * i + 1] * axis[1]);
|
|
46364
|
+
const x1 = fma(-x[dim * i], axis[1], x[dim * i + 1] * axis[0]);
|
|
46209
46365
|
x[dim * i] = x0;
|
|
46210
46366
|
x[dim * i + 1] = x1;
|
|
46211
46367
|
}
|
|
@@ -46468,16 +46624,7 @@ function makeCData(dn) {
|
|
|
46468
46624
|
};
|
|
46469
46625
|
}
|
|
46470
46626
|
|
|
46471
|
-
// src/layout/circo/
|
|
46472
|
-
function blockGraph(allEdges3, sn) {
|
|
46473
|
-
const ns = new Set(sn.subGraph.nodes);
|
|
46474
|
-
for (const n of sn.subGraph.nodes) {
|
|
46475
|
-
for (const e of allEdges3) {
|
|
46476
|
-
if (e.tail === n && ns.has(e.head) && !sn.subGraph.edges.includes(e))
|
|
46477
|
-
sn.subGraph.edges.push(e);
|
|
46478
|
-
}
|
|
46479
|
-
}
|
|
46480
|
-
}
|
|
46627
|
+
// src/layout/circo/crossings.ts
|
|
46481
46628
|
function derivedOf(n) {
|
|
46482
46629
|
return n.info.alg?.derivedNode ?? null;
|
|
46483
46630
|
}
|
|
@@ -46488,27 +46635,51 @@ function closeOpenEdge(e, d, opened) {
|
|
|
46488
46635
|
}
|
|
46489
46636
|
return cross2;
|
|
46490
46637
|
}
|
|
46491
|
-
function
|
|
46638
|
+
function agfstedgeLists(edges) {
|
|
46639
|
+
const seq2 = /* @__PURE__ */ new Map();
|
|
46640
|
+
edges.forEach((e, i) => seq2.set(e, i));
|
|
46641
|
+
const by = (end) => (a, b) => end(a).orig.id - end(b).orig.id || seq2.get(a) - seq2.get(b);
|
|
46642
|
+
const out = /* @__PURE__ */ new Map();
|
|
46643
|
+
const inn = /* @__PURE__ */ new Map();
|
|
46492
46644
|
for (const e of edges) {
|
|
46493
|
-
|
|
46494
|
-
|
|
46495
|
-
|
|
46496
|
-
|
|
46645
|
+
out.set(e.tail, [...out.get(e.tail) ?? [], e]);
|
|
46646
|
+
inn.set(e.head, [...inn.get(e.head) ?? [], e]);
|
|
46647
|
+
}
|
|
46648
|
+
const lists = /* @__PURE__ */ new Map();
|
|
46649
|
+
for (const d of /* @__PURE__ */ new Set([...out.keys(), ...inn.keys()])) {
|
|
46650
|
+
const o = (out.get(d) ?? []).sort(by((e) => e.head));
|
|
46651
|
+
const i = (inn.get(d) ?? []).sort(by((e) => e.tail));
|
|
46652
|
+
lists.set(d, [...o, ...i]);
|
|
46497
46653
|
}
|
|
46654
|
+
return lists;
|
|
46498
46655
|
}
|
|
46499
46656
|
function countCrossings(list, edges) {
|
|
46500
46657
|
for (const e of edges) e.order = 0;
|
|
46501
|
-
const
|
|
46658
|
+
const incident = agfstedgeLists(edges);
|
|
46659
|
+
const opened = /* @__PURE__ */ new Map();
|
|
46502
46660
|
let crossings = 0;
|
|
46503
46661
|
let order = 1;
|
|
46504
46662
|
for (const n of list) {
|
|
46505
46663
|
const d = derivedOf(n);
|
|
46506
46664
|
if (!d) continue;
|
|
46507
|
-
|
|
46508
|
-
|
|
46509
|
-
|
|
46665
|
+
const es = incident.get(d) ?? [];
|
|
46666
|
+
crossings += closeEdgesAt(d, es, opened);
|
|
46667
|
+
for (const e of es) {
|
|
46668
|
+
if (e.order === 0) {
|
|
46669
|
+
e.order = order;
|
|
46670
|
+
opened.set(e, d);
|
|
46671
|
+
}
|
|
46510
46672
|
}
|
|
46511
|
-
|
|
46673
|
+
order++;
|
|
46674
|
+
}
|
|
46675
|
+
return crossings;
|
|
46676
|
+
}
|
|
46677
|
+
function closeEdgesAt(d, es, opened) {
|
|
46678
|
+
let crossings = 0;
|
|
46679
|
+
for (const e of es) {
|
|
46680
|
+
if (e.order === 0) continue;
|
|
46681
|
+
crossings += closeOpenEdge(e, d, opened.keys());
|
|
46682
|
+
if (opened.get(e) === d) opened.delete(e);
|
|
46512
46683
|
}
|
|
46513
46684
|
return crossings;
|
|
46514
46685
|
}
|
|
@@ -46561,6 +46732,17 @@ function spanIncident(dn, edges, ord, seq2) {
|
|
|
46561
46732
|
const inn = edges.filter((e) => e.head === dn).sort((a, b) => (ord.get(a.tail) ?? 0) - (ord.get(b.tail) ?? 0) || (seq2.get(a) ?? 0) - (seq2.get(b) ?? 0));
|
|
46562
46733
|
return [...out, ...inn];
|
|
46563
46734
|
}
|
|
46735
|
+
|
|
46736
|
+
// src/layout/circo/blockpath.ts
|
|
46737
|
+
function blockGraph(allEdges3, sn) {
|
|
46738
|
+
const ns = new Set(sn.subGraph.nodes);
|
|
46739
|
+
for (const n of sn.subGraph.nodes) {
|
|
46740
|
+
for (const e of allEdges3) {
|
|
46741
|
+
if (e.tail === n && ns.has(e.head) && !sn.subGraph.edges.includes(e))
|
|
46742
|
+
sn.subGraph.edges.push(e);
|
|
46743
|
+
}
|
|
46744
|
+
}
|
|
46745
|
+
}
|
|
46564
46746
|
function dfsSpan(sn, map, edges, ord, seq2) {
|
|
46565
46747
|
sn.visited = true;
|
|
46566
46748
|
for (const e of spanIncident(sn.dn, edges, ord, seq2)) {
|
|
@@ -48039,17 +48221,30 @@ function renderEdgeLabels(e, renderer, job) {
|
|
|
48039
48221
|
}
|
|
48040
48222
|
function emitEdgeLabel(lp, id, hs, renderer, job, spl, emitState) {
|
|
48041
48223
|
if (!lp?.set) return;
|
|
48042
|
-
|
|
48043
|
-
|
|
48044
|
-
|
|
48045
|
-
|
|
48046
|
-
|
|
48047
|
-
|
|
48048
|
-
|
|
48049
|
-
|
|
48224
|
+
withObjEmitState(job, emitState ?? 11 /* ELabel */, () => {
|
|
48225
|
+
const open = hs.url !== null || hs.explicit;
|
|
48226
|
+
if (open) openAnchorWith(renderer, job, hs.url, hs.tooltip, hs.target, id);
|
|
48227
|
+
const savedOverride = job.labelEmitOverride;
|
|
48228
|
+
if (emitState !== void 0) job.labelEmitOverride = emitState;
|
|
48229
|
+
try {
|
|
48230
|
+
renderOneLabel(lp, renderer, job);
|
|
48231
|
+
} finally {
|
|
48232
|
+
job.labelEmitOverride = savedOverride;
|
|
48233
|
+
}
|
|
48234
|
+
if (spl) emitAttachment(lp, spl, renderer, job);
|
|
48235
|
+
if (open) renderer.endAnchor?.(job);
|
|
48236
|
+
});
|
|
48237
|
+
}
|
|
48238
|
+
function withObjEmitState(job, lkind, fn) {
|
|
48239
|
+
const obj = job.obj;
|
|
48240
|
+
if (obj === null) {
|
|
48241
|
+
fn();
|
|
48242
|
+
return;
|
|
48050
48243
|
}
|
|
48051
|
-
|
|
48052
|
-
|
|
48244
|
+
const oldEmitState = obj.emitState;
|
|
48245
|
+
obj.emitState = lkind;
|
|
48246
|
+
fn();
|
|
48247
|
+
obj.emitState = oldEmitState;
|
|
48053
48248
|
}
|
|
48054
48249
|
function emitAttachment(lp, spl, renderer, job) {
|
|
48055
48250
|
if (!lp?.set) return;
|
|
@@ -49635,6 +49830,7 @@ var DotWriterBase = class {
|
|
|
49635
49830
|
|
|
49636
49831
|
// src/render/dot/edge-draw.ts
|
|
49637
49832
|
var DEFAULT_COLOR5 = "black";
|
|
49833
|
+
var DEFAULT_LINE_STYLE = ["solid", "setlinewidth(1)"];
|
|
49638
49834
|
function emitArrowOp(buf, op, pen) {
|
|
49639
49835
|
switch (op.kind) {
|
|
49640
49836
|
case "polygon":
|
|
@@ -49658,6 +49854,25 @@ function emitArrowOp(buf, op, pen) {
|
|
|
49658
49854
|
var EdgeDrawBase = class extends DotWriterBase {
|
|
49659
49855
|
/** setlinewidth state per emit_state. @see gvrender_core_dot.c penwidth[] */
|
|
49660
49856
|
penwidth = new Array(12).fill(1);
|
|
49857
|
+
/**
|
|
49858
|
+
* emit_attachment's draw calls (decorate=true): gvrender_set_style with the
|
|
49859
|
+
* default line style sets the obj's rawstyle/pen/penwidth (setlinewidth 1),
|
|
49860
|
+
* gvrender_set_pencolor sets the pen to the label fontcolor (first entry of
|
|
49861
|
+
* a color list), then gvrender_polyline → xdot_polyline emits the style ops
|
|
49862
|
+
* (`S 5 -solid`; setlinewidth is filtered), the pen color and `L 3`.
|
|
49863
|
+
* @see lib/common/emit.c:emit_attachment (1886-1893)
|
|
49864
|
+
* @see lib/gvc/gvrender.c:gvrender_set_style / gvrender_set_pencolor
|
|
49865
|
+
*/
|
|
49866
|
+
attachmentPolyline(pts, pencolor, job) {
|
|
49867
|
+
const obj = job.obj;
|
|
49868
|
+
if (obj !== null) {
|
|
49869
|
+
obj.rawStyle = [...DEFAULT_LINE_STYLE];
|
|
49870
|
+
obj.pen = 3 /* Solid */;
|
|
49871
|
+
obj.penWidth = 1;
|
|
49872
|
+
obj.penColor = resolveRenderColor(pencolor.split(":")[0]);
|
|
49873
|
+
}
|
|
49874
|
+
this.polyline(pts, job);
|
|
49875
|
+
}
|
|
49661
49876
|
/**
|
|
49662
49877
|
* The plain single-colour spline branch of beginEdge — lifted verbatim so the
|
|
49663
49878
|
* four-way spline-kind chain above stays readable; no branch was reordered or
|
|
@@ -50191,19 +50406,6 @@ function emitMulticolorArrows(e, job, headColor, tailColor) {
|
|
|
50191
50406
|
emitArrowOps(headOps, headColor, job, pw, colorOpacity(resolveRenderColor(headColor)));
|
|
50192
50407
|
}
|
|
50193
50408
|
}
|
|
50194
|
-
function overlapLabel(lp, b) {
|
|
50195
|
-
const sx = lp.dimen.x / 2;
|
|
50196
|
-
const sy = lp.dimen.y / 2;
|
|
50197
|
-
const bb = {
|
|
50198
|
-
ll: { x: lp.pos.x - sx, y: lp.pos.y - sy },
|
|
50199
|
-
ur: { x: lp.pos.x + sx, y: lp.pos.y + sy }
|
|
50200
|
-
};
|
|
50201
|
-
return boxOverlap(b, bb);
|
|
50202
|
-
}
|
|
50203
|
-
function edgeHasDrawableContent(e, clip) {
|
|
50204
|
-
const i = e.info;
|
|
50205
|
-
return i.spl !== void 0 || i.label !== void 0 && i.label.set && overlapLabel(i.label, clip) || i.xlabel !== void 0 || i.head_label !== void 0 || i.tail_label !== void 0;
|
|
50206
|
-
}
|
|
50207
50409
|
var SvgRenderer = class {
|
|
50208
50410
|
type = "svg";
|
|
50209
50411
|
/** @see plugin/core/gvplugin_core.c registration table */
|
|
@@ -50468,9 +50670,9 @@ function peg$parse(input, options) {
|
|
|
50468
50670
|
const peg$c0 = "{";
|
|
50469
50671
|
const peg$c1 = "}";
|
|
50470
50672
|
const peg$c2 = ";";
|
|
50471
|
-
const peg$c3 = "
|
|
50472
|
-
const peg$c4 = "
|
|
50473
|
-
const peg$c5 = "
|
|
50673
|
+
const peg$c3 = "=";
|
|
50674
|
+
const peg$c4 = "[";
|
|
50675
|
+
const peg$c5 = "]";
|
|
50474
50676
|
const peg$c6 = ":";
|
|
50475
50677
|
const peg$c7 = "->";
|
|
50476
50678
|
const peg$c8 = "--";
|
|
@@ -50494,32 +50696,30 @@ function peg$parse(input, options) {
|
|
|
50494
50696
|
const peg$r3 = /^[A-Za-z_\x80-\uFFFF]/;
|
|
50495
50697
|
const peg$r4 = /^[A-Za-z_0-9\x80-\uFFFF]/;
|
|
50496
50698
|
const peg$r5 = /^[0-9]/;
|
|
50497
|
-
const peg$r6 = /^[
|
|
50498
|
-
const peg$r7 = /^[
|
|
50499
|
-
const peg$r8 = /^[
|
|
50500
|
-
const peg$r9 = /^[
|
|
50501
|
-
const peg$r10 = /^[
|
|
50502
|
-
const peg$r11 = /^[
|
|
50503
|
-
const peg$r12 = /^[
|
|
50504
|
-
const peg$r13 = /^[
|
|
50505
|
-
const peg$r14 = /^[
|
|
50506
|
-
const peg$r15 = /^[
|
|
50507
|
-
const peg$r16 = /^[
|
|
50508
|
-
const peg$r17 = /^[
|
|
50509
|
-
const peg$r18 = /^[
|
|
50510
|
-
const peg$r19 = /^[
|
|
50511
|
-
const peg$r20 = /^[
|
|
50512
|
-
const peg$r21 = /^[
|
|
50513
|
-
const peg$r22 = /^[
|
|
50514
|
-
const peg$r23 = /^[ \t\r\n]/;
|
|
50515
|
-
const peg$r24 = /^[^\n]/;
|
|
50699
|
+
const peg$r6 = /^[Ss]/;
|
|
50700
|
+
const peg$r7 = /^[Tt]/;
|
|
50701
|
+
const peg$r8 = /^[Rr]/;
|
|
50702
|
+
const peg$r9 = /^[Ii]/;
|
|
50703
|
+
const peg$r10 = /^[Cc]/;
|
|
50704
|
+
const peg$r11 = /^[Gg]/;
|
|
50705
|
+
const peg$r12 = /^[Aa]/;
|
|
50706
|
+
const peg$r13 = /^[Pp]/;
|
|
50707
|
+
const peg$r14 = /^[Hh]/;
|
|
50708
|
+
const peg$r15 = /^[Dd]/;
|
|
50709
|
+
const peg$r16 = /^[Nn]/;
|
|
50710
|
+
const peg$r17 = /^[Oo]/;
|
|
50711
|
+
const peg$r18 = /^[Ee]/;
|
|
50712
|
+
const peg$r19 = /^[Uu]/;
|
|
50713
|
+
const peg$r20 = /^[Bb]/;
|
|
50714
|
+
const peg$r21 = /^[ \t\r\n]/;
|
|
50715
|
+
const peg$r22 = /^[^\n]/;
|
|
50516
50716
|
const peg$e0 = peg$literalExpectation("{", false);
|
|
50517
50717
|
const peg$e1 = peg$literalExpectation("}", false);
|
|
50518
50718
|
const peg$e2 = peg$literalExpectation(";", false);
|
|
50519
|
-
const peg$e3 = peg$literalExpectation("
|
|
50520
|
-
const peg$e4 = peg$literalExpectation("
|
|
50521
|
-
const peg$e5 = peg$
|
|
50522
|
-
const peg$e6 = peg$
|
|
50719
|
+
const peg$e3 = peg$literalExpectation("=", false);
|
|
50720
|
+
const peg$e4 = peg$literalExpectation("[", false);
|
|
50721
|
+
const peg$e5 = peg$literalExpectation("]", false);
|
|
50722
|
+
const peg$e6 = peg$classExpectation([";", ","], false, false, false);
|
|
50523
50723
|
const peg$e7 = peg$literalExpectation(":", false);
|
|
50524
50724
|
const peg$e8 = peg$otherExpectation("edge operator");
|
|
50525
50725
|
const peg$e9 = peg$literalExpectation("->", false);
|
|
@@ -50539,30 +50739,28 @@ function peg$parse(input, options) {
|
|
|
50539
50739
|
const peg$e23 = peg$literalExpectation("-", false);
|
|
50540
50740
|
const peg$e24 = peg$classExpectation([["0", "9"]], false, false, false);
|
|
50541
50741
|
const peg$e25 = peg$literalExpectation(".", false);
|
|
50542
|
-
const peg$e26 = peg$classExpectation(["
|
|
50543
|
-
const peg$e27 = peg$classExpectation(["
|
|
50544
|
-
const peg$e28 = peg$classExpectation(["
|
|
50545
|
-
const peg$e29 = peg$classExpectation(["
|
|
50546
|
-
const peg$e30 = peg$classExpectation(["
|
|
50547
|
-
const peg$e31 = peg$classExpectation(["
|
|
50548
|
-
const peg$e32 = peg$classExpectation(["
|
|
50549
|
-
const peg$e33 = peg$classExpectation(["
|
|
50550
|
-
const peg$e34 = peg$classExpectation(["
|
|
50551
|
-
const peg$e35 = peg$classExpectation(["
|
|
50552
|
-
const peg$e36 = peg$classExpectation(["
|
|
50553
|
-
const peg$e37 = peg$classExpectation(["
|
|
50554
|
-
const peg$e38 = peg$classExpectation(["
|
|
50555
|
-
const peg$e39 = peg$classExpectation(["
|
|
50556
|
-
const peg$e40 = peg$classExpectation(["
|
|
50557
|
-
const peg$e41 = peg$classExpectation(["
|
|
50558
|
-
const peg$e42 = peg$
|
|
50559
|
-
const peg$e43 = peg$
|
|
50560
|
-
const peg$e44 = peg$literalExpectation("
|
|
50561
|
-
const peg$e45 = peg$
|
|
50562
|
-
const peg$e46 = peg$literalExpectation("
|
|
50563
|
-
const peg$e47 = peg$
|
|
50564
|
-
const peg$e48 = peg$literalExpectation("\n", false);
|
|
50565
|
-
const peg$e49 = peg$literalExpectation("#", false);
|
|
50742
|
+
const peg$e26 = peg$classExpectation(["S", "s"], false, false, false);
|
|
50743
|
+
const peg$e27 = peg$classExpectation(["T", "t"], false, false, false);
|
|
50744
|
+
const peg$e28 = peg$classExpectation(["R", "r"], false, false, false);
|
|
50745
|
+
const peg$e29 = peg$classExpectation(["I", "i"], false, false, false);
|
|
50746
|
+
const peg$e30 = peg$classExpectation(["C", "c"], false, false, false);
|
|
50747
|
+
const peg$e31 = peg$classExpectation(["G", "g"], false, false, false);
|
|
50748
|
+
const peg$e32 = peg$classExpectation(["A", "a"], false, false, false);
|
|
50749
|
+
const peg$e33 = peg$classExpectation(["P", "p"], false, false, false);
|
|
50750
|
+
const peg$e34 = peg$classExpectation(["H", "h"], false, false, false);
|
|
50751
|
+
const peg$e35 = peg$classExpectation(["D", "d"], false, false, false);
|
|
50752
|
+
const peg$e36 = peg$classExpectation(["N", "n"], false, false, false);
|
|
50753
|
+
const peg$e37 = peg$classExpectation(["O", "o"], false, false, false);
|
|
50754
|
+
const peg$e38 = peg$classExpectation(["E", "e"], false, false, false);
|
|
50755
|
+
const peg$e39 = peg$classExpectation(["U", "u"], false, false, false);
|
|
50756
|
+
const peg$e40 = peg$classExpectation(["B", "b"], false, false, false);
|
|
50757
|
+
const peg$e41 = peg$classExpectation([" ", " ", "\r", "\n"], false, false, false);
|
|
50758
|
+
const peg$e42 = peg$literalExpectation("/*", false);
|
|
50759
|
+
const peg$e43 = peg$literalExpectation("*/", false);
|
|
50760
|
+
const peg$e44 = peg$literalExpectation("//", false);
|
|
50761
|
+
const peg$e45 = peg$classExpectation(["\n"], true, false, false);
|
|
50762
|
+
const peg$e46 = peg$literalExpectation("\n", false);
|
|
50763
|
+
const peg$e47 = peg$literalExpectation("#", false);
|
|
50566
50764
|
function peg$f0(s, t, id, stmts) {
|
|
50567
50765
|
return {
|
|
50568
50766
|
type: "graph",
|
|
@@ -50605,37 +50803,44 @@ function peg$parse(input, options) {
|
|
|
50605
50803
|
function peg$f11(s) {
|
|
50606
50804
|
return s;
|
|
50607
50805
|
}
|
|
50608
|
-
function peg$f12(t, attrs) {
|
|
50806
|
+
function peg$f12(t, m, attrs) {
|
|
50807
|
+
if (m) console.error("Warning: attribute macros not implemented");
|
|
50609
50808
|
return { type: "attr", target: t, attrs };
|
|
50610
50809
|
}
|
|
50611
50810
|
function peg$f13(a) {
|
|
50612
50811
|
return { type: "assign", key: a.key, value: a.value };
|
|
50613
50812
|
}
|
|
50614
50813
|
function peg$f14() {
|
|
50615
|
-
return
|
|
50814
|
+
return true;
|
|
50616
50815
|
}
|
|
50617
50816
|
function peg$f15() {
|
|
50618
|
-
return
|
|
50817
|
+
return false;
|
|
50619
50818
|
}
|
|
50620
50819
|
function peg$f16() {
|
|
50820
|
+
return "graph";
|
|
50821
|
+
}
|
|
50822
|
+
function peg$f17() {
|
|
50823
|
+
return "node";
|
|
50824
|
+
}
|
|
50825
|
+
function peg$f18() {
|
|
50621
50826
|
return "edge";
|
|
50622
50827
|
}
|
|
50623
|
-
function peg$
|
|
50828
|
+
function peg$f19(defs, rest) {
|
|
50624
50829
|
return defs.concat(rest);
|
|
50625
50830
|
}
|
|
50626
|
-
function peg$
|
|
50831
|
+
function peg$f20() {
|
|
50627
50832
|
return [];
|
|
50628
50833
|
}
|
|
50629
|
-
function peg$
|
|
50834
|
+
function peg$f21(a) {
|
|
50630
50835
|
return a;
|
|
50631
50836
|
}
|
|
50632
|
-
function peg$
|
|
50837
|
+
function peg$f22(pairs) {
|
|
50633
50838
|
return pairs;
|
|
50634
50839
|
}
|
|
50635
|
-
function peg$
|
|
50840
|
+
function peg$f23(k, v) {
|
|
50636
50841
|
return { key: k, value: v };
|
|
50637
50842
|
}
|
|
50638
|
-
function peg$
|
|
50843
|
+
function peg$f24(head, chain, attrs) {
|
|
50639
50844
|
if (chain.length > 0) {
|
|
50640
50845
|
const nodes = [head].concat(chain);
|
|
50641
50846
|
return { type: "edge", nodes, attrs };
|
|
@@ -50646,70 +50851,70 @@ function peg$parse(input, options) {
|
|
|
50646
50851
|
return { type: "node", id: head, attrs };
|
|
50647
50852
|
}
|
|
50648
50853
|
}
|
|
50649
|
-
function peg$
|
|
50854
|
+
function peg$f25(s) {
|
|
50650
50855
|
return s;
|
|
50651
50856
|
}
|
|
50652
|
-
function peg$
|
|
50857
|
+
function peg$f26(n) {
|
|
50653
50858
|
return n;
|
|
50654
50859
|
}
|
|
50655
|
-
function peg$
|
|
50860
|
+
function peg$f27(id, port, compass) {
|
|
50656
50861
|
return { id, port, compass };
|
|
50657
50862
|
}
|
|
50658
|
-
function peg$
|
|
50863
|
+
function peg$f28(id, port) {
|
|
50659
50864
|
return { id, port, compass: null };
|
|
50660
50865
|
}
|
|
50661
|
-
function peg$
|
|
50866
|
+
function peg$f29(id) {
|
|
50662
50867
|
return { id, port: null, compass: null };
|
|
50663
50868
|
}
|
|
50664
|
-
function peg$
|
|
50869
|
+
function peg$f30(s, rest) {
|
|
50665
50870
|
return [s].concat(rest);
|
|
50666
50871
|
}
|
|
50667
|
-
function peg$
|
|
50872
|
+
function peg$f31() {
|
|
50668
50873
|
return [];
|
|
50669
50874
|
}
|
|
50670
|
-
function peg$
|
|
50875
|
+
function peg$f32(id, stmts) {
|
|
50671
50876
|
return { type: "subgraph", id, stmts };
|
|
50672
50877
|
}
|
|
50673
|
-
function peg$
|
|
50878
|
+
function peg$f33(stmts) {
|
|
50674
50879
|
return { type: "subgraph", id: null, stmts };
|
|
50675
50880
|
}
|
|
50676
|
-
function peg$
|
|
50881
|
+
function peg$f34(stmts) {
|
|
50677
50882
|
return { type: "subgraph", id: null, stmts };
|
|
50678
50883
|
}
|
|
50679
|
-
function peg$
|
|
50884
|
+
function peg$f35(first, s) {
|
|
50680
50885
|
return s;
|
|
50681
50886
|
}
|
|
50682
|
-
function peg$
|
|
50887
|
+
function peg$f36(first, rest) {
|
|
50683
50888
|
return rest.length > 0 ? first + rest.join("") : first;
|
|
50684
50889
|
}
|
|
50685
|
-
function peg$
|
|
50890
|
+
function peg$f37(chars) {
|
|
50686
50891
|
return chars.join("");
|
|
50687
50892
|
}
|
|
50688
|
-
function peg$
|
|
50893
|
+
function peg$f38() {
|
|
50689
50894
|
return '"';
|
|
50690
50895
|
}
|
|
50691
|
-
function peg$
|
|
50896
|
+
function peg$f39() {
|
|
50692
50897
|
return "";
|
|
50693
50898
|
}
|
|
50694
|
-
function peg$
|
|
50899
|
+
function peg$f40(c) {
|
|
50695
50900
|
return "\\" + c;
|
|
50696
50901
|
}
|
|
50697
|
-
function peg$
|
|
50902
|
+
function peg$f41(content) {
|
|
50698
50903
|
return "" + content;
|
|
50699
50904
|
}
|
|
50700
|
-
function peg$
|
|
50905
|
+
function peg$f42(chars) {
|
|
50701
50906
|
return chars.join("");
|
|
50702
50907
|
}
|
|
50703
|
-
function peg$
|
|
50908
|
+
function peg$f43(nested2, content) {
|
|
50704
50909
|
return "<" + content + ">";
|
|
50705
50910
|
}
|
|
50706
|
-
function peg$
|
|
50911
|
+
function peg$f44(n) {
|
|
50707
50912
|
return n;
|
|
50708
50913
|
}
|
|
50709
|
-
function peg$
|
|
50914
|
+
function peg$f45(first, rest) {
|
|
50710
50915
|
return first + rest.join("");
|
|
50711
50916
|
}
|
|
50712
|
-
function peg$
|
|
50917
|
+
function peg$f46(s) {
|
|
50713
50918
|
return Array.isArray(s) ? s.flat(Infinity).filter((x) => x !== null && x !== void 0).join("") : String(s);
|
|
50714
50919
|
}
|
|
50715
50920
|
let peg$currPos = options.peg$currPos | 0;
|
|
@@ -51080,15 +51285,21 @@ function peg$parse(input, options) {
|
|
|
51080
51285
|
return s0;
|
|
51081
51286
|
}
|
|
51082
51287
|
function peg$parseAttrStmt() {
|
|
51083
|
-
let s0, s12, s2, s3;
|
|
51288
|
+
let s0, s12, s2, s3, s4;
|
|
51084
51289
|
s0 = peg$currPos;
|
|
51085
51290
|
s12 = peg$parseAttrType();
|
|
51086
51291
|
if (s12 !== peg$FAILED) {
|
|
51087
51292
|
s2 = peg$parse_();
|
|
51088
|
-
s3 = peg$
|
|
51293
|
+
s3 = peg$parseOptMacroName();
|
|
51089
51294
|
if (s3 !== peg$FAILED) {
|
|
51090
|
-
|
|
51091
|
-
|
|
51295
|
+
s4 = peg$parseAttrListReq();
|
|
51296
|
+
if (s4 !== peg$FAILED) {
|
|
51297
|
+
peg$savedPos = s0;
|
|
51298
|
+
s0 = peg$f12(s12, s3, s4);
|
|
51299
|
+
} else {
|
|
51300
|
+
peg$currPos = s0;
|
|
51301
|
+
s0 = peg$FAILED;
|
|
51302
|
+
}
|
|
51092
51303
|
} else {
|
|
51093
51304
|
peg$currPos = s0;
|
|
51094
51305
|
s0 = peg$FAILED;
|
|
@@ -51108,13 +51319,49 @@ function peg$parse(input, options) {
|
|
|
51108
51319
|
}
|
|
51109
51320
|
return s0;
|
|
51110
51321
|
}
|
|
51322
|
+
function peg$parseOptMacroName() {
|
|
51323
|
+
let s0, s12, s2, s3, s4;
|
|
51324
|
+
s0 = peg$currPos;
|
|
51325
|
+
s12 = peg$parseAtom();
|
|
51326
|
+
if (s12 !== peg$FAILED) {
|
|
51327
|
+
s2 = peg$parse_();
|
|
51328
|
+
if (input.charCodeAt(peg$currPos) === 61) {
|
|
51329
|
+
s3 = peg$c3;
|
|
51330
|
+
peg$currPos++;
|
|
51331
|
+
} else {
|
|
51332
|
+
s3 = peg$FAILED;
|
|
51333
|
+
if (peg$silentFails === 0) {
|
|
51334
|
+
peg$fail(peg$e3);
|
|
51335
|
+
}
|
|
51336
|
+
}
|
|
51337
|
+
if (s3 !== peg$FAILED) {
|
|
51338
|
+
s4 = peg$parse_();
|
|
51339
|
+
peg$savedPos = s0;
|
|
51340
|
+
s0 = peg$f14();
|
|
51341
|
+
} else {
|
|
51342
|
+
peg$currPos = s0;
|
|
51343
|
+
s0 = peg$FAILED;
|
|
51344
|
+
}
|
|
51345
|
+
} else {
|
|
51346
|
+
peg$currPos = s0;
|
|
51347
|
+
s0 = peg$FAILED;
|
|
51348
|
+
}
|
|
51349
|
+
if (s0 === peg$FAILED) {
|
|
51350
|
+
s0 = peg$currPos;
|
|
51351
|
+
s12 = "";
|
|
51352
|
+
peg$savedPos = s0;
|
|
51353
|
+
s12 = peg$f15();
|
|
51354
|
+
s0 = s12;
|
|
51355
|
+
}
|
|
51356
|
+
return s0;
|
|
51357
|
+
}
|
|
51111
51358
|
function peg$parseAttrType() {
|
|
51112
51359
|
let s0, s12;
|
|
51113
51360
|
s0 = peg$currPos;
|
|
51114
51361
|
s12 = peg$parseGraphKw();
|
|
51115
51362
|
if (s12 !== peg$FAILED) {
|
|
51116
51363
|
peg$savedPos = s0;
|
|
51117
|
-
s12 = peg$
|
|
51364
|
+
s12 = peg$f16();
|
|
51118
51365
|
}
|
|
51119
51366
|
s0 = s12;
|
|
51120
51367
|
if (s0 === peg$FAILED) {
|
|
@@ -51122,7 +51369,7 @@ function peg$parse(input, options) {
|
|
|
51122
51369
|
s12 = peg$parseNodeKw();
|
|
51123
51370
|
if (s12 !== peg$FAILED) {
|
|
51124
51371
|
peg$savedPos = s0;
|
|
51125
|
-
s12 = peg$
|
|
51372
|
+
s12 = peg$f17();
|
|
51126
51373
|
}
|
|
51127
51374
|
s0 = s12;
|
|
51128
51375
|
if (s0 === peg$FAILED) {
|
|
@@ -51130,7 +51377,7 @@ function peg$parse(input, options) {
|
|
|
51130
51377
|
s12 = peg$parseEdgeKw();
|
|
51131
51378
|
if (s12 !== peg$FAILED) {
|
|
51132
51379
|
peg$savedPos = s0;
|
|
51133
|
-
s12 = peg$
|
|
51380
|
+
s12 = peg$f18();
|
|
51134
51381
|
}
|
|
51135
51382
|
s0 = s12;
|
|
51136
51383
|
}
|
|
@@ -51142,12 +51389,12 @@ function peg$parse(input, options) {
|
|
|
51142
51389
|
s0 = peg$currPos;
|
|
51143
51390
|
s12 = peg$parse_();
|
|
51144
51391
|
if (input.charCodeAt(peg$currPos) === 91) {
|
|
51145
|
-
s2 = peg$
|
|
51392
|
+
s2 = peg$c4;
|
|
51146
51393
|
peg$currPos++;
|
|
51147
51394
|
} else {
|
|
51148
51395
|
s2 = peg$FAILED;
|
|
51149
51396
|
if (peg$silentFails === 0) {
|
|
51150
|
-
peg$fail(peg$
|
|
51397
|
+
peg$fail(peg$e4);
|
|
51151
51398
|
}
|
|
51152
51399
|
}
|
|
51153
51400
|
if (s2 !== peg$FAILED) {
|
|
@@ -51155,19 +51402,19 @@ function peg$parse(input, options) {
|
|
|
51155
51402
|
s4 = peg$parseAttrDefs();
|
|
51156
51403
|
s5 = peg$parse_();
|
|
51157
51404
|
if (input.charCodeAt(peg$currPos) === 93) {
|
|
51158
|
-
s6 = peg$
|
|
51405
|
+
s6 = peg$c5;
|
|
51159
51406
|
peg$currPos++;
|
|
51160
51407
|
} else {
|
|
51161
51408
|
s6 = peg$FAILED;
|
|
51162
51409
|
if (peg$silentFails === 0) {
|
|
51163
|
-
peg$fail(peg$
|
|
51410
|
+
peg$fail(peg$e5);
|
|
51164
51411
|
}
|
|
51165
51412
|
}
|
|
51166
51413
|
if (s6 !== peg$FAILED) {
|
|
51167
51414
|
s7 = peg$parseAttrList();
|
|
51168
51415
|
if (s7 !== peg$FAILED) {
|
|
51169
51416
|
peg$savedPos = s0;
|
|
51170
|
-
s0 = peg$
|
|
51417
|
+
s0 = peg$f19(s4, s7);
|
|
51171
51418
|
} else {
|
|
51172
51419
|
peg$currPos = s0;
|
|
51173
51420
|
s0 = peg$FAILED;
|
|
@@ -51189,7 +51436,7 @@ function peg$parse(input, options) {
|
|
|
51189
51436
|
s0 = peg$currPos;
|
|
51190
51437
|
s12 = "";
|
|
51191
51438
|
peg$savedPos = s0;
|
|
51192
|
-
s12 = peg$
|
|
51439
|
+
s12 = peg$f20();
|
|
51193
51440
|
s0 = s12;
|
|
51194
51441
|
}
|
|
51195
51442
|
return s0;
|
|
@@ -51209,7 +51456,7 @@ function peg$parse(input, options) {
|
|
|
51209
51456
|
} else {
|
|
51210
51457
|
s6 = peg$FAILED;
|
|
51211
51458
|
if (peg$silentFails === 0) {
|
|
51212
|
-
peg$fail(peg$
|
|
51459
|
+
peg$fail(peg$e6);
|
|
51213
51460
|
}
|
|
51214
51461
|
}
|
|
51215
51462
|
if (s6 !== peg$FAILED) {
|
|
@@ -51224,7 +51471,7 @@ function peg$parse(input, options) {
|
|
|
51224
51471
|
s5 = null;
|
|
51225
51472
|
}
|
|
51226
51473
|
peg$savedPos = s2;
|
|
51227
|
-
s2 = peg$
|
|
51474
|
+
s2 = peg$f21(s3);
|
|
51228
51475
|
} else {
|
|
51229
51476
|
peg$currPos = s2;
|
|
51230
51477
|
s2 = peg$FAILED;
|
|
@@ -51242,7 +51489,7 @@ function peg$parse(input, options) {
|
|
|
51242
51489
|
} else {
|
|
51243
51490
|
s6 = peg$FAILED;
|
|
51244
51491
|
if (peg$silentFails === 0) {
|
|
51245
|
-
peg$fail(peg$
|
|
51492
|
+
peg$fail(peg$e6);
|
|
51246
51493
|
}
|
|
51247
51494
|
}
|
|
51248
51495
|
if (s6 !== peg$FAILED) {
|
|
@@ -51257,14 +51504,14 @@ function peg$parse(input, options) {
|
|
|
51257
51504
|
s5 = null;
|
|
51258
51505
|
}
|
|
51259
51506
|
peg$savedPos = s2;
|
|
51260
|
-
s2 = peg$
|
|
51507
|
+
s2 = peg$f21(s3);
|
|
51261
51508
|
} else {
|
|
51262
51509
|
peg$currPos = s2;
|
|
51263
51510
|
s2 = peg$FAILED;
|
|
51264
51511
|
}
|
|
51265
51512
|
}
|
|
51266
51513
|
peg$savedPos = s0;
|
|
51267
|
-
s12 = peg$
|
|
51514
|
+
s12 = peg$f22(s12);
|
|
51268
51515
|
s0 = s12;
|
|
51269
51516
|
return s0;
|
|
51270
51517
|
}
|
|
@@ -51275,12 +51522,12 @@ function peg$parse(input, options) {
|
|
|
51275
51522
|
if (s12 !== peg$FAILED) {
|
|
51276
51523
|
s2 = peg$parse_();
|
|
51277
51524
|
if (input.charCodeAt(peg$currPos) === 61) {
|
|
51278
|
-
s3 = peg$
|
|
51525
|
+
s3 = peg$c3;
|
|
51279
51526
|
peg$currPos++;
|
|
51280
51527
|
} else {
|
|
51281
51528
|
s3 = peg$FAILED;
|
|
51282
51529
|
if (peg$silentFails === 0) {
|
|
51283
|
-
peg$fail(peg$
|
|
51530
|
+
peg$fail(peg$e3);
|
|
51284
51531
|
}
|
|
51285
51532
|
}
|
|
51286
51533
|
if (s3 !== peg$FAILED) {
|
|
@@ -51288,7 +51535,7 @@ function peg$parse(input, options) {
|
|
|
51288
51535
|
s5 = peg$parseAtom();
|
|
51289
51536
|
if (s5 !== peg$FAILED) {
|
|
51290
51537
|
peg$savedPos = s0;
|
|
51291
|
-
s0 = peg$
|
|
51538
|
+
s0 = peg$f23(s12, s5);
|
|
51292
51539
|
} else {
|
|
51293
51540
|
peg$currPos = s0;
|
|
51294
51541
|
s0 = peg$FAILED;
|
|
@@ -51315,7 +51562,7 @@ function peg$parse(input, options) {
|
|
|
51315
51562
|
s5 = peg$parseAttrList();
|
|
51316
51563
|
if (s5 !== peg$FAILED) {
|
|
51317
51564
|
peg$savedPos = s0;
|
|
51318
|
-
s0 = peg$
|
|
51565
|
+
s0 = peg$f24(s12, s3, s5);
|
|
51319
51566
|
} else {
|
|
51320
51567
|
peg$currPos = s0;
|
|
51321
51568
|
s0 = peg$FAILED;
|
|
@@ -51336,7 +51583,7 @@ function peg$parse(input, options) {
|
|
|
51336
51583
|
s12 = peg$parseSubgraph();
|
|
51337
51584
|
if (s12 !== peg$FAILED) {
|
|
51338
51585
|
peg$savedPos = s0;
|
|
51339
|
-
s12 = peg$
|
|
51586
|
+
s12 = peg$f25(s12);
|
|
51340
51587
|
}
|
|
51341
51588
|
s0 = s12;
|
|
51342
51589
|
if (s0 === peg$FAILED) {
|
|
@@ -51344,7 +51591,7 @@ function peg$parse(input, options) {
|
|
|
51344
51591
|
s12 = peg$parseNode();
|
|
51345
51592
|
if (s12 !== peg$FAILED) {
|
|
51346
51593
|
peg$savedPos = s0;
|
|
51347
|
-
s12 = peg$
|
|
51594
|
+
s12 = peg$f26(s12);
|
|
51348
51595
|
}
|
|
51349
51596
|
s0 = s12;
|
|
51350
51597
|
}
|
|
@@ -51384,7 +51631,7 @@ function peg$parse(input, options) {
|
|
|
51384
51631
|
s9 = peg$parseAtom();
|
|
51385
51632
|
if (s9 !== peg$FAILED) {
|
|
51386
51633
|
peg$savedPos = s0;
|
|
51387
|
-
s0 = peg$
|
|
51634
|
+
s0 = peg$f27(s12, s5, s9);
|
|
51388
51635
|
} else {
|
|
51389
51636
|
peg$currPos = s0;
|
|
51390
51637
|
s0 = peg$FAILED;
|
|
@@ -51424,7 +51671,7 @@ function peg$parse(input, options) {
|
|
|
51424
51671
|
s5 = peg$parseAtom();
|
|
51425
51672
|
if (s5 !== peg$FAILED) {
|
|
51426
51673
|
peg$savedPos = s0;
|
|
51427
|
-
s0 = peg$
|
|
51674
|
+
s0 = peg$f28(s12, s5);
|
|
51428
51675
|
} else {
|
|
51429
51676
|
peg$currPos = s0;
|
|
51430
51677
|
s0 = peg$FAILED;
|
|
@@ -51442,7 +51689,7 @@ function peg$parse(input, options) {
|
|
|
51442
51689
|
s12 = peg$parseAtom();
|
|
51443
51690
|
if (s12 !== peg$FAILED) {
|
|
51444
51691
|
peg$savedPos = s0;
|
|
51445
|
-
s12 = peg$
|
|
51692
|
+
s12 = peg$f29(s12);
|
|
51446
51693
|
}
|
|
51447
51694
|
s0 = s12;
|
|
51448
51695
|
}
|
|
@@ -51461,7 +51708,7 @@ function peg$parse(input, options) {
|
|
|
51461
51708
|
s5 = peg$parseEdgeChain();
|
|
51462
51709
|
if (s5 !== peg$FAILED) {
|
|
51463
51710
|
peg$savedPos = s0;
|
|
51464
|
-
s0 = peg$
|
|
51711
|
+
s0 = peg$f30(s3, s5);
|
|
51465
51712
|
} else {
|
|
51466
51713
|
peg$currPos = s0;
|
|
51467
51714
|
s0 = peg$FAILED;
|
|
@@ -51478,7 +51725,7 @@ function peg$parse(input, options) {
|
|
|
51478
51725
|
s0 = peg$currPos;
|
|
51479
51726
|
s12 = "";
|
|
51480
51727
|
peg$savedPos = s0;
|
|
51481
|
-
s12 = peg$
|
|
51728
|
+
s12 = peg$f31();
|
|
51482
51729
|
s0 = s12;
|
|
51483
51730
|
}
|
|
51484
51731
|
return s0;
|
|
@@ -51549,7 +51796,7 @@ function peg$parse(input, options) {
|
|
|
51549
51796
|
}
|
|
51550
51797
|
if (s9 !== peg$FAILED) {
|
|
51551
51798
|
peg$savedPos = s0;
|
|
51552
|
-
s0 = peg$
|
|
51799
|
+
s0 = peg$f32(s3, s7);
|
|
51553
51800
|
} else {
|
|
51554
51801
|
peg$currPos = s0;
|
|
51555
51802
|
s0 = peg$FAILED;
|
|
@@ -51600,7 +51847,7 @@ function peg$parse(input, options) {
|
|
|
51600
51847
|
}
|
|
51601
51848
|
if (s7 !== peg$FAILED) {
|
|
51602
51849
|
peg$savedPos = s0;
|
|
51603
|
-
s0 = peg$
|
|
51850
|
+
s0 = peg$f33(s5);
|
|
51604
51851
|
} else {
|
|
51605
51852
|
peg$currPos = s0;
|
|
51606
51853
|
s0 = peg$FAILED;
|
|
@@ -51644,7 +51891,7 @@ function peg$parse(input, options) {
|
|
|
51644
51891
|
}
|
|
51645
51892
|
if (s5 !== peg$FAILED) {
|
|
51646
51893
|
peg$savedPos = s0;
|
|
51647
|
-
s0 = peg$
|
|
51894
|
+
s0 = peg$f34(s3);
|
|
51648
51895
|
} else {
|
|
51649
51896
|
peg$currPos = s0;
|
|
51650
51897
|
s0 = peg$FAILED;
|
|
@@ -51683,7 +51930,7 @@ function peg$parse(input, options) {
|
|
|
51683
51930
|
s7 = peg$parseQAtom();
|
|
51684
51931
|
if (s7 !== peg$FAILED) {
|
|
51685
51932
|
peg$savedPos = s3;
|
|
51686
|
-
s3 = peg$
|
|
51933
|
+
s3 = peg$f35(s12, s7);
|
|
51687
51934
|
} else {
|
|
51688
51935
|
peg$currPos = s3;
|
|
51689
51936
|
s3 = peg$FAILED;
|
|
@@ -51710,7 +51957,7 @@ function peg$parse(input, options) {
|
|
|
51710
51957
|
s7 = peg$parseQAtom();
|
|
51711
51958
|
if (s7 !== peg$FAILED) {
|
|
51712
51959
|
peg$savedPos = s3;
|
|
51713
|
-
s3 = peg$
|
|
51960
|
+
s3 = peg$f35(s12, s7);
|
|
51714
51961
|
} else {
|
|
51715
51962
|
peg$currPos = s3;
|
|
51716
51963
|
s3 = peg$FAILED;
|
|
@@ -51721,7 +51968,7 @@ function peg$parse(input, options) {
|
|
|
51721
51968
|
}
|
|
51722
51969
|
}
|
|
51723
51970
|
peg$savedPos = s0;
|
|
51724
|
-
s0 = peg$
|
|
51971
|
+
s0 = peg$f36(s12, s2);
|
|
51725
51972
|
} else {
|
|
51726
51973
|
peg$currPos = s0;
|
|
51727
51974
|
s0 = peg$FAILED;
|
|
@@ -51769,7 +52016,7 @@ function peg$parse(input, options) {
|
|
|
51769
52016
|
}
|
|
51770
52017
|
if (s3 !== peg$FAILED) {
|
|
51771
52018
|
peg$savedPos = s0;
|
|
51772
|
-
s0 = peg$
|
|
52019
|
+
s0 = peg$f37(s2);
|
|
51773
52020
|
} else {
|
|
51774
52021
|
peg$currPos = s0;
|
|
51775
52022
|
s0 = peg$FAILED;
|
|
@@ -51794,7 +52041,7 @@ function peg$parse(input, options) {
|
|
|
51794
52041
|
}
|
|
51795
52042
|
if (s12 !== peg$FAILED) {
|
|
51796
52043
|
peg$savedPos = s0;
|
|
51797
|
-
s12 = peg$
|
|
52044
|
+
s12 = peg$f38();
|
|
51798
52045
|
}
|
|
51799
52046
|
s0 = s12;
|
|
51800
52047
|
if (s0 === peg$FAILED) {
|
|
@@ -51810,7 +52057,7 @@ function peg$parse(input, options) {
|
|
|
51810
52057
|
}
|
|
51811
52058
|
if (s12 !== peg$FAILED) {
|
|
51812
52059
|
peg$savedPos = s0;
|
|
51813
|
-
s12 = peg$
|
|
52060
|
+
s12 = peg$f39();
|
|
51814
52061
|
}
|
|
51815
52062
|
s0 = s12;
|
|
51816
52063
|
if (s0 === peg$FAILED) {
|
|
@@ -51836,7 +52083,7 @@ function peg$parse(input, options) {
|
|
|
51836
52083
|
}
|
|
51837
52084
|
if (s2 !== peg$FAILED) {
|
|
51838
52085
|
peg$savedPos = s0;
|
|
51839
|
-
s0 = peg$
|
|
52086
|
+
s0 = peg$f40(s2);
|
|
51840
52087
|
} else {
|
|
51841
52088
|
peg$currPos = s0;
|
|
51842
52089
|
s0 = peg$FAILED;
|
|
@@ -51885,7 +52132,7 @@ function peg$parse(input, options) {
|
|
|
51885
52132
|
}
|
|
51886
52133
|
if (s3 !== peg$FAILED) {
|
|
51887
52134
|
peg$savedPos = s0;
|
|
51888
|
-
s0 = peg$
|
|
52135
|
+
s0 = peg$f41(s2);
|
|
51889
52136
|
} else {
|
|
51890
52137
|
peg$currPos = s0;
|
|
51891
52138
|
s0 = peg$FAILED;
|
|
@@ -51906,7 +52153,7 @@ function peg$parse(input, options) {
|
|
|
51906
52153
|
s2 = peg$parseHtmlChar();
|
|
51907
52154
|
}
|
|
51908
52155
|
peg$savedPos = s0;
|
|
51909
|
-
s12 = peg$
|
|
52156
|
+
s12 = peg$f42(s12);
|
|
51910
52157
|
s0 = s12;
|
|
51911
52158
|
return s0;
|
|
51912
52159
|
}
|
|
@@ -51936,7 +52183,7 @@ function peg$parse(input, options) {
|
|
|
51936
52183
|
}
|
|
51937
52184
|
if (s3 !== peg$FAILED) {
|
|
51938
52185
|
peg$savedPos = s0;
|
|
51939
|
-
s0 = peg$
|
|
52186
|
+
s0 = peg$f43(s12, s2);
|
|
51940
52187
|
} else {
|
|
51941
52188
|
peg$currPos = s0;
|
|
51942
52189
|
s0 = peg$FAILED;
|
|
@@ -51981,7 +52228,7 @@ function peg$parse(input, options) {
|
|
|
51981
52228
|
s2 = peg$parseName();
|
|
51982
52229
|
if (s2 !== peg$FAILED) {
|
|
51983
52230
|
peg$savedPos = s0;
|
|
51984
|
-
s0 = peg$
|
|
52231
|
+
s0 = peg$f44(s2);
|
|
51985
52232
|
} else {
|
|
51986
52233
|
peg$currPos = s0;
|
|
51987
52234
|
s0 = peg$FAILED;
|
|
@@ -52029,7 +52276,7 @@ function peg$parse(input, options) {
|
|
|
52029
52276
|
}
|
|
52030
52277
|
}
|
|
52031
52278
|
peg$savedPos = s0;
|
|
52032
|
-
s0 = peg$
|
|
52279
|
+
s0 = peg$f45(s12, s2);
|
|
52033
52280
|
} else {
|
|
52034
52281
|
peg$currPos = s0;
|
|
52035
52282
|
s0 = peg$FAILED;
|
|
@@ -52179,70 +52426,7 @@ function peg$parse(input, options) {
|
|
|
52179
52426
|
}
|
|
52180
52427
|
}
|
|
52181
52428
|
if (s3 !== peg$FAILED) {
|
|
52182
|
-
|
|
52183
|
-
s5 = input.charAt(peg$currPos);
|
|
52184
|
-
if (peg$r6.test(s5)) {
|
|
52185
|
-
peg$currPos++;
|
|
52186
|
-
} else {
|
|
52187
|
-
s5 = peg$FAILED;
|
|
52188
|
-
if (peg$silentFails === 0) {
|
|
52189
|
-
peg$fail(peg$e26);
|
|
52190
|
-
}
|
|
52191
|
-
}
|
|
52192
|
-
if (s5 !== peg$FAILED) {
|
|
52193
|
-
s6 = input.charAt(peg$currPos);
|
|
52194
|
-
if (peg$r7.test(s6)) {
|
|
52195
|
-
peg$currPos++;
|
|
52196
|
-
} else {
|
|
52197
|
-
s6 = peg$FAILED;
|
|
52198
|
-
if (peg$silentFails === 0) {
|
|
52199
|
-
peg$fail(peg$e27);
|
|
52200
|
-
}
|
|
52201
|
-
}
|
|
52202
|
-
if (s6 === peg$FAILED) {
|
|
52203
|
-
s6 = null;
|
|
52204
|
-
}
|
|
52205
|
-
s7 = [];
|
|
52206
|
-
s8 = input.charAt(peg$currPos);
|
|
52207
|
-
if (peg$r5.test(s8)) {
|
|
52208
|
-
peg$currPos++;
|
|
52209
|
-
} else {
|
|
52210
|
-
s8 = peg$FAILED;
|
|
52211
|
-
if (peg$silentFails === 0) {
|
|
52212
|
-
peg$fail(peg$e24);
|
|
52213
|
-
}
|
|
52214
|
-
}
|
|
52215
|
-
if (s8 !== peg$FAILED) {
|
|
52216
|
-
while (s8 !== peg$FAILED) {
|
|
52217
|
-
s7.push(s8);
|
|
52218
|
-
s8 = input.charAt(peg$currPos);
|
|
52219
|
-
if (peg$r5.test(s8)) {
|
|
52220
|
-
peg$currPos++;
|
|
52221
|
-
} else {
|
|
52222
|
-
s8 = peg$FAILED;
|
|
52223
|
-
if (peg$silentFails === 0) {
|
|
52224
|
-
peg$fail(peg$e24);
|
|
52225
|
-
}
|
|
52226
|
-
}
|
|
52227
|
-
}
|
|
52228
|
-
} else {
|
|
52229
|
-
s7 = peg$FAILED;
|
|
52230
|
-
}
|
|
52231
|
-
if (s7 !== peg$FAILED) {
|
|
52232
|
-
s5 = [s5, s6, s7];
|
|
52233
|
-
s4 = s5;
|
|
52234
|
-
} else {
|
|
52235
|
-
peg$currPos = s4;
|
|
52236
|
-
s4 = peg$FAILED;
|
|
52237
|
-
}
|
|
52238
|
-
} else {
|
|
52239
|
-
peg$currPos = s4;
|
|
52240
|
-
s4 = peg$FAILED;
|
|
52241
|
-
}
|
|
52242
|
-
if (s4 === peg$FAILED) {
|
|
52243
|
-
s4 = null;
|
|
52244
|
-
}
|
|
52245
|
-
s2 = [s2, s3, s4];
|
|
52429
|
+
s2 = [s2, s3];
|
|
52246
52430
|
s12 = s2;
|
|
52247
52431
|
} else {
|
|
52248
52432
|
peg$currPos = s12;
|
|
@@ -52250,7 +52434,7 @@ function peg$parse(input, options) {
|
|
|
52250
52434
|
}
|
|
52251
52435
|
if (s12 !== peg$FAILED) {
|
|
52252
52436
|
peg$savedPos = s0;
|
|
52253
|
-
s12 = peg$
|
|
52437
|
+
s12 = peg$f46(s12);
|
|
52254
52438
|
}
|
|
52255
52439
|
s0 = s12;
|
|
52256
52440
|
return s0;
|
|
@@ -52259,62 +52443,62 @@ function peg$parse(input, options) {
|
|
|
52259
52443
|
let s0, s12, s2, s3, s4, s5, s6, s7, s8;
|
|
52260
52444
|
s0 = peg$currPos;
|
|
52261
52445
|
s12 = input.charAt(peg$currPos);
|
|
52262
|
-
if (peg$
|
|
52446
|
+
if (peg$r6.test(s12)) {
|
|
52263
52447
|
peg$currPos++;
|
|
52264
52448
|
} else {
|
|
52265
52449
|
s12 = peg$FAILED;
|
|
52266
52450
|
if (peg$silentFails === 0) {
|
|
52267
|
-
peg$fail(peg$
|
|
52451
|
+
peg$fail(peg$e26);
|
|
52268
52452
|
}
|
|
52269
52453
|
}
|
|
52270
52454
|
if (s12 !== peg$FAILED) {
|
|
52271
52455
|
s2 = input.charAt(peg$currPos);
|
|
52272
|
-
if (peg$
|
|
52456
|
+
if (peg$r7.test(s2)) {
|
|
52273
52457
|
peg$currPos++;
|
|
52274
52458
|
} else {
|
|
52275
52459
|
s2 = peg$FAILED;
|
|
52276
52460
|
if (peg$silentFails === 0) {
|
|
52277
|
-
peg$fail(peg$
|
|
52461
|
+
peg$fail(peg$e27);
|
|
52278
52462
|
}
|
|
52279
52463
|
}
|
|
52280
52464
|
if (s2 !== peg$FAILED) {
|
|
52281
52465
|
s3 = input.charAt(peg$currPos);
|
|
52282
|
-
if (peg$
|
|
52466
|
+
if (peg$r8.test(s3)) {
|
|
52283
52467
|
peg$currPos++;
|
|
52284
52468
|
} else {
|
|
52285
52469
|
s3 = peg$FAILED;
|
|
52286
52470
|
if (peg$silentFails === 0) {
|
|
52287
|
-
peg$fail(peg$
|
|
52471
|
+
peg$fail(peg$e28);
|
|
52288
52472
|
}
|
|
52289
52473
|
}
|
|
52290
52474
|
if (s3 !== peg$FAILED) {
|
|
52291
52475
|
s4 = input.charAt(peg$currPos);
|
|
52292
|
-
if (peg$
|
|
52476
|
+
if (peg$r9.test(s4)) {
|
|
52293
52477
|
peg$currPos++;
|
|
52294
52478
|
} else {
|
|
52295
52479
|
s4 = peg$FAILED;
|
|
52296
52480
|
if (peg$silentFails === 0) {
|
|
52297
|
-
peg$fail(peg$
|
|
52481
|
+
peg$fail(peg$e29);
|
|
52298
52482
|
}
|
|
52299
52483
|
}
|
|
52300
52484
|
if (s4 !== peg$FAILED) {
|
|
52301
52485
|
s5 = input.charAt(peg$currPos);
|
|
52302
|
-
if (peg$
|
|
52486
|
+
if (peg$r10.test(s5)) {
|
|
52303
52487
|
peg$currPos++;
|
|
52304
52488
|
} else {
|
|
52305
52489
|
s5 = peg$FAILED;
|
|
52306
52490
|
if (peg$silentFails === 0) {
|
|
52307
|
-
peg$fail(peg$
|
|
52491
|
+
peg$fail(peg$e30);
|
|
52308
52492
|
}
|
|
52309
52493
|
}
|
|
52310
52494
|
if (s5 !== peg$FAILED) {
|
|
52311
52495
|
s6 = input.charAt(peg$currPos);
|
|
52312
|
-
if (peg$
|
|
52496
|
+
if (peg$r7.test(s6)) {
|
|
52313
52497
|
peg$currPos++;
|
|
52314
52498
|
} else {
|
|
52315
52499
|
s6 = peg$FAILED;
|
|
52316
52500
|
if (peg$silentFails === 0) {
|
|
52317
|
-
peg$fail(peg$
|
|
52501
|
+
peg$fail(peg$e27);
|
|
52318
52502
|
}
|
|
52319
52503
|
}
|
|
52320
52504
|
if (s6 !== peg$FAILED) {
|
|
@@ -52365,52 +52549,52 @@ function peg$parse(input, options) {
|
|
|
52365
52549
|
let s0, s12, s2, s3, s4, s5, s6, s7;
|
|
52366
52550
|
s0 = peg$currPos;
|
|
52367
52551
|
s12 = input.charAt(peg$currPos);
|
|
52368
|
-
if (peg$
|
|
52552
|
+
if (peg$r11.test(s12)) {
|
|
52369
52553
|
peg$currPos++;
|
|
52370
52554
|
} else {
|
|
52371
52555
|
s12 = peg$FAILED;
|
|
52372
52556
|
if (peg$silentFails === 0) {
|
|
52373
|
-
peg$fail(peg$
|
|
52557
|
+
peg$fail(peg$e31);
|
|
52374
52558
|
}
|
|
52375
52559
|
}
|
|
52376
52560
|
if (s12 !== peg$FAILED) {
|
|
52377
52561
|
s2 = input.charAt(peg$currPos);
|
|
52378
|
-
if (peg$
|
|
52562
|
+
if (peg$r8.test(s2)) {
|
|
52379
52563
|
peg$currPos++;
|
|
52380
52564
|
} else {
|
|
52381
52565
|
s2 = peg$FAILED;
|
|
52382
52566
|
if (peg$silentFails === 0) {
|
|
52383
|
-
peg$fail(peg$
|
|
52567
|
+
peg$fail(peg$e28);
|
|
52384
52568
|
}
|
|
52385
52569
|
}
|
|
52386
52570
|
if (s2 !== peg$FAILED) {
|
|
52387
52571
|
s3 = input.charAt(peg$currPos);
|
|
52388
|
-
if (peg$
|
|
52572
|
+
if (peg$r12.test(s3)) {
|
|
52389
52573
|
peg$currPos++;
|
|
52390
52574
|
} else {
|
|
52391
52575
|
s3 = peg$FAILED;
|
|
52392
52576
|
if (peg$silentFails === 0) {
|
|
52393
|
-
peg$fail(peg$
|
|
52577
|
+
peg$fail(peg$e32);
|
|
52394
52578
|
}
|
|
52395
52579
|
}
|
|
52396
52580
|
if (s3 !== peg$FAILED) {
|
|
52397
52581
|
s4 = input.charAt(peg$currPos);
|
|
52398
|
-
if (peg$
|
|
52582
|
+
if (peg$r13.test(s4)) {
|
|
52399
52583
|
peg$currPos++;
|
|
52400
52584
|
} else {
|
|
52401
52585
|
s4 = peg$FAILED;
|
|
52402
52586
|
if (peg$silentFails === 0) {
|
|
52403
|
-
peg$fail(peg$
|
|
52587
|
+
peg$fail(peg$e33);
|
|
52404
52588
|
}
|
|
52405
52589
|
}
|
|
52406
52590
|
if (s4 !== peg$FAILED) {
|
|
52407
52591
|
s5 = input.charAt(peg$currPos);
|
|
52408
|
-
if (peg$
|
|
52592
|
+
if (peg$r14.test(s5)) {
|
|
52409
52593
|
peg$currPos++;
|
|
52410
52594
|
} else {
|
|
52411
52595
|
s5 = peg$FAILED;
|
|
52412
52596
|
if (peg$silentFails === 0) {
|
|
52413
|
-
peg$fail(peg$
|
|
52597
|
+
peg$fail(peg$e34);
|
|
52414
52598
|
}
|
|
52415
52599
|
}
|
|
52416
52600
|
if (s5 !== peg$FAILED) {
|
|
@@ -52457,72 +52641,72 @@ function peg$parse(input, options) {
|
|
|
52457
52641
|
let s0, s12, s2, s3, s4, s5, s6, s7, s8, s9;
|
|
52458
52642
|
s0 = peg$currPos;
|
|
52459
52643
|
s12 = input.charAt(peg$currPos);
|
|
52460
|
-
if (peg$
|
|
52644
|
+
if (peg$r15.test(s12)) {
|
|
52461
52645
|
peg$currPos++;
|
|
52462
52646
|
} else {
|
|
52463
52647
|
s12 = peg$FAILED;
|
|
52464
52648
|
if (peg$silentFails === 0) {
|
|
52465
|
-
peg$fail(peg$
|
|
52649
|
+
peg$fail(peg$e35);
|
|
52466
52650
|
}
|
|
52467
52651
|
}
|
|
52468
52652
|
if (s12 !== peg$FAILED) {
|
|
52469
52653
|
s2 = input.charAt(peg$currPos);
|
|
52470
|
-
if (peg$
|
|
52654
|
+
if (peg$r9.test(s2)) {
|
|
52471
52655
|
peg$currPos++;
|
|
52472
52656
|
} else {
|
|
52473
52657
|
s2 = peg$FAILED;
|
|
52474
52658
|
if (peg$silentFails === 0) {
|
|
52475
|
-
peg$fail(peg$
|
|
52659
|
+
peg$fail(peg$e29);
|
|
52476
52660
|
}
|
|
52477
52661
|
}
|
|
52478
52662
|
if (s2 !== peg$FAILED) {
|
|
52479
52663
|
s3 = input.charAt(peg$currPos);
|
|
52480
|
-
if (peg$
|
|
52664
|
+
if (peg$r11.test(s3)) {
|
|
52481
52665
|
peg$currPos++;
|
|
52482
52666
|
} else {
|
|
52483
52667
|
s3 = peg$FAILED;
|
|
52484
52668
|
if (peg$silentFails === 0) {
|
|
52485
|
-
peg$fail(peg$
|
|
52669
|
+
peg$fail(peg$e31);
|
|
52486
52670
|
}
|
|
52487
52671
|
}
|
|
52488
52672
|
if (s3 !== peg$FAILED) {
|
|
52489
52673
|
s4 = input.charAt(peg$currPos);
|
|
52490
|
-
if (peg$
|
|
52674
|
+
if (peg$r8.test(s4)) {
|
|
52491
52675
|
peg$currPos++;
|
|
52492
52676
|
} else {
|
|
52493
52677
|
s4 = peg$FAILED;
|
|
52494
52678
|
if (peg$silentFails === 0) {
|
|
52495
|
-
peg$fail(peg$
|
|
52679
|
+
peg$fail(peg$e28);
|
|
52496
52680
|
}
|
|
52497
52681
|
}
|
|
52498
52682
|
if (s4 !== peg$FAILED) {
|
|
52499
52683
|
s5 = input.charAt(peg$currPos);
|
|
52500
|
-
if (peg$
|
|
52684
|
+
if (peg$r12.test(s5)) {
|
|
52501
52685
|
peg$currPos++;
|
|
52502
52686
|
} else {
|
|
52503
52687
|
s5 = peg$FAILED;
|
|
52504
52688
|
if (peg$silentFails === 0) {
|
|
52505
|
-
peg$fail(peg$
|
|
52689
|
+
peg$fail(peg$e32);
|
|
52506
52690
|
}
|
|
52507
52691
|
}
|
|
52508
52692
|
if (s5 !== peg$FAILED) {
|
|
52509
52693
|
s6 = input.charAt(peg$currPos);
|
|
52510
|
-
if (peg$
|
|
52694
|
+
if (peg$r13.test(s6)) {
|
|
52511
52695
|
peg$currPos++;
|
|
52512
52696
|
} else {
|
|
52513
52697
|
s6 = peg$FAILED;
|
|
52514
52698
|
if (peg$silentFails === 0) {
|
|
52515
|
-
peg$fail(peg$
|
|
52699
|
+
peg$fail(peg$e33);
|
|
52516
52700
|
}
|
|
52517
52701
|
}
|
|
52518
52702
|
if (s6 !== peg$FAILED) {
|
|
52519
52703
|
s7 = input.charAt(peg$currPos);
|
|
52520
|
-
if (peg$
|
|
52704
|
+
if (peg$r14.test(s7)) {
|
|
52521
52705
|
peg$currPos++;
|
|
52522
52706
|
} else {
|
|
52523
52707
|
s7 = peg$FAILED;
|
|
52524
52708
|
if (peg$silentFails === 0) {
|
|
52525
|
-
peg$fail(peg$
|
|
52709
|
+
peg$fail(peg$e34);
|
|
52526
52710
|
}
|
|
52527
52711
|
}
|
|
52528
52712
|
if (s7 !== peg$FAILED) {
|
|
@@ -52577,42 +52761,42 @@ function peg$parse(input, options) {
|
|
|
52577
52761
|
let s0, s12, s2, s3, s4, s5, s6;
|
|
52578
52762
|
s0 = peg$currPos;
|
|
52579
52763
|
s12 = input.charAt(peg$currPos);
|
|
52580
|
-
if (peg$
|
|
52764
|
+
if (peg$r16.test(s12)) {
|
|
52581
52765
|
peg$currPos++;
|
|
52582
52766
|
} else {
|
|
52583
52767
|
s12 = peg$FAILED;
|
|
52584
52768
|
if (peg$silentFails === 0) {
|
|
52585
|
-
peg$fail(peg$
|
|
52769
|
+
peg$fail(peg$e36);
|
|
52586
52770
|
}
|
|
52587
52771
|
}
|
|
52588
52772
|
if (s12 !== peg$FAILED) {
|
|
52589
52773
|
s2 = input.charAt(peg$currPos);
|
|
52590
|
-
if (peg$
|
|
52774
|
+
if (peg$r17.test(s2)) {
|
|
52591
52775
|
peg$currPos++;
|
|
52592
52776
|
} else {
|
|
52593
52777
|
s2 = peg$FAILED;
|
|
52594
52778
|
if (peg$silentFails === 0) {
|
|
52595
|
-
peg$fail(peg$
|
|
52779
|
+
peg$fail(peg$e37);
|
|
52596
52780
|
}
|
|
52597
52781
|
}
|
|
52598
52782
|
if (s2 !== peg$FAILED) {
|
|
52599
52783
|
s3 = input.charAt(peg$currPos);
|
|
52600
|
-
if (peg$
|
|
52784
|
+
if (peg$r15.test(s3)) {
|
|
52601
52785
|
peg$currPos++;
|
|
52602
52786
|
} else {
|
|
52603
52787
|
s3 = peg$FAILED;
|
|
52604
52788
|
if (peg$silentFails === 0) {
|
|
52605
|
-
peg$fail(peg$
|
|
52789
|
+
peg$fail(peg$e35);
|
|
52606
52790
|
}
|
|
52607
52791
|
}
|
|
52608
52792
|
if (s3 !== peg$FAILED) {
|
|
52609
52793
|
s4 = input.charAt(peg$currPos);
|
|
52610
|
-
if (peg$
|
|
52794
|
+
if (peg$r18.test(s4)) {
|
|
52611
52795
|
peg$currPos++;
|
|
52612
52796
|
} else {
|
|
52613
52797
|
s4 = peg$FAILED;
|
|
52614
52798
|
if (peg$silentFails === 0) {
|
|
52615
|
-
peg$fail(peg$
|
|
52799
|
+
peg$fail(peg$e38);
|
|
52616
52800
|
}
|
|
52617
52801
|
}
|
|
52618
52802
|
if (s4 !== peg$FAILED) {
|
|
@@ -52655,42 +52839,42 @@ function peg$parse(input, options) {
|
|
|
52655
52839
|
let s0, s12, s2, s3, s4, s5, s6;
|
|
52656
52840
|
s0 = peg$currPos;
|
|
52657
52841
|
s12 = input.charAt(peg$currPos);
|
|
52658
|
-
if (peg$
|
|
52842
|
+
if (peg$r18.test(s12)) {
|
|
52659
52843
|
peg$currPos++;
|
|
52660
52844
|
} else {
|
|
52661
52845
|
s12 = peg$FAILED;
|
|
52662
52846
|
if (peg$silentFails === 0) {
|
|
52663
|
-
peg$fail(peg$
|
|
52847
|
+
peg$fail(peg$e38);
|
|
52664
52848
|
}
|
|
52665
52849
|
}
|
|
52666
52850
|
if (s12 !== peg$FAILED) {
|
|
52667
52851
|
s2 = input.charAt(peg$currPos);
|
|
52668
|
-
if (peg$
|
|
52852
|
+
if (peg$r15.test(s2)) {
|
|
52669
52853
|
peg$currPos++;
|
|
52670
52854
|
} else {
|
|
52671
52855
|
s2 = peg$FAILED;
|
|
52672
52856
|
if (peg$silentFails === 0) {
|
|
52673
|
-
peg$fail(peg$
|
|
52857
|
+
peg$fail(peg$e35);
|
|
52674
52858
|
}
|
|
52675
52859
|
}
|
|
52676
52860
|
if (s2 !== peg$FAILED) {
|
|
52677
52861
|
s3 = input.charAt(peg$currPos);
|
|
52678
|
-
if (peg$
|
|
52862
|
+
if (peg$r11.test(s3)) {
|
|
52679
52863
|
peg$currPos++;
|
|
52680
52864
|
} else {
|
|
52681
52865
|
s3 = peg$FAILED;
|
|
52682
52866
|
if (peg$silentFails === 0) {
|
|
52683
|
-
peg$fail(peg$
|
|
52867
|
+
peg$fail(peg$e31);
|
|
52684
52868
|
}
|
|
52685
52869
|
}
|
|
52686
52870
|
if (s3 !== peg$FAILED) {
|
|
52687
52871
|
s4 = input.charAt(peg$currPos);
|
|
52688
|
-
if (peg$
|
|
52872
|
+
if (peg$r18.test(s4)) {
|
|
52689
52873
|
peg$currPos++;
|
|
52690
52874
|
} else {
|
|
52691
52875
|
s4 = peg$FAILED;
|
|
52692
52876
|
if (peg$silentFails === 0) {
|
|
52693
|
-
peg$fail(peg$
|
|
52877
|
+
peg$fail(peg$e38);
|
|
52694
52878
|
}
|
|
52695
52879
|
}
|
|
52696
52880
|
if (s4 !== peg$FAILED) {
|
|
@@ -52733,82 +52917,82 @@ function peg$parse(input, options) {
|
|
|
52733
52917
|
let s0, s12, s2, s3, s4, s5, s6, s7, s8, s9, s10;
|
|
52734
52918
|
s0 = peg$currPos;
|
|
52735
52919
|
s12 = input.charAt(peg$currPos);
|
|
52736
|
-
if (peg$
|
|
52920
|
+
if (peg$r6.test(s12)) {
|
|
52737
52921
|
peg$currPos++;
|
|
52738
52922
|
} else {
|
|
52739
52923
|
s12 = peg$FAILED;
|
|
52740
52924
|
if (peg$silentFails === 0) {
|
|
52741
|
-
peg$fail(peg$
|
|
52925
|
+
peg$fail(peg$e26);
|
|
52742
52926
|
}
|
|
52743
52927
|
}
|
|
52744
52928
|
if (s12 !== peg$FAILED) {
|
|
52745
52929
|
s2 = input.charAt(peg$currPos);
|
|
52746
|
-
if (peg$
|
|
52930
|
+
if (peg$r19.test(s2)) {
|
|
52747
52931
|
peg$currPos++;
|
|
52748
52932
|
} else {
|
|
52749
52933
|
s2 = peg$FAILED;
|
|
52750
52934
|
if (peg$silentFails === 0) {
|
|
52751
|
-
peg$fail(peg$
|
|
52935
|
+
peg$fail(peg$e39);
|
|
52752
52936
|
}
|
|
52753
52937
|
}
|
|
52754
52938
|
if (s2 !== peg$FAILED) {
|
|
52755
52939
|
s3 = input.charAt(peg$currPos);
|
|
52756
|
-
if (peg$
|
|
52940
|
+
if (peg$r20.test(s3)) {
|
|
52757
52941
|
peg$currPos++;
|
|
52758
52942
|
} else {
|
|
52759
52943
|
s3 = peg$FAILED;
|
|
52760
52944
|
if (peg$silentFails === 0) {
|
|
52761
|
-
peg$fail(peg$
|
|
52945
|
+
peg$fail(peg$e40);
|
|
52762
52946
|
}
|
|
52763
52947
|
}
|
|
52764
52948
|
if (s3 !== peg$FAILED) {
|
|
52765
52949
|
s4 = input.charAt(peg$currPos);
|
|
52766
|
-
if (peg$
|
|
52950
|
+
if (peg$r11.test(s4)) {
|
|
52767
52951
|
peg$currPos++;
|
|
52768
52952
|
} else {
|
|
52769
52953
|
s4 = peg$FAILED;
|
|
52770
52954
|
if (peg$silentFails === 0) {
|
|
52771
|
-
peg$fail(peg$
|
|
52955
|
+
peg$fail(peg$e31);
|
|
52772
52956
|
}
|
|
52773
52957
|
}
|
|
52774
52958
|
if (s4 !== peg$FAILED) {
|
|
52775
52959
|
s5 = input.charAt(peg$currPos);
|
|
52776
|
-
if (peg$
|
|
52960
|
+
if (peg$r8.test(s5)) {
|
|
52777
52961
|
peg$currPos++;
|
|
52778
52962
|
} else {
|
|
52779
52963
|
s5 = peg$FAILED;
|
|
52780
52964
|
if (peg$silentFails === 0) {
|
|
52781
|
-
peg$fail(peg$
|
|
52965
|
+
peg$fail(peg$e28);
|
|
52782
52966
|
}
|
|
52783
52967
|
}
|
|
52784
52968
|
if (s5 !== peg$FAILED) {
|
|
52785
52969
|
s6 = input.charAt(peg$currPos);
|
|
52786
|
-
if (peg$
|
|
52970
|
+
if (peg$r12.test(s6)) {
|
|
52787
52971
|
peg$currPos++;
|
|
52788
52972
|
} else {
|
|
52789
52973
|
s6 = peg$FAILED;
|
|
52790
52974
|
if (peg$silentFails === 0) {
|
|
52791
|
-
peg$fail(peg$
|
|
52975
|
+
peg$fail(peg$e32);
|
|
52792
52976
|
}
|
|
52793
52977
|
}
|
|
52794
52978
|
if (s6 !== peg$FAILED) {
|
|
52795
52979
|
s7 = input.charAt(peg$currPos);
|
|
52796
|
-
if (peg$
|
|
52980
|
+
if (peg$r13.test(s7)) {
|
|
52797
52981
|
peg$currPos++;
|
|
52798
52982
|
} else {
|
|
52799
52983
|
s7 = peg$FAILED;
|
|
52800
52984
|
if (peg$silentFails === 0) {
|
|
52801
|
-
peg$fail(peg$
|
|
52985
|
+
peg$fail(peg$e33);
|
|
52802
52986
|
}
|
|
52803
52987
|
}
|
|
52804
52988
|
if (s7 !== peg$FAILED) {
|
|
52805
52989
|
s8 = input.charAt(peg$currPos);
|
|
52806
|
-
if (peg$
|
|
52990
|
+
if (peg$r14.test(s8)) {
|
|
52807
52991
|
peg$currPos++;
|
|
52808
52992
|
} else {
|
|
52809
52993
|
s8 = peg$FAILED;
|
|
52810
52994
|
if (peg$silentFails === 0) {
|
|
52811
|
-
peg$fail(peg$
|
|
52995
|
+
peg$fail(peg$e34);
|
|
52812
52996
|
}
|
|
52813
52997
|
}
|
|
52814
52998
|
if (s8 !== peg$FAILED) {
|
|
@@ -52881,62 +53065,62 @@ function peg$parse(input, options) {
|
|
|
52881
53065
|
s0 = peg$currPos;
|
|
52882
53066
|
s12 = peg$currPos;
|
|
52883
53067
|
s2 = input.charAt(peg$currPos);
|
|
52884
|
-
if (peg$
|
|
53068
|
+
if (peg$r6.test(s2)) {
|
|
52885
53069
|
peg$currPos++;
|
|
52886
53070
|
} else {
|
|
52887
53071
|
s2 = peg$FAILED;
|
|
52888
53072
|
if (peg$silentFails === 0) {
|
|
52889
|
-
peg$fail(peg$
|
|
53073
|
+
peg$fail(peg$e26);
|
|
52890
53074
|
}
|
|
52891
53075
|
}
|
|
52892
53076
|
if (s2 !== peg$FAILED) {
|
|
52893
53077
|
s3 = input.charAt(peg$currPos);
|
|
52894
|
-
if (peg$
|
|
53078
|
+
if (peg$r7.test(s3)) {
|
|
52895
53079
|
peg$currPos++;
|
|
52896
53080
|
} else {
|
|
52897
53081
|
s3 = peg$FAILED;
|
|
52898
53082
|
if (peg$silentFails === 0) {
|
|
52899
|
-
peg$fail(peg$
|
|
53083
|
+
peg$fail(peg$e27);
|
|
52900
53084
|
}
|
|
52901
53085
|
}
|
|
52902
53086
|
if (s3 !== peg$FAILED) {
|
|
52903
53087
|
s4 = input.charAt(peg$currPos);
|
|
52904
|
-
if (peg$
|
|
53088
|
+
if (peg$r8.test(s4)) {
|
|
52905
53089
|
peg$currPos++;
|
|
52906
53090
|
} else {
|
|
52907
53091
|
s4 = peg$FAILED;
|
|
52908
53092
|
if (peg$silentFails === 0) {
|
|
52909
|
-
peg$fail(peg$
|
|
53093
|
+
peg$fail(peg$e28);
|
|
52910
53094
|
}
|
|
52911
53095
|
}
|
|
52912
53096
|
if (s4 !== peg$FAILED) {
|
|
52913
53097
|
s5 = input.charAt(peg$currPos);
|
|
52914
|
-
if (peg$
|
|
53098
|
+
if (peg$r9.test(s5)) {
|
|
52915
53099
|
peg$currPos++;
|
|
52916
53100
|
} else {
|
|
52917
53101
|
s5 = peg$FAILED;
|
|
52918
53102
|
if (peg$silentFails === 0) {
|
|
52919
|
-
peg$fail(peg$
|
|
53103
|
+
peg$fail(peg$e29);
|
|
52920
53104
|
}
|
|
52921
53105
|
}
|
|
52922
53106
|
if (s5 !== peg$FAILED) {
|
|
52923
53107
|
s6 = input.charAt(peg$currPos);
|
|
52924
|
-
if (peg$
|
|
53108
|
+
if (peg$r10.test(s6)) {
|
|
52925
53109
|
peg$currPos++;
|
|
52926
53110
|
} else {
|
|
52927
53111
|
s6 = peg$FAILED;
|
|
52928
53112
|
if (peg$silentFails === 0) {
|
|
52929
|
-
peg$fail(peg$
|
|
53113
|
+
peg$fail(peg$e30);
|
|
52930
53114
|
}
|
|
52931
53115
|
}
|
|
52932
53116
|
if (s6 !== peg$FAILED) {
|
|
52933
53117
|
s7 = input.charAt(peg$currPos);
|
|
52934
|
-
if (peg$
|
|
53118
|
+
if (peg$r7.test(s7)) {
|
|
52935
53119
|
peg$currPos++;
|
|
52936
53120
|
} else {
|
|
52937
53121
|
s7 = peg$FAILED;
|
|
52938
53122
|
if (peg$silentFails === 0) {
|
|
52939
|
-
peg$fail(peg$
|
|
53123
|
+
peg$fail(peg$e27);
|
|
52940
53124
|
}
|
|
52941
53125
|
}
|
|
52942
53126
|
if (s7 !== peg$FAILED) {
|
|
@@ -52969,72 +53153,72 @@ function peg$parse(input, options) {
|
|
|
52969
53153
|
if (s12 === peg$FAILED) {
|
|
52970
53154
|
s12 = peg$currPos;
|
|
52971
53155
|
s2 = input.charAt(peg$currPos);
|
|
52972
|
-
if (peg$
|
|
53156
|
+
if (peg$r15.test(s2)) {
|
|
52973
53157
|
peg$currPos++;
|
|
52974
53158
|
} else {
|
|
52975
53159
|
s2 = peg$FAILED;
|
|
52976
53160
|
if (peg$silentFails === 0) {
|
|
52977
|
-
peg$fail(peg$
|
|
53161
|
+
peg$fail(peg$e35);
|
|
52978
53162
|
}
|
|
52979
53163
|
}
|
|
52980
53164
|
if (s2 !== peg$FAILED) {
|
|
52981
53165
|
s3 = input.charAt(peg$currPos);
|
|
52982
|
-
if (peg$
|
|
53166
|
+
if (peg$r9.test(s3)) {
|
|
52983
53167
|
peg$currPos++;
|
|
52984
53168
|
} else {
|
|
52985
53169
|
s3 = peg$FAILED;
|
|
52986
53170
|
if (peg$silentFails === 0) {
|
|
52987
|
-
peg$fail(peg$
|
|
53171
|
+
peg$fail(peg$e29);
|
|
52988
53172
|
}
|
|
52989
53173
|
}
|
|
52990
53174
|
if (s3 !== peg$FAILED) {
|
|
52991
53175
|
s4 = input.charAt(peg$currPos);
|
|
52992
|
-
if (peg$
|
|
53176
|
+
if (peg$r11.test(s4)) {
|
|
52993
53177
|
peg$currPos++;
|
|
52994
53178
|
} else {
|
|
52995
53179
|
s4 = peg$FAILED;
|
|
52996
53180
|
if (peg$silentFails === 0) {
|
|
52997
|
-
peg$fail(peg$
|
|
53181
|
+
peg$fail(peg$e31);
|
|
52998
53182
|
}
|
|
52999
53183
|
}
|
|
53000
53184
|
if (s4 !== peg$FAILED) {
|
|
53001
53185
|
s5 = input.charAt(peg$currPos);
|
|
53002
|
-
if (peg$
|
|
53186
|
+
if (peg$r8.test(s5)) {
|
|
53003
53187
|
peg$currPos++;
|
|
53004
53188
|
} else {
|
|
53005
53189
|
s5 = peg$FAILED;
|
|
53006
53190
|
if (peg$silentFails === 0) {
|
|
53007
|
-
peg$fail(peg$
|
|
53191
|
+
peg$fail(peg$e28);
|
|
53008
53192
|
}
|
|
53009
53193
|
}
|
|
53010
53194
|
if (s5 !== peg$FAILED) {
|
|
53011
53195
|
s6 = input.charAt(peg$currPos);
|
|
53012
|
-
if (peg$
|
|
53196
|
+
if (peg$r12.test(s6)) {
|
|
53013
53197
|
peg$currPos++;
|
|
53014
53198
|
} else {
|
|
53015
53199
|
s6 = peg$FAILED;
|
|
53016
53200
|
if (peg$silentFails === 0) {
|
|
53017
|
-
peg$fail(peg$
|
|
53201
|
+
peg$fail(peg$e32);
|
|
53018
53202
|
}
|
|
53019
53203
|
}
|
|
53020
53204
|
if (s6 !== peg$FAILED) {
|
|
53021
53205
|
s7 = input.charAt(peg$currPos);
|
|
53022
|
-
if (peg$
|
|
53206
|
+
if (peg$r13.test(s7)) {
|
|
53023
53207
|
peg$currPos++;
|
|
53024
53208
|
} else {
|
|
53025
53209
|
s7 = peg$FAILED;
|
|
53026
53210
|
if (peg$silentFails === 0) {
|
|
53027
|
-
peg$fail(peg$
|
|
53211
|
+
peg$fail(peg$e33);
|
|
53028
53212
|
}
|
|
53029
53213
|
}
|
|
53030
53214
|
if (s7 !== peg$FAILED) {
|
|
53031
53215
|
s8 = input.charAt(peg$currPos);
|
|
53032
|
-
if (peg$
|
|
53216
|
+
if (peg$r14.test(s8)) {
|
|
53033
53217
|
peg$currPos++;
|
|
53034
53218
|
} else {
|
|
53035
53219
|
s8 = peg$FAILED;
|
|
53036
53220
|
if (peg$silentFails === 0) {
|
|
53037
|
-
peg$fail(peg$
|
|
53221
|
+
peg$fail(peg$e34);
|
|
53038
53222
|
}
|
|
53039
53223
|
}
|
|
53040
53224
|
if (s8 !== peg$FAILED) {
|
|
@@ -53071,52 +53255,52 @@ function peg$parse(input, options) {
|
|
|
53071
53255
|
if (s12 === peg$FAILED) {
|
|
53072
53256
|
s12 = peg$currPos;
|
|
53073
53257
|
s2 = input.charAt(peg$currPos);
|
|
53074
|
-
if (peg$
|
|
53258
|
+
if (peg$r11.test(s2)) {
|
|
53075
53259
|
peg$currPos++;
|
|
53076
53260
|
} else {
|
|
53077
53261
|
s2 = peg$FAILED;
|
|
53078
53262
|
if (peg$silentFails === 0) {
|
|
53079
|
-
peg$fail(peg$
|
|
53263
|
+
peg$fail(peg$e31);
|
|
53080
53264
|
}
|
|
53081
53265
|
}
|
|
53082
53266
|
if (s2 !== peg$FAILED) {
|
|
53083
53267
|
s3 = input.charAt(peg$currPos);
|
|
53084
|
-
if (peg$
|
|
53268
|
+
if (peg$r8.test(s3)) {
|
|
53085
53269
|
peg$currPos++;
|
|
53086
53270
|
} else {
|
|
53087
53271
|
s3 = peg$FAILED;
|
|
53088
53272
|
if (peg$silentFails === 0) {
|
|
53089
|
-
peg$fail(peg$
|
|
53273
|
+
peg$fail(peg$e28);
|
|
53090
53274
|
}
|
|
53091
53275
|
}
|
|
53092
53276
|
if (s3 !== peg$FAILED) {
|
|
53093
53277
|
s4 = input.charAt(peg$currPos);
|
|
53094
|
-
if (peg$
|
|
53278
|
+
if (peg$r12.test(s4)) {
|
|
53095
53279
|
peg$currPos++;
|
|
53096
53280
|
} else {
|
|
53097
53281
|
s4 = peg$FAILED;
|
|
53098
53282
|
if (peg$silentFails === 0) {
|
|
53099
|
-
peg$fail(peg$
|
|
53283
|
+
peg$fail(peg$e32);
|
|
53100
53284
|
}
|
|
53101
53285
|
}
|
|
53102
53286
|
if (s4 !== peg$FAILED) {
|
|
53103
53287
|
s5 = input.charAt(peg$currPos);
|
|
53104
|
-
if (peg$
|
|
53288
|
+
if (peg$r13.test(s5)) {
|
|
53105
53289
|
peg$currPos++;
|
|
53106
53290
|
} else {
|
|
53107
53291
|
s5 = peg$FAILED;
|
|
53108
53292
|
if (peg$silentFails === 0) {
|
|
53109
|
-
peg$fail(peg$
|
|
53293
|
+
peg$fail(peg$e33);
|
|
53110
53294
|
}
|
|
53111
53295
|
}
|
|
53112
53296
|
if (s5 !== peg$FAILED) {
|
|
53113
53297
|
s6 = input.charAt(peg$currPos);
|
|
53114
|
-
if (peg$
|
|
53298
|
+
if (peg$r14.test(s6)) {
|
|
53115
53299
|
peg$currPos++;
|
|
53116
53300
|
} else {
|
|
53117
53301
|
s6 = peg$FAILED;
|
|
53118
53302
|
if (peg$silentFails === 0) {
|
|
53119
|
-
peg$fail(peg$
|
|
53303
|
+
peg$fail(peg$e34);
|
|
53120
53304
|
}
|
|
53121
53305
|
}
|
|
53122
53306
|
if (s6 !== peg$FAILED) {
|
|
@@ -53145,42 +53329,42 @@ function peg$parse(input, options) {
|
|
|
53145
53329
|
if (s12 === peg$FAILED) {
|
|
53146
53330
|
s12 = peg$currPos;
|
|
53147
53331
|
s2 = input.charAt(peg$currPos);
|
|
53148
|
-
if (peg$
|
|
53332
|
+
if (peg$r16.test(s2)) {
|
|
53149
53333
|
peg$currPos++;
|
|
53150
53334
|
} else {
|
|
53151
53335
|
s2 = peg$FAILED;
|
|
53152
53336
|
if (peg$silentFails === 0) {
|
|
53153
|
-
peg$fail(peg$
|
|
53337
|
+
peg$fail(peg$e36);
|
|
53154
53338
|
}
|
|
53155
53339
|
}
|
|
53156
53340
|
if (s2 !== peg$FAILED) {
|
|
53157
53341
|
s3 = input.charAt(peg$currPos);
|
|
53158
|
-
if (peg$
|
|
53342
|
+
if (peg$r17.test(s3)) {
|
|
53159
53343
|
peg$currPos++;
|
|
53160
53344
|
} else {
|
|
53161
53345
|
s3 = peg$FAILED;
|
|
53162
53346
|
if (peg$silentFails === 0) {
|
|
53163
|
-
peg$fail(peg$
|
|
53347
|
+
peg$fail(peg$e37);
|
|
53164
53348
|
}
|
|
53165
53349
|
}
|
|
53166
53350
|
if (s3 !== peg$FAILED) {
|
|
53167
53351
|
s4 = input.charAt(peg$currPos);
|
|
53168
|
-
if (peg$
|
|
53352
|
+
if (peg$r15.test(s4)) {
|
|
53169
53353
|
peg$currPos++;
|
|
53170
53354
|
} else {
|
|
53171
53355
|
s4 = peg$FAILED;
|
|
53172
53356
|
if (peg$silentFails === 0) {
|
|
53173
|
-
peg$fail(peg$
|
|
53357
|
+
peg$fail(peg$e35);
|
|
53174
53358
|
}
|
|
53175
53359
|
}
|
|
53176
53360
|
if (s4 !== peg$FAILED) {
|
|
53177
53361
|
s5 = input.charAt(peg$currPos);
|
|
53178
|
-
if (peg$
|
|
53362
|
+
if (peg$r18.test(s5)) {
|
|
53179
53363
|
peg$currPos++;
|
|
53180
53364
|
} else {
|
|
53181
53365
|
s5 = peg$FAILED;
|
|
53182
53366
|
if (peg$silentFails === 0) {
|
|
53183
|
-
peg$fail(peg$
|
|
53367
|
+
peg$fail(peg$e38);
|
|
53184
53368
|
}
|
|
53185
53369
|
}
|
|
53186
53370
|
if (s5 !== peg$FAILED) {
|
|
@@ -53205,42 +53389,42 @@ function peg$parse(input, options) {
|
|
|
53205
53389
|
if (s12 === peg$FAILED) {
|
|
53206
53390
|
s12 = peg$currPos;
|
|
53207
53391
|
s2 = input.charAt(peg$currPos);
|
|
53208
|
-
if (peg$
|
|
53392
|
+
if (peg$r18.test(s2)) {
|
|
53209
53393
|
peg$currPos++;
|
|
53210
53394
|
} else {
|
|
53211
53395
|
s2 = peg$FAILED;
|
|
53212
53396
|
if (peg$silentFails === 0) {
|
|
53213
|
-
peg$fail(peg$
|
|
53397
|
+
peg$fail(peg$e38);
|
|
53214
53398
|
}
|
|
53215
53399
|
}
|
|
53216
53400
|
if (s2 !== peg$FAILED) {
|
|
53217
53401
|
s3 = input.charAt(peg$currPos);
|
|
53218
|
-
if (peg$
|
|
53402
|
+
if (peg$r15.test(s3)) {
|
|
53219
53403
|
peg$currPos++;
|
|
53220
53404
|
} else {
|
|
53221
53405
|
s3 = peg$FAILED;
|
|
53222
53406
|
if (peg$silentFails === 0) {
|
|
53223
|
-
peg$fail(peg$
|
|
53407
|
+
peg$fail(peg$e35);
|
|
53224
53408
|
}
|
|
53225
53409
|
}
|
|
53226
53410
|
if (s3 !== peg$FAILED) {
|
|
53227
53411
|
s4 = input.charAt(peg$currPos);
|
|
53228
|
-
if (peg$
|
|
53412
|
+
if (peg$r11.test(s4)) {
|
|
53229
53413
|
peg$currPos++;
|
|
53230
53414
|
} else {
|
|
53231
53415
|
s4 = peg$FAILED;
|
|
53232
53416
|
if (peg$silentFails === 0) {
|
|
53233
|
-
peg$fail(peg$
|
|
53417
|
+
peg$fail(peg$e31);
|
|
53234
53418
|
}
|
|
53235
53419
|
}
|
|
53236
53420
|
if (s4 !== peg$FAILED) {
|
|
53237
53421
|
s5 = input.charAt(peg$currPos);
|
|
53238
|
-
if (peg$
|
|
53422
|
+
if (peg$r18.test(s5)) {
|
|
53239
53423
|
peg$currPos++;
|
|
53240
53424
|
} else {
|
|
53241
53425
|
s5 = peg$FAILED;
|
|
53242
53426
|
if (peg$silentFails === 0) {
|
|
53243
|
-
peg$fail(peg$
|
|
53427
|
+
peg$fail(peg$e38);
|
|
53244
53428
|
}
|
|
53245
53429
|
}
|
|
53246
53430
|
if (s5 !== peg$FAILED) {
|
|
@@ -53265,82 +53449,82 @@ function peg$parse(input, options) {
|
|
|
53265
53449
|
if (s12 === peg$FAILED) {
|
|
53266
53450
|
s12 = peg$currPos;
|
|
53267
53451
|
s2 = input.charAt(peg$currPos);
|
|
53268
|
-
if (peg$
|
|
53452
|
+
if (peg$r6.test(s2)) {
|
|
53269
53453
|
peg$currPos++;
|
|
53270
53454
|
} else {
|
|
53271
53455
|
s2 = peg$FAILED;
|
|
53272
53456
|
if (peg$silentFails === 0) {
|
|
53273
|
-
peg$fail(peg$
|
|
53457
|
+
peg$fail(peg$e26);
|
|
53274
53458
|
}
|
|
53275
53459
|
}
|
|
53276
53460
|
if (s2 !== peg$FAILED) {
|
|
53277
53461
|
s3 = input.charAt(peg$currPos);
|
|
53278
|
-
if (peg$
|
|
53462
|
+
if (peg$r19.test(s3)) {
|
|
53279
53463
|
peg$currPos++;
|
|
53280
53464
|
} else {
|
|
53281
53465
|
s3 = peg$FAILED;
|
|
53282
53466
|
if (peg$silentFails === 0) {
|
|
53283
|
-
peg$fail(peg$
|
|
53467
|
+
peg$fail(peg$e39);
|
|
53284
53468
|
}
|
|
53285
53469
|
}
|
|
53286
53470
|
if (s3 !== peg$FAILED) {
|
|
53287
53471
|
s4 = input.charAt(peg$currPos);
|
|
53288
|
-
if (peg$
|
|
53472
|
+
if (peg$r20.test(s4)) {
|
|
53289
53473
|
peg$currPos++;
|
|
53290
53474
|
} else {
|
|
53291
53475
|
s4 = peg$FAILED;
|
|
53292
53476
|
if (peg$silentFails === 0) {
|
|
53293
|
-
peg$fail(peg$
|
|
53477
|
+
peg$fail(peg$e40);
|
|
53294
53478
|
}
|
|
53295
53479
|
}
|
|
53296
53480
|
if (s4 !== peg$FAILED) {
|
|
53297
53481
|
s5 = input.charAt(peg$currPos);
|
|
53298
|
-
if (peg$
|
|
53482
|
+
if (peg$r11.test(s5)) {
|
|
53299
53483
|
peg$currPos++;
|
|
53300
53484
|
} else {
|
|
53301
53485
|
s5 = peg$FAILED;
|
|
53302
53486
|
if (peg$silentFails === 0) {
|
|
53303
|
-
peg$fail(peg$
|
|
53487
|
+
peg$fail(peg$e31);
|
|
53304
53488
|
}
|
|
53305
53489
|
}
|
|
53306
53490
|
if (s5 !== peg$FAILED) {
|
|
53307
53491
|
s6 = input.charAt(peg$currPos);
|
|
53308
|
-
if (peg$
|
|
53492
|
+
if (peg$r8.test(s6)) {
|
|
53309
53493
|
peg$currPos++;
|
|
53310
53494
|
} else {
|
|
53311
53495
|
s6 = peg$FAILED;
|
|
53312
53496
|
if (peg$silentFails === 0) {
|
|
53313
|
-
peg$fail(peg$
|
|
53497
|
+
peg$fail(peg$e28);
|
|
53314
53498
|
}
|
|
53315
53499
|
}
|
|
53316
53500
|
if (s6 !== peg$FAILED) {
|
|
53317
53501
|
s7 = input.charAt(peg$currPos);
|
|
53318
|
-
if (peg$
|
|
53502
|
+
if (peg$r12.test(s7)) {
|
|
53319
53503
|
peg$currPos++;
|
|
53320
53504
|
} else {
|
|
53321
53505
|
s7 = peg$FAILED;
|
|
53322
53506
|
if (peg$silentFails === 0) {
|
|
53323
|
-
peg$fail(peg$
|
|
53507
|
+
peg$fail(peg$e32);
|
|
53324
53508
|
}
|
|
53325
53509
|
}
|
|
53326
53510
|
if (s7 !== peg$FAILED) {
|
|
53327
53511
|
s8 = input.charAt(peg$currPos);
|
|
53328
|
-
if (peg$
|
|
53512
|
+
if (peg$r13.test(s8)) {
|
|
53329
53513
|
peg$currPos++;
|
|
53330
53514
|
} else {
|
|
53331
53515
|
s8 = peg$FAILED;
|
|
53332
53516
|
if (peg$silentFails === 0) {
|
|
53333
|
-
peg$fail(peg$
|
|
53517
|
+
peg$fail(peg$e33);
|
|
53334
53518
|
}
|
|
53335
53519
|
}
|
|
53336
53520
|
if (s8 !== peg$FAILED) {
|
|
53337
53521
|
s9 = input.charAt(peg$currPos);
|
|
53338
|
-
if (peg$
|
|
53522
|
+
if (peg$r14.test(s9)) {
|
|
53339
53523
|
peg$currPos++;
|
|
53340
53524
|
} else {
|
|
53341
53525
|
s9 = peg$FAILED;
|
|
53342
53526
|
if (peg$silentFails === 0) {
|
|
53343
|
-
peg$fail(peg$
|
|
53527
|
+
peg$fail(peg$e34);
|
|
53344
53528
|
}
|
|
53345
53529
|
}
|
|
53346
53530
|
if (s9 !== peg$FAILED) {
|
|
@@ -53412,24 +53596,24 @@ function peg$parse(input, options) {
|
|
|
53412
53596
|
s0 = [];
|
|
53413
53597
|
s12 = [];
|
|
53414
53598
|
s2 = input.charAt(peg$currPos);
|
|
53415
|
-
if (peg$
|
|
53599
|
+
if (peg$r21.test(s2)) {
|
|
53416
53600
|
peg$currPos++;
|
|
53417
53601
|
} else {
|
|
53418
53602
|
s2 = peg$FAILED;
|
|
53419
53603
|
if (peg$silentFails === 0) {
|
|
53420
|
-
peg$fail(peg$
|
|
53604
|
+
peg$fail(peg$e41);
|
|
53421
53605
|
}
|
|
53422
53606
|
}
|
|
53423
53607
|
if (s2 !== peg$FAILED) {
|
|
53424
53608
|
while (s2 !== peg$FAILED) {
|
|
53425
53609
|
s12.push(s2);
|
|
53426
53610
|
s2 = input.charAt(peg$currPos);
|
|
53427
|
-
if (peg$
|
|
53611
|
+
if (peg$r21.test(s2)) {
|
|
53428
53612
|
peg$currPos++;
|
|
53429
53613
|
} else {
|
|
53430
53614
|
s2 = peg$FAILED;
|
|
53431
53615
|
if (peg$silentFails === 0) {
|
|
53432
|
-
peg$fail(peg$
|
|
53616
|
+
peg$fail(peg$e41);
|
|
53433
53617
|
}
|
|
53434
53618
|
}
|
|
53435
53619
|
}
|
|
@@ -53449,24 +53633,24 @@ function peg$parse(input, options) {
|
|
|
53449
53633
|
s0.push(s12);
|
|
53450
53634
|
s12 = [];
|
|
53451
53635
|
s2 = input.charAt(peg$currPos);
|
|
53452
|
-
if (peg$
|
|
53636
|
+
if (peg$r21.test(s2)) {
|
|
53453
53637
|
peg$currPos++;
|
|
53454
53638
|
} else {
|
|
53455
53639
|
s2 = peg$FAILED;
|
|
53456
53640
|
if (peg$silentFails === 0) {
|
|
53457
|
-
peg$fail(peg$
|
|
53641
|
+
peg$fail(peg$e41);
|
|
53458
53642
|
}
|
|
53459
53643
|
}
|
|
53460
53644
|
if (s2 !== peg$FAILED) {
|
|
53461
53645
|
while (s2 !== peg$FAILED) {
|
|
53462
53646
|
s12.push(s2);
|
|
53463
53647
|
s2 = input.charAt(peg$currPos);
|
|
53464
|
-
if (peg$
|
|
53648
|
+
if (peg$r21.test(s2)) {
|
|
53465
53649
|
peg$currPos++;
|
|
53466
53650
|
} else {
|
|
53467
53651
|
s2 = peg$FAILED;
|
|
53468
53652
|
if (peg$silentFails === 0) {
|
|
53469
|
-
peg$fail(peg$
|
|
53653
|
+
peg$fail(peg$e41);
|
|
53470
53654
|
}
|
|
53471
53655
|
}
|
|
53472
53656
|
}
|
|
@@ -53494,7 +53678,7 @@ function peg$parse(input, options) {
|
|
|
53494
53678
|
} else {
|
|
53495
53679
|
s12 = peg$FAILED;
|
|
53496
53680
|
if (peg$silentFails === 0) {
|
|
53497
|
-
peg$fail(peg$
|
|
53681
|
+
peg$fail(peg$e42);
|
|
53498
53682
|
}
|
|
53499
53683
|
}
|
|
53500
53684
|
if (s12 !== peg$FAILED) {
|
|
@@ -53508,7 +53692,7 @@ function peg$parse(input, options) {
|
|
|
53508
53692
|
} else {
|
|
53509
53693
|
s5 = peg$FAILED;
|
|
53510
53694
|
if (peg$silentFails === 0) {
|
|
53511
|
-
peg$fail(peg$
|
|
53695
|
+
peg$fail(peg$e43);
|
|
53512
53696
|
}
|
|
53513
53697
|
}
|
|
53514
53698
|
peg$silentFails--;
|
|
@@ -53550,7 +53734,7 @@ function peg$parse(input, options) {
|
|
|
53550
53734
|
} else {
|
|
53551
53735
|
s5 = peg$FAILED;
|
|
53552
53736
|
if (peg$silentFails === 0) {
|
|
53553
|
-
peg$fail(peg$
|
|
53737
|
+
peg$fail(peg$e43);
|
|
53554
53738
|
}
|
|
53555
53739
|
}
|
|
53556
53740
|
peg$silentFails--;
|
|
@@ -53588,7 +53772,7 @@ function peg$parse(input, options) {
|
|
|
53588
53772
|
} else {
|
|
53589
53773
|
s3 = peg$FAILED;
|
|
53590
53774
|
if (peg$silentFails === 0) {
|
|
53591
|
-
peg$fail(peg$
|
|
53775
|
+
peg$fail(peg$e43);
|
|
53592
53776
|
}
|
|
53593
53777
|
}
|
|
53594
53778
|
if (s3 !== peg$FAILED) {
|
|
@@ -53613,29 +53797,29 @@ function peg$parse(input, options) {
|
|
|
53613
53797
|
} else {
|
|
53614
53798
|
s12 = peg$FAILED;
|
|
53615
53799
|
if (peg$silentFails === 0) {
|
|
53616
|
-
peg$fail(peg$
|
|
53800
|
+
peg$fail(peg$e44);
|
|
53617
53801
|
}
|
|
53618
53802
|
}
|
|
53619
53803
|
if (s12 !== peg$FAILED) {
|
|
53620
53804
|
s2 = [];
|
|
53621
53805
|
s3 = input.charAt(peg$currPos);
|
|
53622
|
-
if (peg$
|
|
53806
|
+
if (peg$r22.test(s3)) {
|
|
53623
53807
|
peg$currPos++;
|
|
53624
53808
|
} else {
|
|
53625
53809
|
s3 = peg$FAILED;
|
|
53626
53810
|
if (peg$silentFails === 0) {
|
|
53627
|
-
peg$fail(peg$
|
|
53811
|
+
peg$fail(peg$e45);
|
|
53628
53812
|
}
|
|
53629
53813
|
}
|
|
53630
53814
|
while (s3 !== peg$FAILED) {
|
|
53631
53815
|
s2.push(s3);
|
|
53632
53816
|
s3 = input.charAt(peg$currPos);
|
|
53633
|
-
if (peg$
|
|
53817
|
+
if (peg$r22.test(s3)) {
|
|
53634
53818
|
peg$currPos++;
|
|
53635
53819
|
} else {
|
|
53636
53820
|
s3 = peg$FAILED;
|
|
53637
53821
|
if (peg$silentFails === 0) {
|
|
53638
|
-
peg$fail(peg$
|
|
53822
|
+
peg$fail(peg$e45);
|
|
53639
53823
|
}
|
|
53640
53824
|
}
|
|
53641
53825
|
}
|
|
@@ -53645,7 +53829,7 @@ function peg$parse(input, options) {
|
|
|
53645
53829
|
} else {
|
|
53646
53830
|
s3 = peg$FAILED;
|
|
53647
53831
|
if (peg$silentFails === 0) {
|
|
53648
|
-
peg$fail(peg$
|
|
53832
|
+
peg$fail(peg$e46);
|
|
53649
53833
|
}
|
|
53650
53834
|
}
|
|
53651
53835
|
if (s3 === peg$FAILED) {
|
|
@@ -53690,29 +53874,29 @@ function peg$parse(input, options) {
|
|
|
53690
53874
|
} else {
|
|
53691
53875
|
s12 = peg$FAILED;
|
|
53692
53876
|
if (peg$silentFails === 0) {
|
|
53693
|
-
peg$fail(peg$
|
|
53877
|
+
peg$fail(peg$e47);
|
|
53694
53878
|
}
|
|
53695
53879
|
}
|
|
53696
53880
|
if (s12 !== peg$FAILED) {
|
|
53697
53881
|
s2 = [];
|
|
53698
53882
|
s3 = input.charAt(peg$currPos);
|
|
53699
|
-
if (peg$
|
|
53883
|
+
if (peg$r22.test(s3)) {
|
|
53700
53884
|
peg$currPos++;
|
|
53701
53885
|
} else {
|
|
53702
53886
|
s3 = peg$FAILED;
|
|
53703
53887
|
if (peg$silentFails === 0) {
|
|
53704
|
-
peg$fail(peg$
|
|
53888
|
+
peg$fail(peg$e45);
|
|
53705
53889
|
}
|
|
53706
53890
|
}
|
|
53707
53891
|
while (s3 !== peg$FAILED) {
|
|
53708
53892
|
s2.push(s3);
|
|
53709
53893
|
s3 = input.charAt(peg$currPos);
|
|
53710
|
-
if (peg$
|
|
53894
|
+
if (peg$r22.test(s3)) {
|
|
53711
53895
|
peg$currPos++;
|
|
53712
53896
|
} else {
|
|
53713
53897
|
s3 = peg$FAILED;
|
|
53714
53898
|
if (peg$silentFails === 0) {
|
|
53715
|
-
peg$fail(peg$
|
|
53899
|
+
peg$fail(peg$e45);
|
|
53716
53900
|
}
|
|
53717
53901
|
}
|
|
53718
53902
|
}
|
|
@@ -53722,7 +53906,7 @@ function peg$parse(input, options) {
|
|
|
53722
53906
|
} else {
|
|
53723
53907
|
s3 = peg$FAILED;
|
|
53724
53908
|
if (peg$silentFails === 0) {
|
|
53725
|
-
peg$fail(peg$
|
|
53909
|
+
peg$fail(peg$e46);
|
|
53726
53910
|
}
|
|
53727
53911
|
}
|
|
53728
53912
|
if (s3 === peg$FAILED) {
|
|
@@ -54085,6 +54269,75 @@ function buildFromAst(ast) {
|
|
|
54085
54269
|
return graph;
|
|
54086
54270
|
}
|
|
54087
54271
|
|
|
54272
|
+
// src/parser/number-scan.ts
|
|
54273
|
+
var ASCII_DEL = 127;
|
|
54274
|
+
function isLetter(c) {
|
|
54275
|
+
if (c === void 0) return false;
|
|
54276
|
+
return c >= "A" && c <= "Z" || c >= "a" && c <= "z" || c === "_" || c.charCodeAt(0) > ASCII_DEL;
|
|
54277
|
+
}
|
|
54278
|
+
function isDigit(c) {
|
|
54279
|
+
return c !== void 0 && c >= "0" && c <= "9";
|
|
54280
|
+
}
|
|
54281
|
+
function startsNumber(s, i) {
|
|
54282
|
+
const c = s[i];
|
|
54283
|
+
if (isDigit(c)) return true;
|
|
54284
|
+
if (c === ".") return isDigit(s[i + 1]);
|
|
54285
|
+
if (c !== "-") return false;
|
|
54286
|
+
return isDigit(s[i + 1]) || s[i + 1] === "." && isDigit(s[i + 2]);
|
|
54287
|
+
}
|
|
54288
|
+
function matchNumber(s, i) {
|
|
54289
|
+
let j = s[i] === "-" ? i + 1 : i;
|
|
54290
|
+
if (s[j] === ".") {
|
|
54291
|
+
j++;
|
|
54292
|
+
while (isDigit(s[j])) j++;
|
|
54293
|
+
} else {
|
|
54294
|
+
while (isDigit(s[j])) j++;
|
|
54295
|
+
if (s[j] === ".") {
|
|
54296
|
+
j++;
|
|
54297
|
+
while (isDigit(s[j])) j++;
|
|
54298
|
+
}
|
|
54299
|
+
}
|
|
54300
|
+
if (s[j] === "." || isLetter(s[j])) j++;
|
|
54301
|
+
return j;
|
|
54302
|
+
}
|
|
54303
|
+
function twoDots(text) {
|
|
54304
|
+
const dot = text.indexOf(".");
|
|
54305
|
+
return dot !== -1 && dot !== text.length - 1;
|
|
54306
|
+
}
|
|
54307
|
+
function chkNum(text) {
|
|
54308
|
+
const c = text[text.length - 1];
|
|
54309
|
+
return !isDigit(c) && c !== "." || c === "." && twoDots(text);
|
|
54310
|
+
}
|
|
54311
|
+
function lexToken(s, i) {
|
|
54312
|
+
if (isLetter(s[i])) {
|
|
54313
|
+
let j2 = i + 1;
|
|
54314
|
+
while (isLetter(s[j2]) || isDigit(s[j2])) j2++;
|
|
54315
|
+
return { next: j2, bad: null };
|
|
54316
|
+
}
|
|
54317
|
+
if (s[i] === "-" && (s[i + 1] === "-" || s[i + 1] === ">")) return { next: i + 2, bad: null };
|
|
54318
|
+
if (!startsNumber(s, i)) return { next: i + 1, bad: null };
|
|
54319
|
+
const j = matchNumber(s, i);
|
|
54320
|
+
const text = s.slice(i, j);
|
|
54321
|
+
return chkNum(text) ? { next: j - 1, bad: text } : { next: j, bad: null };
|
|
54322
|
+
}
|
|
54323
|
+
function scanNumberAmbiguities(src, stripped) {
|
|
54324
|
+
const out = [];
|
|
54325
|
+
let line = 1;
|
|
54326
|
+
let lineAt = 0;
|
|
54327
|
+
for (let i = 0; i < stripped.length; ) {
|
|
54328
|
+
const { next, bad } = lexToken(stripped, i);
|
|
54329
|
+
if (bad !== null) {
|
|
54330
|
+
for (; lineAt < i; lineAt++) if (src[lineAt] === "\n") line++;
|
|
54331
|
+
out.push({ text: bad, line, offset: i });
|
|
54332
|
+
}
|
|
54333
|
+
i = next;
|
|
54334
|
+
}
|
|
54335
|
+
return out;
|
|
54336
|
+
}
|
|
54337
|
+
function numberAmbiguityMessage(a) {
|
|
54338
|
+
return `Warning: syntax ambiguity - badly delimited number '${a.text}' in line ${a.line} of input splits into two tokens`;
|
|
54339
|
+
}
|
|
54340
|
+
|
|
54088
54341
|
// src/parser/index.ts
|
|
54089
54342
|
var ParseError = class extends DotEngineError {
|
|
54090
54343
|
type = "syntax";
|
|
@@ -54244,6 +54497,12 @@ function isPeggyError(err) {
|
|
|
54244
54497
|
if (typeof e["location"] !== "object" || e["location"] === null) return false;
|
|
54245
54498
|
return "start" in e["location"];
|
|
54246
54499
|
}
|
|
54500
|
+
function warnNumberAmbiguities(src, upTo) {
|
|
54501
|
+
for (const a of scanNumberAmbiguities(src, Stripper.strip(src))) {
|
|
54502
|
+
if (a.offset > upTo) break;
|
|
54503
|
+
console.error(numberAmbiguityMessage(a));
|
|
54504
|
+
}
|
|
54505
|
+
}
|
|
54247
54506
|
function parse(src) {
|
|
54248
54507
|
if (typeof src !== "string") {
|
|
54249
54508
|
throw invalidArgType("dotSource", "string", src);
|
|
@@ -54254,6 +54513,7 @@ function parse(src) {
|
|
|
54254
54513
|
} catch (err) {
|
|
54255
54514
|
if (isPeggyError(err)) {
|
|
54256
54515
|
const start = err.location.start;
|
|
54516
|
+
warnNumberAmbiguities(src, start.offset);
|
|
54257
54517
|
const code = err.found === null ? "SYNTAX_UNEXPECTED_EOF" : "SYNTAX_ERROR";
|
|
54258
54518
|
throw new ParseError(
|
|
54259
54519
|
err instanceof Error ? err.message : String(err),
|
|
@@ -54271,6 +54531,7 @@ function parse(src) {
|
|
|
54271
54531
|
}
|
|
54272
54532
|
throw err;
|
|
54273
54533
|
}
|
|
54534
|
+
warnNumberAmbiguities(src, src.length);
|
|
54274
54535
|
validateEdgeOperators(src, ast.directed);
|
|
54275
54536
|
return buildFromAst(ast);
|
|
54276
54537
|
}
|
|
@@ -54279,6 +54540,7 @@ function parse(src) {
|
|
|
54279
54540
|
var XDOT_PARSE_ERROR = 1;
|
|
54280
54541
|
|
|
54281
54542
|
// src/xdot/parse.ts
|
|
54543
|
+
var ULONG_MAX = 0xffffffffffffffffn;
|
|
54282
54544
|
var XdotParser = class _XdotParser {
|
|
54283
54545
|
static isWs(c) {
|
|
54284
54546
|
return c === " " || c === " " || c === "\n" || c === "\r";
|
|
@@ -54322,12 +54584,23 @@ var XdotParser = class _XdotParser {
|
|
|
54322
54584
|
if (i === digStart) return null;
|
|
54323
54585
|
return { val: parseInt(s.slice(start, i), 10), pos: i };
|
|
54324
54586
|
}
|
|
54587
|
+
/**
|
|
54588
|
+
* strtoul(s, &endp, 10) cast to unsigned int: optional sign, a leading "-"
|
|
54589
|
+
* negates modulo 2^64, magnitude overflow saturates to ULONG_MAX, and the
|
|
54590
|
+
* result keeps the low 32 bits.
|
|
54591
|
+
* @see lib/xdot/xdot.c:parseUInt
|
|
54592
|
+
*/
|
|
54325
54593
|
static parseUInt_(s, pos) {
|
|
54326
54594
|
const i = _XdotParser.skipWs(s, pos);
|
|
54327
|
-
|
|
54328
|
-
const
|
|
54595
|
+
let start = i;
|
|
54596
|
+
const negative = i < s.length && s[i] === "-";
|
|
54597
|
+
if (i < s.length && (s[i] === "-" || s[i] === "+")) start++;
|
|
54598
|
+
const end = _XdotParser.consumeDigits(s, start);
|
|
54329
54599
|
if (end === start) return null;
|
|
54330
|
-
|
|
54600
|
+
const mag = BigInt(s.slice(start, end));
|
|
54601
|
+
const clamped = mag > ULONG_MAX ? ULONG_MAX : mag;
|
|
54602
|
+
const wrapped = negative && mag <= ULONG_MAX ? BigInt.asUintN(64, -clamped) : clamped;
|
|
54603
|
+
return { val: Number(BigInt.asUintN(32, wrapped)), pos: end };
|
|
54331
54604
|
}
|
|
54332
54605
|
static parseRect(s, pos) {
|
|
54333
54606
|
const rx = _XdotParser.parseReal(s, pos);
|
|
@@ -54424,7 +54697,7 @@ var XdotParser = class _XdotParser {
|
|
|
54424
54697
|
if (!rx1) return null;
|
|
54425
54698
|
const ry1 = _XdotParser.parseReal(s, rx1.pos);
|
|
54426
54699
|
if (!ry1) return null;
|
|
54427
|
-
const rn = _XdotParser.
|
|
54700
|
+
const rn = _XdotParser.parseUInt_(s, ry1.pos);
|
|
54428
54701
|
if (!rn) return null;
|
|
54429
54702
|
const rs = _XdotParser.parseStops(s, rn.pos, rn.val);
|
|
54430
54703
|
if (!rs) return null;
|
|
@@ -54443,7 +54716,7 @@ var XdotParser = class _XdotParser {
|
|
|
54443
54716
|
if (!ry1) return null;
|
|
54444
54717
|
const rr1 = _XdotParser.parseReal(s, ry1.pos);
|
|
54445
54718
|
if (!rr1) return null;
|
|
54446
|
-
const rn = _XdotParser.
|
|
54719
|
+
const rn = _XdotParser.parseUInt_(s, rr1.pos);
|
|
54447
54720
|
if (!rn) return null;
|
|
54448
54721
|
const rs = _XdotParser.parseStops(s, rn.pos, rn.val);
|
|
54449
54722
|
if (!rs) return null;
|