@knowvah/dot-engine 2.6.11 → 2.7.0
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/README.md +1 -1
- package/dist/api.js +18 -4
- package/dist/api.js.map +3 -3
- package/dist/async/render-async.d.ts.map +1 -1
- package/dist/common/agerr.d.ts +37 -0
- package/dist/common/agerr.d.ts.map +1 -0
- package/dist/common/arrows-shapes-poly.d.ts.map +1 -1
- package/dist/common/color.d.ts.map +1 -1
- package/dist/common/crand.d.ts +0 -20
- package/dist/common/crand.d.ts.map +1 -1
- package/dist/common/emit-once.d.ts +6 -0
- package/dist/common/emit-once.d.ts.map +1 -0
- package/dist/common/graph-init.d.ts.map +1 -1
- package/dist/common/htmltable-attr-warn.d.ts.map +1 -1
- package/dist/common/htmltable-emit-fill.d.ts +29 -2
- package/dist/common/htmltable-emit-fill.d.ts.map +1 -1
- package/dist/common/htmltable-emit-rules.d.ts.map +1 -1
- package/dist/common/htmltable-emit.d.ts.map +1 -1
- package/dist/common/htmltable-lex-expat.d.ts +1 -6
- package/dist/common/htmltable-lex-expat.d.ts.map +1 -1
- package/dist/common/htmltable-pos-runs.d.ts +7 -4
- package/dist/common/htmltable-pos-runs.d.ts.map +1 -1
- package/dist/common/htmltable.d.ts +1 -7
- package/dist/common/htmltable.d.ts.map +1 -1
- package/dist/common/libm-trig.d.ts +5 -0
- package/dist/common/libm-trig.d.ts.map +1 -0
- package/dist/common/multicolor.d.ts +21 -13
- package/dist/common/multicolor.d.ts.map +1 -1
- package/dist/common/poly-gencode.d.ts +1 -2
- package/dist/common/poly-gencode.d.ts.map +1 -1
- package/dist/common/poly-init.d.ts.map +1 -1
- package/dist/common/postproc.d.ts.map +1 -1
- package/dist/common/random.d.ts.map +1 -1
- package/dist/common/render-state.d.ts +8 -0
- package/dist/common/render-state.d.ts.map +1 -0
- package/dist/common/splines-clip.d.ts +7 -0
- package/dist/common/splines-clip.d.ts.map +1 -1
- package/dist/common/splines-geom.d.ts +8 -0
- package/dist/common/splines-geom.d.ts.map +1 -1
- package/dist/common/splines-routespl.d.ts.map +1 -1
- package/dist/common/textmeasure-lookup.d.ts.map +1 -1
- package/dist/common/textmeasure.d.ts.map +1 -1
- package/dist/gvc/anchor.d.ts.map +1 -1
- package/dist/gvc/context.d.ts +6 -0
- package/dist/gvc/context.d.ts.map +1 -1
- package/dist/gvc/device-cluster.d.ts +15 -0
- package/dist/gvc/device-cluster.d.ts.map +1 -1
- package/dist/gvc/device-labels.d.ts +14 -0
- package/dist/gvc/device-labels.d.ts.map +1 -1
- package/dist/gvc/device.d.ts.map +1 -1
- package/dist/gvc/first-layer.d.ts +9 -0
- package/dist/gvc/first-layer.d.ts.map +1 -0
- package/dist/gvc/gvrender-set-style.d.ts +28 -0
- package/dist/gvc/gvrender-set-style.d.ts.map +1 -0
- package/dist/gvc/usershape.d.ts +18 -0
- package/dist/gvc/usershape.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3169 -1296
- package/dist/index.js.map +4 -4
- package/dist/layout/dot/cluster.d.ts.map +1 -1
- package/dist/layout/dot/compound.d.ts.map +1 -1
- package/dist/layout/dot/conc.d.ts.map +1 -1
- package/dist/layout/dot/decomp.d.ts.map +1 -1
- package/dist/layout/dot/edge-route-clip.d.ts +32 -14
- package/dist/layout/dot/edge-route-clip.d.ts.map +1 -1
- package/dist/layout/dot/edge-route-routing.d.ts.map +1 -1
- package/dist/layout/dot/mincross-build.d.ts.map +1 -1
- package/dist/layout/dot/mincross-cross.d.ts.map +1 -1
- package/dist/layout/dot/rank.d.ts.map +1 -1
- package/dist/layout/dot/splines.d.ts.map +1 -1
- package/dist/layout/fdp/index.d.ts.map +1 -1
- package/dist/layout/fdp/tlayout-parms.d.ts.map +1 -1
- package/dist/layout/fdp/xlayout.d.ts.map +1 -1
- package/dist/layout/neato/__fixtures__/dijkstra-f.d.ts +11 -0
- package/dist/layout/neato/__fixtures__/dijkstra-f.d.ts.map +1 -0
- package/dist/layout/neato/__fixtures__/hier-imds.d.ts +36 -0
- package/dist/layout/neato/__fixtures__/hier-imds.d.ts.map +1 -0
- package/dist/layout/neato/__fixtures__/hier-majorization.d.ts +32 -0
- package/dist/layout/neato/__fixtures__/hier-majorization.d.ts.map +1 -0
- package/dist/layout/neato/cdt-surface.d.ts.map +1 -1
- package/dist/layout/neato/compute-hierarchy.d.ts +24 -0
- package/dist/layout/neato/compute-hierarchy.d.ts.map +1 -0
- package/dist/layout/neato/conjgrad-mkernel.d.ts +20 -0
- package/dist/layout/neato/conjgrad-mkernel.d.ts.map +1 -0
- package/dist/layout/neato/conjgrad.d.ts +19 -0
- package/dist/layout/neato/conjgrad.d.ts.map +1 -1
- package/dist/layout/neato/constrained-majorization.d.ts +26 -0
- package/dist/layout/neato/constrained-majorization.d.ts.map +1 -0
- package/dist/layout/neato/dijkstra.d.ts +33 -16
- package/dist/layout/neato/dijkstra.d.ts.map +1 -1
- package/dist/layout/neato/edge-len.d.ts.map +1 -1
- package/dist/layout/neato/fdp-adjust.d.ts.map +1 -1
- package/dist/layout/neato/gts-triangle.d.ts +14 -0
- package/dist/layout/neato/gts-triangle.d.ts.map +1 -0
- package/dist/layout/neato/init.d.ts +6 -22
- package/dist/layout/neato/init.d.ts.map +1 -1
- package/dist/layout/neato/kk.d.ts.map +1 -1
- package/dist/layout/neato/kkutils.d.ts +20 -0
- package/dist/layout/neato/kkutils.d.ts.map +1 -0
- package/dist/layout/neato/make-graph-data.d.ts +43 -0
- package/dist/layout/neato/make-graph-data.d.ts.map +1 -0
- package/dist/layout/neato/matrix-ops.d.ts +46 -0
- package/dist/layout/neato/matrix-ops.d.ts.map +1 -1
- package/dist/layout/neato/multispline-router.d.ts.map +1 -1
- package/dist/layout/neato/multispline.d.ts.map +1 -1
- package/dist/layout/neato/opt-arrangement.d.ts +20 -0
- package/dist/layout/neato/opt-arrangement.d.ts.map +1 -0
- package/dist/layout/neato/poly.d.ts.map +1 -1
- package/dist/layout/neato/quad-prog-solve.d.ts +44 -0
- package/dist/layout/neato/quad-prog-solve.d.ts.map +1 -0
- package/dist/layout/neato/sgd.d.ts.map +1 -1
- package/dist/layout/neato/smart-ini-x.d.ts +9 -0
- package/dist/layout/neato/smart-ini-x.d.ts.map +1 -0
- package/dist/layout/neato/splines.d.ts +1 -1
- package/dist/layout/neato/splines.d.ts.map +1 -1
- package/dist/layout/neato/start.d.ts +4 -1
- package/dist/layout/neato/start.d.ts.map +1 -1
- package/dist/layout/neato/stress.d.ts +8 -0
- package/dist/layout/neato/stress.d.ts.map +1 -1
- package/dist/model/edge.d.ts +1 -1
- package/dist/model/edge.d.ts.map +1 -1
- package/dist/model/lazy-attrs.d.ts +10 -0
- package/dist/model/lazy-attrs.d.ts.map +1 -0
- package/dist/model/node.d.ts +1 -1
- package/dist/model/node.d.ts.map +1 -1
- package/dist/ortho/index.d.ts.map +1 -1
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/render/color-resolve.d.ts +49 -1
- package/dist/render/color-resolve.d.ts.map +1 -1
- package/dist/render/dot/edge-draw.d.ts +1 -1
- package/dist/render/dot/edge-draw.d.ts.map +1 -1
- package/dist/render/public.d.ts.map +1 -1
- package/dist/render/svg-edge-split.d.ts +2 -0
- package/dist/render/svg-edge-split.d.ts.map +1 -1
- package/dist/render/svg-multicolor.d.ts +2 -2
- package/dist/render/svg-multicolor.d.ts.map +1 -1
- package/dist/render/xdot-public.d.ts.map +1 -1
- package/dist/render.js +2799 -927
- package/dist/render.js.map +4 -4
- package/package.json +1 -1
- package/src/async/render-async.ts +6 -0
- package/src/common/agerr.ts +96 -0
- package/src/common/arrows-shapes-poly.ts +19 -5
- package/src/common/color.ts +38 -10
- package/src/common/crand.ts +8 -2
- package/src/common/emit-once.ts +27 -0
- package/src/common/graph-init.ts +2 -1
- package/src/common/htmltable-attr-warn.ts +3 -4
- package/src/common/htmltable-emit-fill.ts +104 -11
- package/src/common/htmltable-emit-rules.ts +2 -0
- package/src/common/htmltable-emit.ts +4 -3
- package/src/common/htmltable-lex-expat.ts +96 -23
- package/src/common/htmltable-pos-runs.ts +11 -6
- package/src/common/htmltable.ts +28 -117
- package/src/common/libm-trig.ts +43 -0
- package/src/common/multicolor.ts +88 -24
- package/src/common/poly-gencode.ts +30 -10
- package/src/common/poly-init.ts +20 -1
- package/src/common/postproc.ts +4 -1
- package/src/common/random.ts +11 -1
- package/src/common/render-state.ts +36 -0
- package/src/common/splines-clip.ts +15 -12
- package/src/common/splines-geom.ts +8 -4
- package/src/common/splines-routespl.ts +2 -1
- package/src/common/textmeasure-lookup.ts +9 -2
- package/src/common/textmeasure.ts +45 -2
- package/src/gvc/anchor.ts +1 -12
- package/src/gvc/context.ts +8 -0
- package/src/gvc/device-cluster.ts +93 -10
- package/src/gvc/device-labels.ts +27 -0
- package/src/gvc/device.ts +34 -8
- package/src/gvc/first-layer.ts +26 -0
- package/src/gvc/gvrender-set-style.ts +114 -0
- package/src/gvc/usershape.ts +26 -0
- package/src/index.ts +3 -0
- package/src/layout/dot/cluster.ts +2 -1
- package/src/layout/dot/compound.ts +3 -4
- package/src/layout/dot/conc.ts +6 -5
- package/src/layout/dot/decomp.ts +3 -0
- package/src/layout/dot/edge-route-clip.ts +46 -28
- package/src/layout/dot/edge-route-routing.ts +11 -3
- package/src/layout/dot/fastgr.ts +2 -2
- package/src/layout/dot/mincross-build.ts +2 -0
- package/src/layout/dot/mincross-cross.ts +2 -0
- package/src/layout/dot/rank.ts +2 -0
- package/src/layout/dot/splines.ts +2 -1
- package/src/layout/fdp/index.ts +2 -1
- package/src/layout/fdp/tlayout-parms.ts +9 -2
- package/src/layout/fdp/xlayout.ts +10 -2
- package/src/layout/neato/__fixtures__/dijkstra-f.ts +17 -0
- package/src/layout/neato/__fixtures__/hier/c1554.gv +33 -0
- package/src/layout/neato/__fixtures__/hier/c1554.plain +26 -0
- package/src/layout/neato/__fixtures__/hier/c1554.xdot +161 -0
- package/src/layout/neato/__fixtures__/hier/cases/cycle.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/cases/cycle.plain +10 -0
- package/src/layout/neato/__fixtures__/hier/cases/cycle.stderr +0 -0
- package/src/layout/neato/__fixtures__/hier/cases/dirnone.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/cases/dirnone.plain +11 -0
- package/src/layout/neato/__fixtures__/hier/cases/dirnone.stderr +0 -0
- package/src/layout/neato/__fixtures__/hier/cases/epsilon.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/cases/epsilon.plain +13 -0
- package/src/layout/neato/__fixtures__/hier/cases/epsilon.stderr +0 -0
- package/src/layout/neato/__fixtures__/hier/cases/levelsgap.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/cases/levelsgap.plain +8 -0
- package/src/layout/neato/__fixtures__/hier/cases/levelsgap.stderr +0 -0
- package/src/layout/neato/__fixtures__/hier/cases/mds.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/cases/mds.plain +10 -0
- package/src/layout/neato/__fixtures__/hier/cases/mds.stderr +0 -0
- package/src/layout/neato/__fixtures__/hier/cases/multiedge.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/cases/multiedge.plain +10 -0
- package/src/layout/neato/__fixtures__/hier/cases/multiedge.stderr +0 -0
- package/src/layout/neato/__fixtures__/hier/cases/neglevelsgap.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/cases/neglevelsgap.plain +8 -0
- package/src/layout/neato/__fixtures__/hier/cases/neglevelsgap.stderr +0 -0
- package/src/layout/neato/__fixtures__/hier/cases/startrandom.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/cases/startrandom.plain +10 -0
- package/src/layout/neato/__fixtures__/hier/cases/startrandom.stderr +0 -0
- package/src/layout/neato/__fixtures__/hier/cases/startregular.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/cases/startregular.plain +10 -0
- package/src/layout/neato/__fixtures__/hier/cases/startregular.stderr +0 -0
- package/src/layout/neato/__fixtures__/hier/cases/tdist.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/cases/tdist.plain +13 -0
- package/src/layout/neato/__fixtures__/hier/cases/tdist.stderr +0 -0
- package/src/layout/neato/__fixtures__/hier/cases/undirected.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/cases/undirected.plain +10 -0
- package/src/layout/neato/__fixtures__/hier/cases/undirected.stderr +0 -0
- package/src/layout/neato/__fixtures__/hier/hier-probe.gv +1 -0
- package/src/layout/neato/__fixtures__/hier/hier-probe.plain +16 -0
- package/src/layout/neato/__fixtures__/hier/hier-probe.xdot +62 -0
- package/src/layout/neato/__fixtures__/hier-imds.ts +151 -0
- package/src/layout/neato/__fixtures__/hier-majorization.ts +145 -0
- package/src/layout/neato/cdt-surface.ts +12 -22
- package/src/layout/neato/compute-hierarchy.ts +90 -0
- package/src/layout/neato/conjgrad-mkernel.ts +141 -0
- package/src/layout/neato/conjgrad.ts +208 -0
- package/src/layout/neato/constrained-majorization.ts +479 -0
- package/src/layout/neato/dijkstra.ts +218 -92
- package/src/layout/neato/edge-len.ts +2 -1
- package/src/layout/neato/fdp-adjust.ts +3 -2
- package/src/layout/neato/gts-triangle.ts +42 -0
- package/src/layout/neato/init.ts +68 -68
- package/src/layout/neato/kk.ts +2 -1
- package/src/layout/neato/kkutils.ts +96 -0
- package/src/layout/neato/make-graph-data.ts +166 -0
- package/src/layout/neato/matrix-ops.ts +138 -0
- package/src/layout/neato/multispline-router.ts +3 -3
- package/src/layout/neato/multispline.ts +3 -2
- package/src/layout/neato/opt-arrangement.ts +86 -0
- package/src/layout/neato/poly.ts +3 -2
- package/src/layout/neato/quad-prog-solve.ts +489 -0
- package/src/layout/neato/sgd.ts +5 -2
- package/src/layout/neato/smart-ini-x.ts +503 -0
- package/src/layout/neato/splines.ts +4 -4
- package/src/layout/neato/start.ts +19 -14
- package/src/layout/neato/stress.ts +28 -0
- package/src/model/edge.ts +3 -2
- package/src/model/lazy-attrs.ts +36 -0
- package/src/model/node.ts +3 -2
- package/src/ortho/index.ts +2 -1
- package/src/parser/dot.js +4 -1
- package/src/parser/dot.pegjs +5 -1
- package/src/parser/index.ts +4 -3
- package/src/render/color-resolve.ts +193 -4
- package/src/render/dot/edge-draw.ts +6 -3
- package/src/render/dot.ts +1 -1
- package/src/render/public.ts +2 -0
- package/src/render/svg-edge-split.ts +6 -4
- package/src/render/svg-multicolor.ts +4 -3
- package/src/render/svg-parallel-edge.ts +2 -2
- package/src/render/xdot-public.ts +2 -0
|
@@ -12,6 +12,7 @@ import type { Point } from '../../model/geom.js';
|
|
|
12
12
|
import { parseArrow, resolveArrowType } from '../../common/arrows.js';
|
|
13
13
|
import { arrowLength } from '../../common/arrows-shapes.js';
|
|
14
14
|
import { bezier } from '../../common/bezier.js';
|
|
15
|
+
import { fma } from '../../common/fma.js';
|
|
15
16
|
|
|
16
17
|
// ---------------------------------------------------------------------------
|
|
17
18
|
// De Casteljau subdivision
|
|
@@ -115,17 +116,30 @@ export function bezierClipNode(
|
|
|
115
116
|
}
|
|
116
117
|
|
|
117
118
|
/**
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
|
|
119
|
+
* DIST(p, q) = sqrt(SQR(dx) + SQR(dy)) as the oracle compiles it
|
|
120
|
+
* (libgvc 16.1 `_arrowEndClip`: `fmul dy*dy; fmadd dx, dx; fsqrt`), i.e.
|
|
121
|
+
* sqrt(fma(dx, dx, dy * dy)) -- not Math.hypot.
|
|
122
|
+
* @see lib/common/geom.h:DIST
|
|
123
|
+
*/
|
|
124
|
+
export function distFused(p: Point, q: Point): number {
|
|
125
|
+
const dx = p.x - q.x;
|
|
126
|
+
const dy = p.y - q.y;
|
|
127
|
+
return Math.sqrt(fma(dx, dx, dy * dy));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Clip the path endpoint to the arrowhead BASE (not the node boundary).
|
|
123
132
|
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
* 3
|
|
128
|
-
*
|
|
133
|
+
* Ports the bezier part of lib/common/arrows.c:arrowEndClip (:285-330); the
|
|
134
|
+
* `spl->eflag/ep` bookkeeping and the `endp -= 3` back-up (:288-296) live in
|
|
135
|
+
* the callers (compound.ts:arrowEndClipIdx). Line map (C -> here):
|
|
136
|
+
* :299-302 sp[3..0] = ps[endp..], sp[0] = spl->ep -> `sp` below
|
|
137
|
+
* :304 if (elen > 0) -> `elen > 0`
|
|
138
|
+
* :305-307 inside_context {p = &sp[0], r = &elen} -> `inside` (centre = tip)
|
|
139
|
+
* :308 bezier_clip(&ctx, inside, sp, true) -> bezierClipNode, left
|
|
140
|
+
* inside, in ABSOLUTE coordinates (centre 0,0), as C does
|
|
141
|
+
* :311-314 ps[endp..endp+3] = sp[3..0] -> returned array
|
|
142
|
+
* :281-283 inside(): DIST(p, a.p[0]) <= a.r[0] -> distFused <= elen
|
|
129
143
|
*
|
|
130
144
|
* @see lib/common/arrows.c:arrowEndClip
|
|
131
145
|
*/
|
|
@@ -134,18 +148,10 @@ export function arrowEndClip(
|
|
|
134
148
|
arrowTip: Point,
|
|
135
149
|
elen: number,
|
|
136
150
|
): Point[] {
|
|
137
|
-
if (elen <= 0) return path4;
|
|
138
|
-
// Reverse: sp[0]=tip (inside sphere), sp[1..3]=reversed last 3 path points
|
|
139
151
|
const sp: Point[] = [arrowTip, path4[2]!, path4[1]!, path4[0]!];
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
const spRel: Point[] = sp.map(p => ({ x: p.x - arrowTip.x, y: p.y - arrowTip.y }));
|
|
144
|
-
const clippedRel = bezierClipLocal(spRel, insideSphere, true);
|
|
145
|
-
const clipped = clippedRel.map(p => ({ x: p.x + arrowTip.x, y: p.y + arrowTip.y }));
|
|
146
|
-
// Un-reverse: the clipped right subdivision = [arrowBase, ..., arrowTip]
|
|
147
|
-
// The path endpoint becomes arrowBase = clipped[0]
|
|
148
|
-
// Un-reverse the full clipped result; all 4 points update via de Casteljau
|
|
152
|
+
const clipped = elen > 0
|
|
153
|
+
? bezierClipNode(sp, 0, 0, (x, y) => distFused({ x, y }, arrowTip) <= elen, true)
|
|
154
|
+
: sp;
|
|
149
155
|
return [clipped[3]!, clipped[2]!, clipped[1]!, clipped[0]!];
|
|
150
156
|
}
|
|
151
157
|
|
|
@@ -212,19 +218,31 @@ export function makeEllipseInsideFn(
|
|
|
212
218
|
}
|
|
213
219
|
|
|
214
220
|
/**
|
|
215
|
-
* Clip path START to the tail arrowhead base (
|
|
221
|
+
* Clip path START to the tail arrowhead base (the arrowEndClip counterpart).
|
|
216
222
|
*
|
|
217
|
-
*
|
|
218
|
-
*
|
|
223
|
+
* Ports the bezier part of lib/common/arrows.c:arrowStartClip (:313-339); the
|
|
224
|
+
* `spl->sflag/sp` bookkeeping and the `startp += 3` step live in the caller
|
|
225
|
+
* (compound.ts:arrowStartClipIdx). Line map (C -> here):
|
|
226
|
+
* :323-326 sp[0..2] = ps[startp+3..], sp[3] = spl->sp -> `sp` below
|
|
227
|
+
* :328 if (slen > 0) -> `elen > 0`
|
|
228
|
+
* :329-330 inside_context {p = &sp[3], r = &slen} -> `inside` (centre = tip)
|
|
229
|
+
* :331 bezier_clip(&ctx, inside, sp, false) -> bezierClipNode, right
|
|
230
|
+
* inside, in ABSOLUTE coordinates (centre 0,0), as C does
|
|
231
|
+
* :334-337 ps[startp..startp+3] = sp[3..0] -> returned array
|
|
232
|
+
* :281-283 inside(): DIST(p, a.p[0]) <= a.r[0] -> distFused <= elen
|
|
233
|
+
* path4[0] is the tip (spl->sp) at every call site, so elen <= 0 returns the
|
|
234
|
+
* same points.
|
|
219
235
|
*
|
|
220
|
-
* @see lib/common/arrows.c:
|
|
236
|
+
* @see lib/common/arrows.c:arrowStartClip
|
|
221
237
|
*/
|
|
222
238
|
export function tailArrowEndClip(
|
|
223
239
|
path4: Point[],
|
|
224
240
|
tailTip: Point,
|
|
225
241
|
elen: number,
|
|
226
242
|
): Point[] {
|
|
227
|
-
|
|
228
|
-
const
|
|
229
|
-
|
|
243
|
+
const sp: Point[] = [path4[3]!, path4[2]!, path4[1]!, tailTip];
|
|
244
|
+
const clipped = elen > 0
|
|
245
|
+
? bezierClipNode(sp, 0, 0, (x, y) => distFused({ x, y }, tailTip) <= elen, false)
|
|
246
|
+
: sp;
|
|
247
|
+
return [clipped[3]!, clipped[2]!, clipped[1]!, clipped[0]!];
|
|
230
248
|
}
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
normalizeVec, negateVec, offsetPoint, clipToNodeBox,
|
|
15
15
|
} from './edge-route-geom.js';
|
|
16
16
|
import type { NodeBox } from './edge-route-geom.js';
|
|
17
|
-
import { bezierClipNode, makeBoxInsideFn, makeEllipseInsideFn, arrowEndClip, DEFAULT_NODEPENWIDTH } from './edge-route-clip.js';
|
|
17
|
+
import { bezierClipNode, makeBoxInsideFn, makeEllipseInsideFn, arrowEndClip, distFused, DEFAULT_NODEPENWIDTH } from './edge-route-clip.js';
|
|
18
18
|
import { computeSpline } from './edge-route-poly.js';
|
|
19
19
|
import {
|
|
20
20
|
makeTailBox, makeHeadBox, makeRankBox, makeMaximalBbox,
|
|
@@ -154,9 +154,17 @@ export function clipToNodes(
|
|
|
154
154
|
const step2 = clip.head
|
|
155
155
|
? bezierClipNode(step1, headBox.center.x, headBox.center.y, nodeInsideFn(headBox), false)
|
|
156
156
|
: step1;
|
|
157
|
-
|
|
157
|
+
// arrows.c:arrowEndClip(e, ps, startp, endp, ...) with startp = endp = 0 for this
|
|
158
|
+
// single-segment spline: spl->ep = ps[endp + 3]; the back-up fires only when
|
|
159
|
+
// endp > startp && DIST(ps[endp], ps[endp + 3]) < elen.
|
|
160
|
+
const startp = 0;
|
|
161
|
+
let endp = 0;
|
|
162
|
+
const arrowTip = step2[endp + 3] as Point;
|
|
158
163
|
const elen = normalArrowLen(penwidth);
|
|
159
|
-
|
|
164
|
+
if (endp > startp && distFused(step2[endp] as Point, step2[endp + 3] as Point) < elen) {
|
|
165
|
+
endp -= 3;
|
|
166
|
+
}
|
|
167
|
+
const clipped = arrowEndClip(step2.slice(endp, endp + 4), arrowTip, elen);
|
|
160
168
|
const arrowDir = normalizeVec({
|
|
161
169
|
x: (clipped[3] as Point).x - arrowTip.x,
|
|
162
170
|
y: (clipped[3] as Point).y - arrowTip.y,
|
package/src/layout/dot/fastgr.ts
CHANGED
|
@@ -167,7 +167,7 @@ export function copyVirtualEdgeInfo(e: Edge, orig: Edge): void {
|
|
|
167
167
|
* @see lib/dotgen/fastgr.c:new_virtual_edge
|
|
168
168
|
*/
|
|
169
169
|
export function newVirtualEdge(u: Node, v: Node, orig: Edge | null): Edge {
|
|
170
|
-
const e = new EdgeClass(u, v, '');
|
|
170
|
+
const e = new EdgeClass(u, v, '', true);
|
|
171
171
|
e.info.edge_type = VIRTUAL;
|
|
172
172
|
if (orig) {
|
|
173
173
|
copyVirtualEdgeInfo(e, orig);
|
|
@@ -353,7 +353,7 @@ export function removeFromRank(g: Graph, n: Node): void {
|
|
|
353
353
|
* @see lib/dotgen/fastgr.c:virtual_node
|
|
354
354
|
*/
|
|
355
355
|
export function virtualNode(g: Graph): Node {
|
|
356
|
-
const n = new NodeClass(0, '', g.root);
|
|
356
|
+
const n = new NodeClass(0, '', g.root, true);
|
|
357
357
|
n.info.node_type = VIRTUAL;
|
|
358
358
|
// C: ND_lw(n) = ND_rw(n) = 1; ND_ht(n) = 1; ND_UF_size(n) = 1
|
|
359
359
|
// @see lib/dotgen/fastgr.c:virtual_node
|
|
@@ -40,6 +40,7 @@ export {
|
|
|
40
40
|
constrainingFlatEdge, countConstraining, postorder,
|
|
41
41
|
flatReorderBuildTemprank, flatReorderFixEdges, flatReorderRank, flatReorder,
|
|
42
42
|
} from './mincross-flat.js';
|
|
43
|
+
import { registerRenderState } from '../../common/render-state.js';
|
|
43
44
|
|
|
44
45
|
// allocate_ranks — @see lib/dotgen/mincross.c:allocate_ranks
|
|
45
46
|
export function makeEmptyRank(): RankEntry {
|
|
@@ -99,6 +100,7 @@ export function allocateRanks(g: Graph): void {
|
|
|
99
100
|
* distinct names rather than colliding/deduping by name).
|
|
100
101
|
*/
|
|
101
102
|
let fillSeq = 0;
|
|
103
|
+
registerRenderState(() => { fillSeq = 0; });
|
|
102
104
|
|
|
103
105
|
/**
|
|
104
106
|
* Create a placeholder fill node in the `_new_rank` subgraph at `rank`.
|
|
@@ -18,12 +18,14 @@ import { CLUSTER } from './rank.js';
|
|
|
18
18
|
import {
|
|
19
19
|
MincrossContext, matrixGet, rankGet,
|
|
20
20
|
} from './mincross-utils.js';
|
|
21
|
+
import { registerRenderState } from '../../common/render-state.js';
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* Mirror of C's file-global `ReMincross`. Set true only during the remincross
|
|
24
25
|
* pass so left2right tightens the cluster constraint. @see mincross.c
|
|
25
26
|
*/
|
|
26
27
|
let reMincross = false;
|
|
28
|
+
registerRenderState(() => { reMincross = false; });
|
|
27
29
|
export function setReMincross(b: boolean): void { reMincross = b; }
|
|
28
30
|
|
|
29
31
|
// ---------------------------------------------------------------------------
|
package/src/layout/dot/rank.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { rank } from './ns.js';
|
|
|
12
12
|
import { dot2Rank } from './rank-dot2.js';
|
|
13
13
|
import { class1 } from './classify.js';
|
|
14
14
|
import { pruneForeignClusterNodes } from './cluster.js';
|
|
15
|
+
import { registerRenderState } from '../../common/render-state.js';
|
|
15
16
|
|
|
16
17
|
// ---------------------------------------------------------------------------
|
|
17
18
|
// Constants @see lib/common/const.h
|
|
@@ -54,6 +55,7 @@ export const IGNORED = 6;
|
|
|
54
55
|
/** Global cluster layout type. @see lib/common/globals.h:CL_type */
|
|
55
56
|
export let clType = LOCAL;
|
|
56
57
|
export function setClType(t: number): void { clType = t; }
|
|
58
|
+
registerRenderState(() => { clType = LOCAL; });
|
|
57
59
|
|
|
58
60
|
// ---------------------------------------------------------------------------
|
|
59
61
|
// Utility helpers
|
|
@@ -26,6 +26,7 @@ import { dispatchOrthoEdges } from './ortho-adapter.js';
|
|
|
26
26
|
import { routeEdgeGroups } from './splines-groups.js';
|
|
27
27
|
import { placePortLabels, placeRegularEdgeLabels, setEdgeLabelPos } from './splines-label.js';
|
|
28
28
|
import { nodesInSeq } from './decomp.js';
|
|
29
|
+
import { agerrLineOn } from '../../common/agerr.js';
|
|
29
30
|
|
|
30
31
|
// ---------------------------------------------------------------------------
|
|
31
32
|
// Edge-type flag constants
|
|
@@ -473,7 +474,7 @@ function orthoDispatch(g: Graph): number {
|
|
|
473
474
|
function curvedTop(g: Graph): void {
|
|
474
475
|
resetRW(g);
|
|
475
476
|
if (((g.root.info.has_labels ?? 0) & EDGE_LABEL) !== 0) {
|
|
476
|
-
|
|
477
|
+
agerrLineOn('warn', 'edge labels with splines=curved not supported in dot - use xlabels\n');
|
|
477
478
|
}
|
|
478
479
|
}
|
|
479
480
|
|
package/src/layout/fdp/index.ts
CHANGED
|
@@ -27,6 +27,7 @@ import { fdpLayout, mkClusters } from './layout.js';
|
|
|
27
27
|
import { gdata } from './fdp-model.js';
|
|
28
28
|
import { graphInit } from '../../common/graph-init.js';
|
|
29
29
|
import { csrand } from '../../common/crand.js';
|
|
30
|
+
import { agerrLineOn } from '../../common/agerr.js';
|
|
30
31
|
|
|
31
32
|
export { fdpLayout, mkClusters, evalPositions, setBB } from './layout.js';
|
|
32
33
|
export { fdpTLayout } from './tlayout.js';
|
|
@@ -93,7 +94,7 @@ function fdpSplines(g: Graph): void {
|
|
|
93
94
|
);
|
|
94
95
|
}
|
|
95
96
|
if (g.info.n_cluster_edges) { // HAS_CLUST_EDGE(g)
|
|
96
|
-
|
|
97
|
+
agerrLineOn('warn', CLUSTER_EDGE_WARNING);
|
|
97
98
|
et = EDGETYPE_LINE;
|
|
98
99
|
} else {
|
|
99
100
|
splineEdges1(g, et);
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import type { Graph } from '../../model/graph.js';
|
|
16
16
|
import { lateDouble, lateInt } from '../../common/nodeinit.js';
|
|
17
17
|
import { type XParams, aggetGraph } from './fdp-model.js';
|
|
18
|
+
import { registerRenderState } from '../../common/render-state.js';
|
|
18
19
|
|
|
19
20
|
// ---------------------------------------------------------------------------
|
|
20
21
|
// Constants — @see lib/fdpgen/tlayout.c:96-101, lib/neatogen/neato.h:27-30
|
|
@@ -90,13 +91,19 @@ export interface TParms {
|
|
|
90
91
|
loopcnt: number;
|
|
91
92
|
}
|
|
92
93
|
|
|
93
|
-
/**
|
|
94
|
-
|
|
94
|
+
/** C's zero-initialized static parms_t. */
|
|
95
|
+
const PARMS_INIT: Readonly<TParms> = {
|
|
95
96
|
useGrid: 0, useNew: 0, seed: 0, numIters: 0, maxIters: 0, unscaled: 0,
|
|
96
97
|
C: 0, Tfact: 0, K: 0, T0: 0, smode: 0, Cell: 0, Wd: 0, Ht: 0,
|
|
97
98
|
pass1: 0, loopcnt: 0,
|
|
98
99
|
};
|
|
99
100
|
|
|
101
|
+
/** Module-level mutable state, mirroring the C static. @see tlayout.c:parms */
|
|
102
|
+
export const parms: TParms = { ...PARMS_INIT };
|
|
103
|
+
// fdpParms is not reset: it is the -L command-line configuration (args.c),
|
|
104
|
+
// and the one field a render writes (K) is set by fdpInitParams before any read.
|
|
105
|
+
registerRenderState(() => { Object.assign(parms, PARMS_INIT); });
|
|
106
|
+
|
|
100
107
|
/** Linear cooling schedule. @see lib/fdpgen/tlayout.c:cool */
|
|
101
108
|
export function cool(t: number): number {
|
|
102
109
|
return parms.T0 * (parms.maxIters - t) / parms.maxIters;
|
|
@@ -36,6 +36,7 @@ import { libmHypot } from '../../common/libm-hypot.js';
|
|
|
36
36
|
import { fma, fms } from '../../common/fma.js';
|
|
37
37
|
import { normalizeG } from './normalize.js';
|
|
38
38
|
import { simpleScale } from '../neato/simple-scale.js';
|
|
39
|
+
import { registerRenderState } from '../../common/render-state.js';
|
|
39
40
|
|
|
40
41
|
/** @see lib/fdpgen/xlayout.c:DFLT_overlap */
|
|
41
42
|
const DFLT_OVERLAP = '9:prism';
|
|
@@ -47,8 +48,8 @@ const PS2INCH = (x: number): number => x / 72;
|
|
|
47
48
|
// xParams / X_marg — static state (C statics, persist across calls)
|
|
48
49
|
// ---------------------------------------------------------------------------
|
|
49
50
|
|
|
50
|
-
/** @see lib/fdpgen/xlayout.c:xParams */
|
|
51
|
-
const
|
|
51
|
+
/** C's static initializer of xParams. @see lib/fdpgen/xlayout.c:xParams */
|
|
52
|
+
const XPARAMS_INIT: Readonly<XParams> = {
|
|
52
53
|
numIters: 60,
|
|
53
54
|
T0: 0.0,
|
|
54
55
|
K: 0.3,
|
|
@@ -56,8 +57,15 @@ const xParams: XParams = {
|
|
|
56
57
|
loopcnt: 0,
|
|
57
58
|
};
|
|
58
59
|
|
|
60
|
+
/** @see lib/fdpgen/xlayout.c:xParams */
|
|
61
|
+
const xParams: XParams = { ...XPARAMS_INIT };
|
|
62
|
+
|
|
59
63
|
/** @see lib/fdpgen/xlayout.c:X_marg */
|
|
60
64
|
let xMarg: ExpandT = { x: 0, y: 0, doAdd: false };
|
|
65
|
+
registerRenderState(() => {
|
|
66
|
+
Object.assign(xParams, XPARAMS_INIT);
|
|
67
|
+
xMarg = { x: 0, y: 0, doAdd: false };
|
|
68
|
+
});
|
|
61
69
|
|
|
62
70
|
/** Overlap/non-overlap repulsion strengths for one try. */
|
|
63
71
|
interface RepStrength {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
// Native 16.1 dijkstra_f rows (clang -O3, libneatogen.a of the oracle build), one hex
|
|
3
|
+
// float32 bit pattern per entry. Graphs: g9 = hierarchy graph from T22; r2/r5 =
|
|
4
|
+
// random weighted graphs (r5 is disconnected). Generated data: do not hand-edit.
|
|
5
|
+
|
|
6
|
+
export interface DijkstraFFixture {
|
|
7
|
+
n: number;
|
|
8
|
+
rows: { edges: number[]; ewgts: number[] }[];
|
|
9
|
+
/** expected[s][j] = float32 bits of dist(s -> j), as 8-digit hex */
|
|
10
|
+
expected: string[][];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const DIJKSTRA_F_FIXTURES: Record<'g9' | 'r2' | 'r5', DijkstraFFixture> = {
|
|
14
|
+
g9: {"n":9,"rows":[{"edges":[0,1,2,4,8],"ewgts":[0,1,1,1,1]},{"edges":[1,0,3],"ewgts":[0,1,1]},{"edges":[2,0],"ewgts":[0,1]},{"edges":[3,1,4,5,6,7],"ewgts":[0,1,1,1,1,1]},{"edges":[4,0,3,6],"ewgts":[0,1,1,1]},{"edges":[5,3],"ewgts":[0,1]},{"edges":[6,3,4,8],"ewgts":[0,1,1,1]},{"edges":[7,3,8],"ewgts":[0,1,1]},{"edges":[8,0,6,7],"ewgts":[0,1,1,1]}],"expected":[["00000000","3f800000","3f800000","40000000","3f800000","40400000","40000000","40000000","3f800000"],["3f800000","00000000","40000000","3f800000","40000000","40000000","40000000","40000000","40000000"],["3f800000","40000000","00000000","40400000","40000000","40800000","40400000","40400000","40000000"],["40000000","3f800000","40400000","00000000","3f800000","3f800000","3f800000","3f800000","40000000"],["3f800000","40000000","40000000","3f800000","00000000","40000000","3f800000","40000000","40000000"],["40400000","40000000","40800000","3f800000","40000000","00000000","40000000","40000000","40400000"],["40000000","40000000","40400000","3f800000","3f800000","40000000","00000000","40000000","3f800000"],["40000000","40000000","40400000","3f800000","40000000","40000000","40000000","00000000","3f800000"],["3f800000","40000000","40000000","40000000","40000000","40400000","3f800000","3f800000","00000000"]]},
|
|
15
|
+
r2: {"n":50,"rows":[{"edges":[0,16,20,37,42],"ewgts":[0,0.6107177734375,0.779015064239502,1.5925718545913696,3.0918211936950684]},{"edges":[1,6,48,37,47,17,16],"ewgts":[0,2.5686447620391846,2.177841901779175,3.3810622692108154,2.657801628112793,1.791579246520996,1.6641427278518677]},{"edges":[2,9,49,46,36,35,3],"ewgts":[0,1.3611153364181519,4.08108377456665,2.2942681312561035,0.229284405708313,3.4956467151641846,4.5992937088012695]},{"edges":[3,33,2,6],"ewgts":[0,1.4863576889038086,4.5992937088012695,1.7348114252090454]},{"edges":[4,27,12,29,13,26,17],"ewgts":[0,4.651636123657227,1.8243635892868042,2.942603826522827,1.0076578855514526,4.7854084968566895,3.3405096530914307]},{"edges":[5,28,15,33,14,24],"ewgts":[0,4.146543025970459,3.035921812057495,0.8667697906494141,4.322223663330078,4.680764198303223]},{"edges":[6,13,1,10,33,29,3],"ewgts":[0,3.947115182876587,2.5686447620391846,1.2223533391952515,4.070518493652344,3.6621010303497314,1.7348114252090454]},{"edges":[7,27,41,47],"ewgts":[0,1.6796417236328125,0.9393562078475952,0.12917423248291016]},{"edges":[8,18,42],"ewgts":[0,4.590372562408447,2.572849988937378]},{"edges":[9,2,34,40],"ewgts":[0,1.3611153364181519,4.2000226974487305,0.41423046588897705]},{"edges":[10,6,32,44,19],"ewgts":[0,1.2223533391952515,2.507539749145508,4.895442008972168,3.69148325920105]},{"edges":[11,38,39,46,18,42],"ewgts":[0,0.8708902597427368,1.083899974822998,4.015132427215576,2.2474334239959717,1.0065081119537354]},{"edges":[12,4,29],"ewgts":[0,1.8243635892868042,2.315244674682617]},{"edges":[13,6,44,14,32,4,15,42],"ewgts":[0,3.947115182876587,0.3132797181606293,0.3442717492580414,0.8580286502838135,1.0076578855514526,2.0123953819274902,0.44054099917411804]},{"edges":[14,26,47,41,13,5,23],"ewgts":[0,3.7372684478759766,3.688253164291382,3.7473089694976807,0.3442717492580414,4.322223663330078,0.7705272436141968]},{"edges":[15,36,29,5,13,37,39,30],"ewgts":[0,4.194822311401367,4.76489782333374,3.035921812057495,2.0123953819274902,0.5969126224517822,4.6500020027160645,1.0265476703643799]},{"edges":[16,42,31,0,1],"ewgts":[0,3.977947235107422,4.627945899963379,0.6107177734375,1.6641427278518677]},{"edges":[17,33,48,4,1],"ewgts":[0,2.579831600189209,1.602760672569275,3.3405096530914307,1.791579246520996]},{"edges":[18,23,8,38,43,11,19],"ewgts":[0,3.5923361778259277,4.590372562408447,1.202156662940979,2.4953603744506836,2.2474334239959717,0.6456948518753052]},{"edges":[19,20,24,10,18],"ewgts":[0,4.786898612976074,2.2527260780334473,3.69148325920105,0.6456948518753052]},{"edges":[20,19,49,42,0,41,43],"ewgts":[0,4.786898612976074,2.322394847869873,4.407115459442139,0.779015064239502,4.914223670959473,0.46865829825401306]},{"edges":[21,31],"ewgts":[0,3.2177133560180664]},{"edges":[22,24,38],"ewgts":[0,2.4678618907928467,2.29884934425354]},{"edges":[23,18,24,48,34,45,40,14,37],"ewgts":[0,3.5923361778259277,0.41297802329063416,3.471560478210449,2.743868827819824,0.26242920756340027,2.520932674407959,0.7705272436141968,3.433049440383911]},{"edges":[24,23,39,5,22,19,31],"ewgts":[0,0.41297802329063416,3.2836198806762695,4.680764198303223,2.4678618907928467,2.2527260780334473,2.867274284362793]},{"edges":[25,35],"ewgts":[0,3.687930107116699]},{"edges":[26,14,34,47,4,32,39],"ewgts":[0,3.7372684478759766,3.5176753997802734,4.536037921905518,4.7854084968566895,0.2583629786968231,0.12705513834953308]},{"edges":[27,4,38,7,41],"ewgts":[0,4.651636123657227,2.2154366970062256,1.6796417236328125,4.684259414672852]},{"edges":[28,31,5,43,40],"ewgts":[0,1.828391671180725,4.146543025970459,3.884444236755371,4.2690839767456055]},{"edges":[29,48,15,39,4,6,12,37],"ewgts":[0,1.3676930665969849,4.76489782333374,3.2299411296844482,2.942603826522827,3.6621010303497314,2.315244674682617,0.303432434797287]},{"edges":[30,46,15],"ewgts":[0,2.108924388885498,1.0265476703643799]},{"edges":[31,28,16,21,49,24],"ewgts":[0,1.828391671180725,4.627945899963379,3.2177133560180664,4.039309024810791,2.867274284362793]},{"edges":[32,13,10,26],"ewgts":[0,0.8580286502838135,2.507539749145508,0.2583629786968231]},{"edges":[33,44,46,6,17,5,3],"ewgts":[0,1.6364134550094604,2.133212089538574,4.070518493652344,2.579831600189209,0.8667697906494141,1.4863576889038086]},{"edges":[34,26,35,23,9,46],"ewgts":[0,3.5176753997802734,1.0942078828811646,2.743868827819824,4.2000226974487305,3.9099462032318115]},{"edges":[35,34,25,2],"ewgts":[0,1.0942078828811646,3.687930107116699,3.4956467151641846]},{"edges":[36,15,2],"ewgts":[0,4.194822311401367,0.229284405708313]},{"edges":[37,1,0,23,15,29],"ewgts":[0,3.3810622692108154,1.5925718545913696,3.433049440383911,0.5969126224517822,0.303432434797287]},{"edges":[38,11,27,18,22],"ewgts":[0,0.8708902597427368,2.2154366970062256,1.202156662940979,2.29884934425354]},{"edges":[39,49,29,45,24,11,48,40,26,15],"ewgts":[0,2.435215711593628,3.2299411296844482,1.4467240571975708,3.2836198806762695,1.083899974822998,3.706386089324951,2.385258197784424,0.12705513834953308,4.6500020027160645]},{"edges":[40,49,9,23,39,28],"ewgts":[0,3.032205104827881,0.41423046588897705,2.520932674407959,2.385258197784424,4.2690839767456055]},{"edges":[41,14,49,20,27,7],"ewgts":[0,3.7473089694976807,3.3405661582946777,4.914223670959473,4.684259414672852,0.9393562078475952]},{"edges":[42,16,8,20,13,0,11],"ewgts":[0,3.977947235107422,2.572849988937378,4.407115459442139,0.44054099917411804,3.0918211936950684,1.0065081119537354]},{"edges":[43,28,18,20],"ewgts":[0,3.884444236755371,2.4953603744506836,0.46865829825401306]},{"edges":[44,13,33,10],"ewgts":[0,0.3132797181606293,1.6364134550094604,4.895442008972168]},{"edges":[45,39,23],"ewgts":[0,1.4467240571975708,0.26242920756340027]},{"edges":[46,30,33,2,11,34],"ewgts":[0,2.108924388885498,2.133212089538574,2.2942681312561035,4.015132427215576,3.9099462032318115]},{"edges":[47,14,26,1,7],"ewgts":[0,3.688253164291382,4.536037921905518,2.657801628112793,0.12917423248291016]},{"edges":[48,29,1,23,39,17],"ewgts":[0,1.3676930665969849,2.177841901779175,3.471560478210449,3.706386089324951,1.602760672569275]},{"edges":[49,39,2,40,41,20,31],"ewgts":[0,2.435215711593628,4.08108377456665,3.032205104827881,3.3405661582946777,2.322394847869873,4.039309024810791]}],"expected":[["00000000","40119750","40d3a28a","40d28191","409147d8","40a73688","409afdfe","40a1fa90","40b544fc","40d187f3","40c21b83","40832584","4086c28d","40621239","40781ac5","400c2084","3f1c5800","40822046","406f8dde","408c7077","3f476d88","41074d52","40e7cf2c","4094b58b","40a1eca9","4142c54c","4094c297","40d7ba30","40a43a4f","3ff2b045","404dd379","40a7a322","408c7e15","40af6cff","40ec8351","4107c389","40cc4c3e","3fcbd965","409e3f00","4098d36d","40c44693","40b62f03","4045e066","3f9fb3c3","40761eff","409d1b5d","40aa660c","409dd85e","4050e06b","40467d80"],["40119750","00000000","41066eed","4089b5ea","40a43a12","40a79f2d","402464ad","40325dd0","40fe10a4","41095a62","40729fb6","40cbf12c","40bb8b82","40b9d4c4","40c4d90a","407e9724","3fd502a1","3fe55278","40c09296","40d53c1e","404372b2","41182826","41087be0","40b4c7e8","40c1ff06","4152ce7a","40c05c6e","408eee88","40ed05f6","4062ea0c","40a0250c","40c958ca","40c8a0f0","408be299","41064ad7","4117ccb7","4102c3c7","40586353","40d5d364","40bc4b98","4102b9b2","406e7c3a","40abbbdb","40617131","40c04019","40bd2dba","40d025df","402a196c","400b61c3","40ac0a68"],["40d3a289","41066eed","00000000","40932d6a","40cd2cb8","40a96a7f","40cab0fd","4105c6ae","4106add7","3fae3907","40e1b6c7","40a7d2fa","40f47864","40acedfc","40a22346","408d9248","40e72d89","40e03be6","40ea2960","40dec890","40cce94c","412cb53a","40e5aaf4","40897b1d","4096b23b","40e5dfdc","40893481","41054b15","40c16bf8","40aa61e8","408ce6f4","40f272f1","40917903","408dadeb","4092e017","405fb8ad","3e6ac988","40a0ac30","40c3b14f","408523ab","3fe33e88","40ed7e28","40bb06e5","40dbe88c","40b6f45f","4091e0ef","4012d54a","4107d7c7","40d6260c","4082983d"],["40d28192","4089b5ea","40932d6a","00000000","408e32dd","401699a4","3fde0e4d","40e2e4d2","40ce61d4","40bebbac","403d4230","409c425b","40c8940d","405be842","4071f0ce","40ac7318","40bef692","40821e39","40de98c1","40d4c1ba","40eb6f43","4130c7f3","40edd068","4091a090","409ed7ae","413c86a3","4091ad9c","40ff058c","40cffd4d","40acb382","40b74fd3","40fa9864","4089691a","3fbe40f8","40e96e56","410184e0","409a83b6","40b6693a","40b820b0","4095be72","40cbfd0c","40f0e25c","40781a15","40fa6e83","4047db7c","409a0662","4067a708","40dec2a0","40b5680a","40e3abbc"],["409147d8","40a43a12","40cd2cb8","408e32dd","00000000","4074be66","409e8d80","40a56b60","4080ac6f","40a19e76","408bf178","401d19ec","3fe984bf","3f80faef","3fad0c08","4041488e","40a4d2d8","4055cae9","4090e35c","4099389e","40aa3589","4109ed40","40a01b02","4007d656","40224491","411a601c","4007f06d","4094da34","40e7652d","403c539f","40817dc2","40ace2fe","3feeced1","403d453e","409bb8f1","40bebcb1","40d48304","404fbf0f","4054d696","40101219","40945d16","40a32cf6","3fb95e95","40b934c9","3fa9147c","4018a1fa","40a2e5e5","40a1492e","4089edf4","4095f656"],["40a73687","40a79f2d","40a96a7f","401699a4","4074be66","00000000","4082d065","40df4d1a","40ba8e2a","40d4f8c1","40a9edea","40886eb1","40b4c063","403440ee","404a497a","40424c8b","40bac187","405c951e","40cac517","40d31a59","40c02438","41131516","40d9fcbe","407b99cc","408b0404","413750f9","407bb3e4","40eb31e2","4084b07b","407bebcc","4081ffc0","40bf32aa","406b2adf","3f5de4a0","40d59aac","40f89e6c","40b0c0cb","4068805c","40a44d06","4081eac8","40ce3ed1","40dd0eb2","405072c1","40cf2378","40203428","408632b8","403fffb4","40db2ae8","40a19460","40cfd812"],["409afdff","402464ad","40cab0fd","3fde0e4d","409e8d80","4082d065","00000000","40ab613e","40debc78","40dd460a","3f9c7613","40a65ff0","40bf466a","407c9d89","4089530b","4091ff8f","408772ff","408b86f4","40b1e7ae","409d3e26","40b3ebb0","4138f545","40fe2b0c","40a1fb34","40af3252","41449bef","407f3f97","40e120de","4103c070","406a5fdd","40b2d90a","41057984","406eb692","404e27a2","40f03098","41099a2c","40d20749","407dcb4d","40c23e45","4083b0a1","40d004aa","40c97073","408c67ae","40c2eaf0","40885528","40aa6106","40ab5717","40a73f0c","4097e338","40d19dea"],["40a1fa90","40325dd0","4105c6ae","40e2e4d1","40a56b60","40df4d1b","40ab613e","00000000","40e59a56","40f0bd61","40d27ec3","409882d1","40dfcc90","40852ca4","407450bb","40c5922f","408e6f90","40928386","40a31c8d","40b7c615","40bae841","41315fee","40c634a8","4092d086","40a007a4","4141d2c9","4095496b","3fd6fe80","411b2545","40caa3ee","40e66baa","40fbc85a","409d8ded","40c39087","40ea9e4c","4106d106","410971d4","40c56092","407948f7","40995a41","40e37c01","3f7079a6","4093458d","40c9e781","408f3307","409b3658","4103e9e6","3e044640","409edfca","4088f520"],["40b544fc","40fe10a4","4106add7","40ce61d4","4080ac6f","40ba8e2a","40debc78","40e59a56","00000000","40e1cd6d","40cc2070","40651434","40bb0d9f","4040db66","4056e3f2","40a0d33e","40c8cffc","40eb91e4","4092e455","40a78ddd","40ce32ad","412a04bc","40d7f89c","40841a22","40915140","413a7797","4084272e","40d54d4a","4113ca13","40bda2de","40c1acb8","40ed11f6","4077c557","409ed196","40dbe7e8","40feeba8","410a58fd","40b3ed26","408e686f","40883804","40d48c0d","40e35bee","4024a993","40dd31ed","4054e82c","408c7ff4","40e314dc","40e17824","40e96702","40d6254e"],["40d187f3","41095a61","3fae3907","40bebbac","40a19e76","40d4f8c1","40dd460b","40f0bd62","40e1cd6c","00000000","40b62886","40788970","40dbffa6","40815fba","406d2a08","40b9208a","40e512f3","410026d9","40be9b1e","40b33a4e","40b89a42","4116ee18","40ba1cb2","403bd9b6","405647f1","4108b70f","403b4c7e","40df07e8","4095ddb6","40c0f116","40b87536","40c6e4ae","404bd583","40b93c2d","40866696","409b6a98","3fcb9238","40caa6ce","4098230d","40332ad2","3ed41604","40d92f1e","408f78a3","40c79982","408b661d","404ca55a","4069f1ce","40ec9b30","40cd03e1","405c9266"],["40c21b83","40729fb6","40e1b6c8","403d4230","408bf178","40a9edea","3f9c7613","40d27ec3","40cc2070","40b62886","00000000","407e84d7","40c652a8","40576579","406d6e05","40ac1848","40ae9083","40b2a479","408aca2a","406c4143","40db0934","412fa740","40e4b0ee","408f5f2b","409c9649","41310d2c","4031048d","40e2059c","41174f32","409c4d73","40ccf1c2","40f856ff","40207b88","408e3156","40c91312","40ec16d2","40e90d14","40a6032b","409b20c1","40392639","40a8e726","40eea0f7","4073974c","40daa428","406b723f","408adead","40d2749c","40ce5c91","40bf00bc","40aa8066"],["40832584","40cbf12c","40a7d2fa","409c425b","401d19ec","40886eb1","40a65ff0","409882d1","40651434","40788970","407e84d7","00000000","4088ee26","3fb938e8","3fe54a01","405d678a","4096b084","40b9726a","4004accd","402dffde","409c1335","4110f4ff","404add04","4023f552","403e638d","41182c1c","3f9b0094","40458662","40f574ab","408a0afc","408f8d40","40baf27c","3fbc129e","4059643a","409750f1","40ba54b1","40af2946","4081cdae","3f5ef2aa","3f8abd3c","405e06b0","40b13c75","3f80d542","40923064","3fe15275","4021f5be","40807bf7","409ca503","40994a06","40613931"],["4086c28d","40bb8b82","40f47864","40c8940c","3fe984bf","40b4c062","40bf466a","40dfcc8f","40bb0d9e","40dbffa5","40c652a8","4088ee26","00000000","40353fd7","404b4863","404dcc39","409a4d8d","40a546a4","40cb448c","40d399cd","409fb03e","41271dd8","40da7c32","407c98b4","408b8378","413790b3","407cb2cd","40cf3b64","4110e32f","40142cf8","4087bf97","40e7442e","406c29c8","409903ce","40d61a20","40f91de0","40ed2218","40279868","40a4cc7b","40826a3c","40cebe45","40dd8e26","405171aa","40aeaf7e","40494c9d","4086b22c","40cb3be6","40dbaa5d","406bb540","40d05786"],["40621239","40b9d4c4","40acedfc","405be842","3f80faef","403440ee","407c9d89","40852ca4","4040db66","40815fba","40576579","3fb938e8","40353fd7","00000000","3eb04463","4000cb16","4084941c","408b2430","40614940","4071f3c4","4089f6ce","40f39bc5","407fb88c","3f8eb1bc","3fc38e33","410a40be","3f8ee5ec","4091116a","40c72672","403a6a57","40427e0b","408ca443","3f5ba7c4","3ff98f8c","4076f46a","409e7df5","40b44448","4026fee7","4014591e","3f9f2944","40683cb4","4082ee3b","3ee18e97","4098f60e","3ea06633","3fb04904","4082a729","40810a72","4088f950","406b6f35"],["40781ac5","40c4d90a","40a22346","4071f0ce","3fad0c08","404a497a","4089530b","407450bb","4056e3f2","406d2a08","406d6e06","3fe54a00","404b4864","3eb04463","00000000","4016d3a2","408f9862","40962876","407751cc","405beb37","4094fb14","40e8977e","4069b000","3f454146","3f977d1a","4104be9a","3fbaf705","409c15b0","40bc222b","405072e3","40588697","40819ffc","3f99e4fb","4012d052","4060ebde","409379af","40a97992","403d0773","402a61aa","3fcb3a5d","4052a748","406fd3e9","3f48e97d","40a3fa54","3f28554b","3f8437eb","408dab6f","406c0c57","4087bf2f","4080bbe1"],["400c2084","407e9724","408d9248","40ac7318","4041488e","40424c8b","4091ff8f","40c5922e","40a0d33e","40b9208a","40ac1848","405d678a","404dcc39","4000cb16","4016d3a2","00000000","40333684","4077bb2c","40b10a2b","40b95f6c","403dfbe6","411a00a8","40c041d1","404823f4","4062922f","412a7383","40483e0c","40d176f6","40e5d6c0","3f667d04","3f8365ea","40cd09ce","4037b507","4079c5b3","40bbdfc0","40dee380","40863bfc","3f18cf44","408a921a","40505fb8","40b483e5","40c353c6","401cfce9","405bfa65","4014d7dc","4058ef98","4048ab93","40c16ffc","4011278a","40a94f02"],["3f1c5800","3fd502a1","40e72d8a","40bef692","40a4d2d8","40bac187","408772ff","408e6f90","40c8cffc","40e512f3","40ae9084","4096b084","409a4d8d","4084941c","408f9862","40333683","00000000","405d2a8c","408b51ef","409ffb77","3fb1e2c4","40fb0fa4","40fb5a2c","40a8408b","40b577a9","414c8acb","40a84d96","40c42f30","40b7c54f","40206e22","4074e978","40941822","40a00914","40c12341","41000728","41118908","40dfd73e","400d02b2","40b1ca00","40ac5e6c","40d7d193","40ac7ec5","406cf666","3feddfc3","408e9a7f","40b0a65d","40bdf10b","408a4d5e","4075e314","406d9380"],["40822046","3fe55278","40e03be6","40821e39","4055cae9","405c951e","408b86f4","40928386","40eb91e2","410026d9","40b2a479","40b9726a","40a546a4","408b2430","40962876","4077bb2b","405d2a8c","00000000","40f9e735","40f7ae4a","409b0df7","4134d275","40fe90ae","40a260d7","40af97f5","41499af2","40adf55e","40c84326","40f2fb0a","403e1bea","409cb710","410156b4","40a69928","40251bf6","40fa2e9d","410e992f","40e79232","4051875a","40d550bf","40a9e488","40f30c52","40b092bb","40993d19","40aa0d37","4086eb7b","40aac6a9","4096d141","408e6154","3fcd2743","40e55f06"],["406f8ddd","40c09296","40ea2960","40de98c1","4090e35c","40cac517","40b1e7af","40a31c8d","4092e455","40be9b1e","408aca2a","4004accd","40cb448c","40614941","407751cd","40b10a2c","408b51ee","40f9e734","00000000","3f254c42","403db27b","410fbc0a","4060107c","4053edf5","40397fba","412d6603","40522d17","405ab9da","40cc275c","40b47300","40d1e3a6","40b88093","4062b61c","40af0883","40c1c4c0","40e4c880","40f17fac","40aabd48","3f99e045","404a0b6b","40b159be","40c12bc2","4045176e","401fb3fc","40755607","4064b999","40c2d25e","40a73ebf","40d90e00","40a92a4c"],["408c7076","40d53c1e","40dec890","40d4c1b9","4099389d","40d31a58","409d3e26","40b7c615","40a78ddd","40b33a4e","406c4143","402dffde","40d399cd","4071f3c2","405beb36","40b95f6c","409ffb76","40f7ae49","3f254c42","00000000","4067058b","41056746","4084b1c6","402a9ae5","40102caa","4123113f","407b8028","40820675","40de593a","40c91c87","40da38e6","40a3d70b","40860496","40b75dc4","40ad1b38","40d01ef8","40e61edc","40bf66cf","3fec8666","40735e7c","40a5f8ee","40d5d54a","406e6a7f","4049070c","40830044","403b6689","40d77be6","40bbe847","40c46478","40bdd3d4"],["3f476d88","404372b2","40cce94c","40eb6f43","40aa3589","40c02438","40b3ebb0","40bae841","40ce32ae","40b89a42","40db0935","409c1334","409fb03e","4089f6cd","4094fb13","403dfbe5","3fb1e2c4","409b0df7","403db27b","4067058c","00000000","4113c42a","40cee17c","40ada33c","40bada5a","414f3c24","409c4f2e","40cc362a","408b4c9e","402b3384","407faeda","40c090d3","40a493b0","40c85ab0","4102b881","41143a61","40d43f98","4017c814","4085514f","40983e58","40ab58e2","409d4152","4077bbc8","3eeff3fb","4093fd30","40b6090e","40c353bc","40b6c60f","40815de6","4014a21e"],["41074d52","41182826","412cb539","4130c7f3","4109ed40","41131516","4138f545","41315fee","412a04bc","4116ee18","412fa741","4110f4ff","41271dd8","40f39bc5","40e8977f","411a00a8","40fb0fa4","4134d275","410fbc0a","41056746","4113c42a","00000000","4108d879","40cfef56","40c2b838","41606231","410558c7","41425698","40a179b1","4123c04c","412a6d65","404def04","4107885f","4118ffd4","4113de8e","4125606e","4130605f","411ee570","411ee42a","4103505c","41104d68","41298fb9","4100da57","410ee388","40fda228","40d85528","413b2177","412f4ed5","411f832e","40e83987"],["40e7cf2d","41087bdf","40e5aaf4","40edd067","40a01b02","40d9fcbd","40fe2b0a","40c634a8","40d7f89c","40ba1cb2","40e4b0ed","404add04","40da7c32","407fb88c","4069b000","40c041d1","40fb5a2d","40fe90ae","4060107c","4084b1c6","40cee17c","4108d879","00000000","40385fae","401df173","41268272","408c2ea7","40907508","40e53b9f","40d3c11a","40e11b4c","40aab970","40947329","40be4029","40b3fd9d","40d7015d","40ed0140","40ca0b62","40132059","40881dd1","40acdb52","40e443dd","4085a3d2","40bfe23c","4089e2a9","40492b52","40e5ea79","40ca56da","40cb46dd","40d60b1a"],["4094b58c","40b4c7e8","40897b1d","4091a090","4007d656","407b99cc","40a1fb34","4092d086","40841a22","403bd9b6","408f5f2c","4023f552","407c98b6","3f8eb1bc","3f454146","404823f4","40a8408c","40a260d7","4053edf6","402a9ae5","40ada33d","40cfef56","40385fae","00000000","3ed371db","40f0d50c","3feb08e1","40b4bdda","40a37a03","406f2285","4084eb74","4051efa7","3ffc859e","404420a4","402f9b8c","4075a30c","4090d169","405bb715","405bb1fc","3fdac589","402156f6","4090921d","3fc71562","40b9d0f9","3fb6cb49","3e865d1f","40a65398","408eae54","405e2e0c","40849eac"],["40a1eca9","40c1ff05","4096b23b","409ed7ae","40224491","408b0404","40af3251","40a007a4","40915140","405647f2","409c9649","403e638e","408b8378","3fc38e33","3f977d1a","40629230","40b577a9","40af97f4","40397fba","40102caa","40bada5a","40c2b838","401df173","3ed371db","00000000","40fe0c2a","400ff2ac","40c1f4f8","409642e5","4084c860","40922292","4037816c","4018b10a","405e8ee0","404a09c7","408808a4","409e0887","40762550","40762038","4007d100","403bc531","409dc93b","3ffbf1d9","40ac99db","3feba7c0","3f2ce77d","40b38ab6","409be572","40789c47","4091d5ca"],["4142c54c","4152ce7a","40e5dfdc","413c86a3","411a601b","413750f9","41449bee","4141d2c9","413a7797","4108b70f","41310d2c","41182c1c","413790b3","410a40bd","4104be9a","412a7382","414c8acc","41499af1","412d6604","41231140","414f3c24","41606231","41268272","40f0d50c","40fe0c2a","00000000","4104cc09","41498db5","414a2788","41343327","412cd0ee","412ce670","4108ee4a","412972af","40990746","406c070c","40ed3628","412f584b","41261b47","4106d474","410f57bf","4140b394","41114d32","41555303","410f43ef","40f93ade","410b12c7","413fc1b0","412ff609","412dcb19"],["4094c298","40c05c6e","40893481","4091ad9c","4007f06e","407bb3e4","407f3f96","4095496b","4084272e","403b4c7e","4031048d","3f9b0094","407cb2ce","3f8ee5ec","3fbaf705","40483e0c","40a84d98","40adf55e","40522d16","407b8026","409c4f2e","410558c7","408c2ea6","3feb08e1","400ff2ac","4104cc09","00000000","40898356","40d90135","4056d907","4084f880","40a3ba0c","3e844827","40443abc","40612198","4093948c","40908acd","406a4477","40053cf4","3e021abe","4020c9be","40a6a7b6","3fc74992","40ab4e6e","3fb6ff79","3fc97199","40a660a4","40912739","4075571a","4023fc3f"],["40d7ba30","408eee88","41054b15","40ff058c","4094da34","40eb31e2","40e120de","3fd6fe80","40d54d4c","40df07e9","40e2059c","40458662","40cf3b64","4091116b","409c15b1","40d176f6","40c42f30","40c84326","405ab9da","40820675","40cc362b","41425698","40907508","40b4bdda","40c1f4f8","41498db4","40898356","00000000","411cc224","40ecce2e","40f25070","410edad7","4091c7d8","40cf754e","40fa1422","410e8bf1","4108f63b","40e490de","400dc9b7","40857280","40d1c689","40279daa","4082f882","40bd36eb","409b17ce","40b3be10","40e33f28","3fe78748","40d49f6a","40beb4c0"],["40a43a4f","40ed05f7","40c16bf8","40cffd4d","40e7652e","4084b07b","4103c070","411b2545","4113ca12","4095ddb6","41174f32","40f574ac","4110e32f","40c72672","40bc222c","40e5d6c0","40b7c54f","40f2fb0a","40cc275c","40de593a","408b4c9e","40a179b1","40e53b9e","40a37a03","409642e5","414a2788","40d90135","411cc224","00000000","40e0e660","4103581d","3fea08bd","40e145b7","40a06d0f","40fb47c9","410f25c5","40c8c244","40d730a8","40f29f6d","40d4f05f","40889c56","41135510","40d53f5b","40789abc","40d12cd5","40abdfd5","40e4b055","4119142c","41065542","40bbc434"],["3ff2b045","4062ea0c","40aa61e8","40acb382","403c539f","407bebcc","406a5fdd","40caa3ee","40bda2de","40c0f116","409c4d73","408a0afc","40142cf8","403a6a57","405072e3","3f667d04","40206e22","403e1bea","40b47300","40c91c88","402b3384","4123c04c","40d3c11a","406f2285","4084c860","41343327","4056d907","40ecce2c","40e0e660","00000000","3ff6a46c","40e08916","4067620c","4099b27a","40cf5f08","40f262c8","40a30b9c","3e9b5b7f","40a5e951","404eb75b","40b3afb6","40e02366","40569c2a","40493203","404e771d","407fee29","4081256a","40c681bc","3faf1091","409fead1"],["404dd378","40a0250c","408ce6f4","40b74fd3","40817dc1","4081ffc0","40b2d90a","40e66ba9","40c1acb8","40b87536","40ccf1c2","408f8d40","4087bf97","40427e0b","40588697","3f8365ea","4074e978","409cb710","40d1e3a6","40da38e7","407faeda","412a6d65","40e11b4c","4084eb74","40922292","412cd0ee","4084f880","40f25070","4103581e","3ff6a46c","00000000","40ede348","407967fc","4087bf95","40c09a96","40e39e56","40943d40","3fcfcd8c","40ab6b95","40890956","40c5b696","40e42d40","405eafde","408ed6ad","40568ad1","408d5146","4006f89e","40e24977","4052da7e","40ca287c"],["40a7a322","40c958ca","40f272f0","40fa9863","40ace2fe","40bf32aa","41057983","40fbc85a","40ed11f4","40c6e4ae","40f856fe","40baf27c","40e7442e","408ca442","40819ffc","40cd09cd","40941822","410156b4","40b88093","40a3d70b","40c090d3","404def04","40aab970","4051efa7","4037816c","412ce670","40a3ba0c","410edad6","3fea08bd","40e08916","40ede348","00000000","40a8193a","40cb0825","40c0c59a","40e3c95a","40f9c93c","40d6d35e","40d6d0d1","409fa936","40b9a34e","40ec27f0","409abd2b","40b6cf8d","4096aaa5","4062bb4b","4107a5b6","40f7a628","40d80eda","40814205"],["408c7e15","40c8a0f0","40917904","4089691a","3feeced1","406b2adf","406eb692","409d8ded","4077c557","404bd584","40207b88","3fbc129e","406c29c8","3f5ba7c4","3f99e4fb","4037b507","40a00915","40a69929","4062b61c","40860496","40a493b1","4107885e","4094732a","3ffc859e","4018b10a","4108ee4a","3e844827","4091c7d8","40e145b8","4067620c","407967fc","40a8193b","00000000","4033b1b7","4071aa9d","409bd90f","4098cf50","405de8d8","4015c5fa","3ec55586","403152c3","409e6333","3fa63788","40b392f1","3f95ed6f","3fea83a2","409e1c22","40996bbb","4082f00f","40348544"],["40af6d00","408be299","408dadeb","3fbe40f8","403d453e","3f5de4a0","404e27a2","40c39086","409ed196","40b93c2d","408e3156","4059643a","409903cf","3ff98f8c","4012d052","4079c5b3","40c12341","40251bf6","40af0883","40b75dc4","40c85ab1","4118ffd4","40be4029","404420a4","405e8edf","412972af","40443abc","40cf754e","40a06d0f","4099b27a","4087bf95","40cb0826","4033b1b7","00000000","40b9de18","40dce1d8","40950437","408ffcc2","40889072","404c5c68","40b2823d","40c1521e","4018f999","40d759f1","3fd175ff","4054ec48","4008868c","40bf6e54","4085d7cc","40b41b7e"],["40ec8351","41064ad7","4092e017","40e96e56","409bb8f1","40d59aac","40f03097","40ea9e4c","40dbe7e8","40866696","40c91312","409750f1","40d61a21","4076f46a","4060ebde","40bbdfc0","41000728","40fa2e9d","40c1c4c0","40ad1b38","4102b881","4113de8e","40b3fd9d","402f9b8c","404a09c7","40990746","40612198","40fa1422","40fb47c9","40cf5f08","40c09a96","40c0c59a","4071aa9d","40b9de18","00000000","3f8c0f01","409a3663","40c5a950","40b32f46","40694344","4093a7f6","40e85fe4","4089931e","4108cf5f","40858098","40406730","407a3c8f","40e67c1a","40c6e4cc","40c28eec"],["4107c388","4117ccb7","405fb8ad","410184e0","40bebcb1","40f89e6c","41099a2b","4106d106","40feeba8","409b6a98","40ec16d2","40ba54b1","40f91de1","409e7df5","409379af","40dee380","41118908","410e992e","40e4c881","40d01ef9","41143a60","4125606e","40d7015e","4075a30c","408808a4","406c070c","4093948c","410e8bf1","410f25c5","40f262c8","40e39e57","40e3c95a","409bd90e","40dce1d8","3f8c0f01","00000000","406e6546","40e8ad10","40d63306","4097a562","40a8abf8","4105b1d2","40ac96de","411a5140","40a88458","40833758","40a02208","4104bfed","40e9e88c","40e592ac"],["40cc4c3d","4102c3c7","3e6ac988","409a83b6","40d48304","40b0c0cb","40d20749","410971d4","410a58fd","3fcb9238","40e90d13","40af2946","40ed2218","40b44448","40a97992","40863bfc","40dfd73d","40e79232","40f17fac","40e61edc","40d43f98","41306060","40ed0140","4090d169","409e0887","40ed3629","40908acd","4108f63b","40c8c244","40a30b9c","40943d40","40f9c93d","4098cf4f","40950437","409a3663","406e6546","00000000","409955e4","40cb079b","408c79f7","40004bdc","40f4d474","40c25d31","40e33ed8","40be4aab","4099373b","402181e2","410b82ed","40cecfc0","4089ee89"],["3fcbd965","40586353","40a0ac30","40b6693a","404fbf0f","4068805c","407dcb4d","40c56092","40b3ed26","40caa6ce","40a6032b","4081cdae","40279868","4026fee7","403d0773","3f18cf44","400d02b2","4051875a","40aabd48","40bf66d0","4017c814","411ee570","40ca0b62","405bb715","40762550","412f584b","406a4477","40e490de","40d730a8","3e9b5b7f","3fcfcd8c","40d6d35e","405de8d8","408ffcc2","40c5a950","40e8ad10","409955e4","00000000","409dac03","406222cb","40bd656e","40d66dae","404330ba","4035c693","403b0bad","406c82b9","406edf64","40c13e60","3fd5e771","40963519"],["409e3f00","40d5d364","40c3b14f","40b820b0","4054d696","40a44d06","40c23e45","407948f7","408e686f","4098230d","409b20c0","3f5ef2aa","40a4cc7b","4014591e","402a61aa","408a921a","40b1ca00","40d550c0","3f99e045","3fec8666","4085514f","411ee42a","40132059","405bb1fc","40762037","41261b46","40053cf4","400dc9b7","40f29f6d","40a5e952","40ab6b94","40d6d0d2","4015c5f9","40889072","40b32f46","40d63306","40cb079b","409dac02","00000000","3ffa3691","408ae1ad","409ab3b0","3ff04e97","406ca41e","402865e4","4059b269","409c5a4c","4080c6ae","40b5285b","408c7aee"],["4098d36e","40bc4b98","408523ab","4095be72","4010121a","4081eac8","4083b0a1","40995a41","40883804","40332ad2","40392639","3f8abd3c","40826a3d","3f9f2944","3fcb3a5d","40505fb8","40ac5e6e","40a9e488","404a0b6b","40735e7c","40983e58","4103505c","40881dd1","3fdac589","4007d100","4106d474","3e021abe","40857280","40d4f05f","404eb75b","40890956","409fa936","3ec55586","404c5c68","40694344","4097a562","408c79f7","406222cb","3ffa3691","00000000","4018a812","40aab88c","3fd78cea","40a73d98","3fc742d1","3fb92e41","40a32b46","4095380f","406d356e","401bda93"],["40c44693","4102b9b1","3fe33e88","40cbfd0c","40945d16","40ce3ed1","40d004ab","40e37c02","40d48c0c","3ed41604","40a8e726","405e06b0","40cebe46","40683cb4","4052a748","40b483e5","40d7d193","40f30c52","40b159be","40a5f8ee","40ab58e2","41104d68","40acdb52","402156f6","403bc531","410f57bf","4020c9be","40d1c688","40889c56","40b3afb6","40c5b696","40b9a34e","403152c3","40b2823d","4093a7f6","40a8abf8","40004bdc","40bd656e","408ae1ad","4018a812","00000000","40cbedbe","40823743","40ba5822","407c497a","4032229a","40823a47","40df59d0","40bfc281","40420fa6"],["40b62f03","406e7c3a","40ed7e28","40f0e25c","40a32cf7","40dd0eb2","40c97074","3f7079a6","40e35bee","40d92f1e","40eea0f8","40b13c74","40dd8e27","4082ee3b","406fd3e9","40c353c6","40ac7ec5","40b092bb","40c12bc1","40d5d549","409d4152","41298fb9","40e443dc","4090921d","409dc93b","4140b395","40a6a7b6","40279daa","41135510","40e02366","40e42d40","40ec27f0","409e6334","40c1521e","40e85fe3","4105b1d2","40f4d474","40d66dae","409ab3b0","40aab88c","40cbedbe","00000000","40910724","40ac4092","408cf49e","4098f7ef","4102cab2","3f88c59b","40bceefe","4055cbd6"],["4045e066","40abbbdb","40bb06e6","40781a15","3fb95e95","405072c1","408c67ae","4093458d","4024a993","408f78a4","4073974c","3f80d542","405171aa","3ee18e97","3f48e97d","401cfce9","406cf666","40993d1a","4045176e","406e6a7e","4077bbc8","4100da57","4085a3d2","3fc71562","3ffbf1d9","41114d32","3fc74992","4082f881","40d53f5b","40569c2a","405eafde","409abd2c","3fa63788","4018f999","4089931e","40ac96de","40c25d32","404330ba","3ff04e97","3fd78cea","40823744","40910724","00000000","408add24","3f40fa65","3fe8acaa","4090c012","408f235b","40971239","4083d084"],["3f9fb3c3","40617132","40dbe88c","40fa6e83","40b934c9","40cf2378","40c2eaf0","40c9e781","40dd31ee","40c79982","40daa428","40923064","40aeaf7e","4098f60d","40a3fa53","405bfa65","3feddfc3","40aa0d37","401fb3fc","4049070c","3eeff3fb","410ee388","40bfe23c","40b9d0f9","40ac99db","41555303","40ab4e6e","40bd36ea","40789abc","40493204","408ed6ad","40b6cf8d","40b392f0","40d759f0","4108cf60","411a5140","40e33ed8","4035c694","406ca41e","40a73d98","40ba5822","40ac4092","408add24","00000000","40a2fc70","40c236cb","40d252fc","40c5c54f","40905d26","4032a09d"],["40761eff","40c04019","40b6f45f","4047db7c","3fa9147c","40203428","40885528","408f3307","4054e82c","408b661d","406b7240","3fe15274","40494c9e","3ea06633","3f28554b","4014d7dc","408e9a80","4086eb7b","40755606","40830045","4093fd30","40fda228","4089e2a9","3fb6cb48","3feba7bf","410f43ef","3fb6ff79","409b17ce","40d12cd5","404e771d","40568ad1","4096aaa6","3f95ed6f","3fd175ff","40858098","40a88458","40be4aab","403b0bad","402865e4","3fc742d1","407c497a","408cf49e","3f40fa65","40a2fc70","00000000","3fd86290","4071418c","408b10d5","4092ffb3","407f7bfc"],["409d1b5e","40bd2dba","4091e0ef","409a0662","4018a1fa","408632b8","40aa6106","409b3658","408c7ff4","404ca55a","408adead","4021f5be","4086b22d","3fb04904","3f8437eb","4058ef98","40b0a65e","40aac6a9","4064b99a","403b6689","40b6090f","40d85528","40492b52","3e865d1f","3f2ce77d","40f93ade","3fc97199","40b3be10","40abdfd5","407fee29","408d5146","4062bb4b","3fea83a3","4054ec48","40406730","40833758","4099373b","406c82b9","4059b268","3fb92e41","4032229a","4098f7ef","3fe8acaa","40c236cb","3fd86291","00000000","40aeb96a","40971426","406ef9b0","407871b4"],["40aa660b","40d025df","4012d54a","4067a708","40a2e5e5","403fffb4","40ab5717","4103e9e6","40e314dc","4069f1ce","40d2749c","40807bf7","40cb3be6","4082a729","408dab6f","4048ab93","40bdf10b","4096d141","40c2d25d","40d77be5","40c353bc","413b2177","40e5ea78","40a65398","40b38ab6","410b12c7","40a660a4","40e33f28","40e4b055","4081256a","4006f89e","4107a5b6","409e1c22","4008868c","407a3c8f","40a02208","402181e2","406edf64","409c5a4c","40a32b46","40823a47","4102cab2","4090c012","40d252fc","4071418c","40aeb96a","00000000","4101d8cd","40ace98e","40cc02e2"],["409dd85e","402a196c","4107d7c8","40dec29f","40a1492e","40db2ae9","40a73f0c","3e044640","40e17824","40ec9b2f","40ce5c91","409ca503","40dbaa5e","40810a72","406c0c57","40c16ffd","408a4d5e","408e6154","40a73ebf","40bbe847","40b6c60f","412f4ed5","40ca56da","408eae54","409be572","413fc1b0","40912739","3fe78748","4119142c","40c681bc","40e24978","40f7a628","40996bbb","40bf6e55","40e67c1a","4104bfed","410b82ee","40c13e60","4080c6ae","4095380f","40df59cf","3f88c59b","408f235b","40c5c54f","408b10d5","40971426","4101d8ce","00000000","409abd98","408d1752"],["4050e06b","400b61c3","40d6260d","40b5680a","4089edf4","40a19460","4097e338","409edfca","40e96702","40cd03e1","40bf00bd","40994a06","406bb540","4088f950","4087bf2f","4011278a","4075e314","3fcd2743","40d90e00","40c46478","40815de6","411f832e","40cb46dd","405e2e0c","40789c47","412ff609","4075571a","40d49f6a","41065542","3faf1091","4052da7f","40d80eda","4082f00f","4085d7cc","40c6e4cc","40e9e88c","40cecfc1","3fd5e771","40b5285b","406d356e","40bfc281","40bceeff","40971239","40905d26","4092ffb3","406ef9b0","40ace98e","409abd98","00000000","40c48800"],["40467d80","40ac0a68","4082983d","40e3abbb","4095f656","40cfd811","40d19deb","4088f520","40d6254e","405c9266","40aa8066","40613931","40d05786","406b6f35","4080bbe1","40a94f02","406d9380","40e55f06","40a92a4c","40bdd3d4","4014a21e","40e83987","40d60b1a","40849eac","4091d5ca","412dcb19","4023fc3f","40beb4c0","40bbc434","409fead1","40ca287c","40814205","40348544","40b41b7d","40c28eec","40e592ac","4089ee89","40963519","408c7aee","401bda93","40420fa6","4055cbd6","4083d084","4032a09d","407f7bfb","407871b4","40cc02e2","408d1752","40c48800","00000000"]]},
|
|
16
|
+
r5: {"n":25,"rows":[{"edges":[0,3],"ewgts":[0,3.9199373722076416]},{"edges":[1],"ewgts":[0]},{"edges":[2,18,17,9],"ewgts":[0,5.021393775939941,1.7459399700164795,2.1801998615264893]},{"edges":[3,0,23],"ewgts":[0,3.9199373722076416,4.35283899307251]},{"edges":[4,13],"ewgts":[0,2.3971364498138428]},{"edges":[5],"ewgts":[0]},{"edges":[6,9],"ewgts":[0,5.078029632568359]},{"edges":[7,23,11],"ewgts":[0,0.6949235200881958,3.4458720684051514]},{"edges":[8],"ewgts":[0]},{"edges":[9,6,2],"ewgts":[0,5.078029632568359,2.1801998615264893]},{"edges":[10,20,14,15],"ewgts":[0,1.060785174369812,0.5572922229766846,2.9808664321899414]},{"edges":[11,7],"ewgts":[0,3.4458720684051514]},{"edges":[12],"ewgts":[0]},{"edges":[13,23,4],"ewgts":[0,4.583548545837402,2.3971364498138428]},{"edges":[14,10],"ewgts":[0,0.5572922229766846]},{"edges":[15,10],"ewgts":[0,2.9808664321899414]},{"edges":[16],"ewgts":[0]},{"edges":[17,18,2],"ewgts":[0,1.7297555208206177,1.7459399700164795]},{"edges":[18,2,24,17],"ewgts":[0,5.021393775939941,4.9747467041015625,1.7297555208206177]},{"edges":[19],"ewgts":[0]},{"edges":[20,10],"ewgts":[0,1.060785174369812]},{"edges":[21],"ewgts":[0]},{"edges":[22],"ewgts":[0]},{"edges":[23,13,3,7],"ewgts":[0,4.583548545837402,4.35283899307251,0.6949235200881958]},{"edges":[24,18],"ewgts":[0,4.9747467041015625]}],"expected":[["00000000","7f7fffff","7f7fffff","407ae041","41740e2e","7f7fffff","7f7fffff","410f7bb3","7f7fffff","7f7fffff","7f7fffff","41469dfe","7f7fffff","414db382","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","41045d4b","7f7fffff"],["7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff"],["7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","40e8436a","7f7fffff","7f7fffff","400b8865","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","3fdf7af6","405e71cc","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","41073503"],["407ae041","7f7fffff","7f7fffff","00000000","4135561e","7f7fffff","7f7fffff","40a18745","7f7fffff","7f7fffff","7f7fffff","4107e5ed","7f7fffff","410efb72","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","408b4a75","7f7fffff"],["41740e2e","7f7fffff","7f7fffff","4135561e","00000000","7f7fffff","7f7fffff","40f59e96","7f7fffff","7f7fffff","7f7fffff","4131f196","7f7fffff","40196aaf","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","40df61c6","7f7fffff"],["7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff"],["7f7fffff","7f7fffff","40e8436a","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","40a27f38","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","41101114","412bbe28","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","417b56b8"],["410f7bb3","7f7fffff","7f7fffff","40a18745","40f59e96","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","405c892b","7f7fffff","40a8e93e","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","3f31e682","7f7fffff"],["7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff"],["7f7fffff","7f7fffff","400b8865","7f7fffff","7f7fffff","7f7fffff","40a27f38","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","407b45e0","40b4fd18","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","412a171c"],["7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","3f0eaab4","403ec684","7f7fffff","7f7fffff","7f7fffff","7f7fffff","3f87c7cf","7f7fffff","7f7fffff","7f7fffff","7f7fffff"],["41469dfe","7f7fffff","7f7fffff","4107e5ee","4131f196","7f7fffff","7f7fffff","405c892b","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff","410b96ea","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","40848166","7f7fffff"],["7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff"],["414db382","7f7fffff","7f7fffff","410efb72","40196aaf","7f7fffff","7f7fffff","40a8e93e","7f7fffff","7f7fffff","7f7fffff","410b96ea","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","4092ac6e","7f7fffff"],["7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","3f0eaab4","7f7fffff","7f7fffff","7f7fffff","00000000","40627131","7f7fffff","7f7fffff","7f7fffff","7f7fffff","3fcf1d29","7f7fffff","7f7fffff","7f7fffff","7f7fffff"],["7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","403ec684","7f7fffff","7f7fffff","7f7fffff","40627131","00000000","7f7fffff","7f7fffff","7f7fffff","7f7fffff","40815536","7f7fffff","7f7fffff","7f7fffff","7f7fffff"],["7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff"],["7f7fffff","7f7fffff","3fdf7af6","7f7fffff","7f7fffff","7f7fffff","41101114","7f7fffff","7f7fffff","407b45e0","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000","3fdd68a1","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","40d68b48"],["7f7fffff","7f7fffff","405e71cc","7f7fffff","7f7fffff","7f7fffff","412bbe28","7f7fffff","7f7fffff","40b4fd18","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","3fdd68a1","00000000","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","409f3120"],["7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff"],["7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","3f87c7cf","7f7fffff","7f7fffff","7f7fffff","3fcf1d29","40815536","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff","7f7fffff"],["7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff","7f7fffff"],["7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff","7f7fffff"],["41045d4b","7f7fffff","7f7fffff","408b4a75","40df61c6","7f7fffff","7f7fffff","3f31e682","7f7fffff","7f7fffff","7f7fffff","40848166","7f7fffff","4092ac6e","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000","7f7fffff"],["7f7fffff","7f7fffff","41073503","7f7fffff","7f7fffff","7f7fffff","417b56b8","7f7fffff","7f7fffff","412a171c","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","40d68b48","409f3120","7f7fffff","7f7fffff","7f7fffff","7f7fffff","7f7fffff","00000000"]]},
|
|
17
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
digraph fsm {
|
|
2
|
+
node [fontsize=9];
|
|
3
|
+
edge [fontsize=9];
|
|
4
|
+
|
|
5
|
+
overlap=false;
|
|
6
|
+
|
|
7
|
+
splines=curved;
|
|
8
|
+
|
|
9
|
+
layout=neato;
|
|
10
|
+
nodesep=0.3;
|
|
11
|
+
model=mds;
|
|
12
|
+
mode="hier";
|
|
13
|
+
|
|
14
|
+
hidden [shape=point, style=invis];
|
|
15
|
+
|
|
16
|
+
hidden -> "power on" [len=0.2 tailport=_ headport=_];
|
|
17
|
+
"power on" -> "sign in" [label="critical\nsettings\nnot\nmissing" len=0.4];
|
|
18
|
+
"power on" -> "wait for\nbecoming\noffline" [label="critical\nsettings\nmissing" len=0.2];
|
|
19
|
+
"wait for\nbecoming\noffline" -> "critical\nsettings" [label="we are\noffline" len=0.3];
|
|
20
|
+
"critical\nsettings" -> "critical\nsettings" [label="incorrect\ninput" tailport=e headport=e];
|
|
21
|
+
"critical\nsettings" -> "sign in" [label="correct\ninput" len=0.4];
|
|
22
|
+
"sign in" -> dashboard [label="correct\nsecrets"];
|
|
23
|
+
"sign in" -> "sign in" [label="incorrect\nsecrets" tailport=e headport=e];
|
|
24
|
+
dashboard -> settings [label="click\n\"Settings\""];
|
|
25
|
+
dashboard -> dashboard [label="correct\ninput" tailport=w headport=w];
|
|
26
|
+
dashboard -> dashboard [label="incorrect\ninput" tailport=e headport=e];
|
|
27
|
+
dashboard -> "sign in" [label="click\n\"Sign out\""];
|
|
28
|
+
settings -> settings [label="correct\ninput" tailport=w headport=w];
|
|
29
|
+
settings -> settings [label="incorrect\ninput" tailport=e headport=e];
|
|
30
|
+
settings -> dashboard [label="click\n\"Dashboard\""];
|
|
31
|
+
settings -> "sign in" [label="click\n\"Sign out\""];
|
|
32
|
+
settings -> "wait for\nbecoming\noffline" [label="complete\nwipe" len=1.6];
|
|
33
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
graph 1 8.3515 1.05
|
|
2
|
+
node hidden 0.025 0.45 0.05 0.05 hidden invis point black lightgrey
|
|
3
|
+
node "power on" 1.6893 0.45 0.81009 0.5 "power on" solid ellipse black lightgrey
|
|
4
|
+
node "sign in" 3.547 0.45 0.75 0.5 "sign in" solid ellipse black lightgrey
|
|
5
|
+
node "wait for\nbecoming\noffline" 0.66743 0.45 1.0114 0.79353 "wait for\nbecoming\noffline" solid ellipse black lightgrey
|
|
6
|
+
node "critical\nsettings" 2.6328 0.45 0.85444 0.5814 "critical\nsettings" solid ellipse black lightgrey
|
|
7
|
+
node dashboard 7.1703 0.45 0.86298 0.5 dashboard solid ellipse black lightgrey
|
|
8
|
+
node settings 5.8395 0.45 0.75 0.5 settings solid ellipse black lightgrey
|
|
9
|
+
edge hidden "power on" 4 0.053697 0.45 0.42937 0.45 0.51963 0.45 1.1202 0.45 solid black
|
|
10
|
+
edge "power on" "sign in" 4 2.1007 0.45 2.3079 0.45 2.5196 0.45 3.0139 0.45 "critical\nsettings\nnot\nmissing" 2.4384 0.75 solid black
|
|
11
|
+
edge "power on" "wait for\nbecoming\noffline" 4 1.281 0.45 1.2798 0.45 1.2786 0.45 1.2774 0.45 "critical\nsettings\nmissing" 1.3755 0.225 solid black
|
|
12
|
+
edge "sign in" "sign in" 7 3.9256 0.45 4.0239 0.60278 4.2276 0.60278 4.2276 0.45 4.2276 0.34735 4.1356 0.31367 4.0455 0.34896 "incorrect\nsecrets" 4.4497 0.45 solid black
|
|
13
|
+
edge "sign in" dashboard 4 3.9077 0.52203 4.538 0.57356 5.8447 0.57829 6.5992 0.53621 "correct\nsecrets" 5.1567 0.71457 solid black
|
|
14
|
+
edge "wait for\nbecoming\noffline" "critical\nsettings" 4 1.1757 0.45 1.3718 0.45 1.5964 0.45 2.0473 0.45 "we are\noffline" 1.526 0.6 solid black
|
|
15
|
+
edge "critical\nsettings" "sign in" 4 3.0661 0.45 3.068 0.45 3.0699 0.45 3.0718 0.45 "correct\ninput" 3.0711 0.3 solid black
|
|
16
|
+
edge "critical\nsettings" "critical\nsettings" 7 3.064 0.45 3.1619 0.60278 3.3656 0.60278 3.3656 0.45 3.3656 0.34735 3.2736 0.31367 3.1836 0.34896 "incorrect\ninput" 3.5876 0.45 solid black
|
|
17
|
+
edge dashboard "sign in" 4 6.7546 0.37371 6.0907 0.32509 4.7921 0.32277 4.0674 0.36673 "click\n\"Sign out\"" 5.1981 0.18543 solid black
|
|
18
|
+
edge dashboard dashboard 7 6.7347 0.45 6.6369 0.60278 6.4332 0.60278 6.4332 0.45 6.4332 0.34735 6.5252 0.31367 6.6152 0.34896 "correct\ninput" 6.2598 0.45 solid black
|
|
19
|
+
edge dashboard dashboard 7 7.6058 0.45 7.7036 0.60278 7.9073 0.60278 7.9073 0.45 7.9073 0.34735 7.8154 0.31367 7.7253 0.34896 "incorrect\ninput" 8.1294 0.45 solid black
|
|
20
|
+
edge dashboard settings 4 6.771 0.34398 6.6378 0.33495 6.4876 0.33306 6.3473 0.33832 "click\n\"Settings\"" 6.4809 0.18548 solid black
|
|
21
|
+
edge settings "sign in" 4 5.4598 0.45 4.6733 0.45 4.3676 0.45 4.085 0.45 "click\n\"Sign out\"" 4.322 0.6 solid black
|
|
22
|
+
edge settings "wait for\nbecoming\noffline" 4 5.4609 0.45 2.7727 0.45 2.2751 0.45 1.3323 0.45 "complete\nwipe" 2.5129 0.3 solid black
|
|
23
|
+
edge settings dashboard 4 6.1891 0.55225 6.3189 0.56321 6.4696 0.56686 6.6133 0.56322 "click\n\"Dashboard\"" 6.1624 0.71453 solid black
|
|
24
|
+
edge settings settings 7 5.4609 0.45 5.3626 0.60278 5.1589 0.60278 5.1589 0.45 5.1589 0.34735 5.2509 0.31367 5.341 0.34896 "correct\ninput" 4.9854 0.45 solid black
|
|
25
|
+
edge settings settings 7 6.218 0.45 6.3163 0.60278 6.52 0.60278 6.52 0.45 6.52 0.34735 6.4281 0.31367 6.3379 0.34896 "incorrect\ninput" 6.7421 0.45 solid black
|
|
26
|
+
stop
|