Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
W
wendelin.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Joshua
wendelin.core
Commits
f7abf2e6
Commit
f7abf2e6
authored
Dec 27, 2018
by
Kirill Smelkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
.
parent
aa2f3e0f
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
204 additions
and
161 deletions
+204
-161
wcfs/todo.dot
wcfs/todo.dot
+14
-7
wcfs/todo.svg
wcfs/todo.svg
+190
-154
No files found.
wcfs/todo.dot
View file @
f7abf2e6
...
@@ -25,6 +25,7 @@ digraph {
...
@@ -25,6 +25,7 @@ digraph {
wcfsInvProcess
->
zobj2file
;
wcfsInvProcess
->
zobj2file
;
wcfsInvProcess
->
δ
Ftail
;
wcfsInvProcess
->
δ
Ftail
;
wcfsInvProcess
->
fuseRetrieveCache
;
wcfsInvProcess
->
fuseRetrieveCache
;
wcfsInvProcess
->
_
wcfs_zhead
;
ZODB_go_inv
->
fs1_go_inv
;
ZODB_go_inv
->
fs1_go_inv
;
ZODB_go_inv
->
zeo_go_inv
;
ZODB_go_inv
->
zeo_go_inv
;
...
@@ -34,7 +35,7 @@ digraph {
...
@@ -34,7 +35,7 @@ digraph {
wcfsRead
->
blktabGet
;
wcfsRead
->
blktabGet
;
wcfsRead
->
δ
Ftail
;
wcfsRead
->
δ
Ftail
;
wcfsRead
->
mappingRegister
;
wcfsRead
->
mappingRegister
;
wcfsRead
->
head
Inv
;
wcfsRead
->
head
Watch
;
...
@@ -56,7 +57,10 @@ digraph {
...
@@ -56,7 +57,10 @@ digraph {
// client -> wcfs_spawn;
// client -> wcfs_spawn;
clientInvHandle
->
headInv
;
clientInvHandle
->
headWatch
;
headWatch
->
fileSock
;
_
wcfs_zhead
->
fileSock
;
// Btree_read -> ZODB_read;
// Btree_read -> ZODB_read;
// ZBlk_read -> ZODB_read;
// ZBlk_read -> ZODB_read;
...
@@ -68,14 +72,16 @@ digraph {
...
@@ -68,14 +72,16 @@ digraph {
nowcfs
[
label
=
"!wcfs mode"
]
nowcfs
[
label
=
"!wcfs mode"
]
wcfsInvProcess
[
label
=
"process\nZODB invalidations"
]
wcfsInvProcess
[
label
=
"process\nZODB invalidations"
]
zconnCacheGet
[
label
=
"z
con
n.Cache.Get"
,
style
=
filled
fillcolor
=
grey95
]
zconnCacheGet
[
label
=
"z
onn.\
n.Cache.Get"
,
style
=
filled
fillcolor
=
grey95
]
zobj2file
[
label
=
"Z* → file/[]#blk"
]
zobj2file
[
label
=
"Z* → file/[]#blk"
]
zblk2file
[
label
=
"ZBlk*
→
file/[]#blk"
,
style
=
filled
fillcolor
=
grey95
]
zblk2file
[
label
=
"ZBlk*
\n↓\n
file/[]#blk"
,
style
=
filled
fillcolor
=
grey95
]
zbtree2file
[
label
=
"BTree/Bucket
→
file/[]#blk"
]
zbtree2file
[
label
=
"BTree/Bucket
\n↓\n
file/[]#blk"
]
δ
BTree
[
label
=
"δ(BTree)"
]
δ
BTree
[
label
=
"δ(BTree)"
]
fuseRetrieveCache
[
label
=
"FUSE:\nretrieve cache"
,
style
=
filled
fillcolor
=
grey95
]
fuseRetrieveCache
[
label
=
"FUSE:\nretrieve cache"
,
style
=
filled
fillcolor
=
grey95
]
_
wcfs_zhead
[
label
=
".wcfs/\nzhead"
]
wcfsRead
[
label
=
"read(#blk)"
]
wcfsRead
[
label
=
"read(#blk)"
]
blktabGet
[
label
=
"blktab.Get(#blk):\nmanually + → ⌈rev(#blk)⌉"
]
blktabGet
[
label
=
"blktab.Get(#blk):\nmanually + → ⌈rev(#blk)⌉"
]
...
@@ -83,13 +89,14 @@ digraph {
...
@@ -83,13 +89,14 @@ digraph {
mappingRegister
[
label
=
"mmappings:\nregister/maint"
]
mappingRegister
[
label
=
"mmappings:\nregister/maint"
]
clientInvHandle
[
label
=
"process\n#blk invalidations"
]
clientInvHandle
[
label
=
"process\n#blk invalidations"
]
headInv
[
label
=
"#blk ← head/inv."
]
headWatch
[
label
=
"#blk ← head/watch"
]
fileSock
[
label
=
"FileSock"
]
ZODB_go_inv
[
label
=
"ZODB/go\ninvalidations"
]
ZODB_go_inv
[
label
=
"ZODB/go\ninvalidations"
]
fs1_go_inv
[
label
=
"fs1/go\ninvalidations"
,
style
=
filled
fillcolor
=
grey95
]
fs1_go_inv
[
label
=
"fs1/go\ninvalidations"
,
style
=
filled
fillcolor
=
grey95
]
zeo_go_inv
[
label
=
"zeo/go\ninvalidations"
]
zeo_go_inv
[
label
=
"zeo/go\ninvalidations"
]
neo_go_inv
[
label
=
"neo/go\ninvalidations"
]
neo_go_inv
[
label
=
"neo/go\ninvalidations"
]
zcache_go_inv
[
label
=
"ZCache/go\n
<-
watchq"
]
zcache_go_inv
[
label
=
"ZCache/go\n
←
watchq"
]
// Btree_read [label="BTree read", style=filled fillcolor=lightyellow]
// Btree_read [label="BTree read", style=filled fillcolor=lightyellow]
// ZBlk_read [label="ZBigFile / ZBlk* read", style=filled fillcolor=lightyellow]
// ZBlk_read [label="ZBigFile / ZBlk* read", style=filled fillcolor=lightyellow]
// ZODB_read [label="ZODB deserialize object", style=filled fillcolor=lightyellow]
// ZODB_read [label="ZODB deserialize object", style=filled fillcolor=lightyellow]
...
...
wcfs/todo.svg
View file @
f7abf2e6
...
@@ -4,329 +4,365 @@
...
@@ -4,329 +4,365 @@
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
-->
<!-- Title: %3 Pages: 1 -->
<!-- Title: %3 Pages: 1 -->
<svg
width=
"15
68pt"
height=
"403
pt"
<svg
width=
"15
56pt"
height=
"424
pt"
viewBox=
"0.00 0.00 15
68.46 402.96
"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
viewBox=
"0.00 0.00 15
56.26 424.17
"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<g
id=
"graph0"
class=
"graph"
transform=
"scale(1 1) rotate(0) translate(4
398.9605
)"
>
<g
id=
"graph0"
class=
"graph"
transform=
"scale(1 1) rotate(0) translate(4
420.1737
)"
>
<title>
%3
</title>
<title>
%3
</title>
<polygon
fill=
"#ffffff"
stroke=
"transparent"
points=
"-4,4 -4,-
398.9605 1564.4565,-398.9605 1564.4565
,4 -4,4"
/>
<polygon
fill=
"#ffffff"
stroke=
"transparent"
points=
"-4,4 -4,-
420.1737 1552.2584,-420.1737 1552.2584
,4 -4,4"
/>
<!-- wcfs -->
<!-- wcfs -->
<g
id=
"node1"
class=
"node"
>
<g
id=
"node1"
class=
"node"
>
<title>
wcfs
</title>
<title>
wcfs
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"9
47.8112"
cy=
"-368.0904
"
rx=
"27.0966"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"9
52.2046"
cy=
"-389.3036
"
rx=
"27.0966"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"9
47.8112"
y=
"-364.3904
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
wcfs
</text>
<text
text-anchor=
"middle"
x=
"9
52.2046"
y=
"-385.6036
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
wcfs
</text>
</g>
</g>
<!-- invProto -->
<!-- invProto -->
<g
id=
"node2"
class=
"node"
>
<g
id=
"node2"
class=
"node"
>
<title>
invProto
</title>
<title>
invProto
</title>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"11
04.8112"
cy=
"-368.0904
"
rx=
"78.4777"
ry=
"26.7407"
/>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"11
31.2046"
cy=
"-389.3036
"
rx=
"78.4777"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"11
04.8112"
y=
"-371.8904
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
open/invalidation
</text>
<text
text-anchor=
"middle"
x=
"11
31.2046"
y=
"-393.1036
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
open/invalidation
</text>
<text
text-anchor=
"middle"
x=
"11
04.8112"
y=
"-356.8904
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
protocol
</text>
<text
text-anchor=
"middle"
x=
"11
31.2046"
y=
"-378.1036
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
protocol
</text>
</g>
</g>
<!-- wcfs->invProto -->
<!-- wcfs->invProto -->
<g
id=
"edge1"
class=
"edge"
>
<g
id=
"edge1"
class=
"edge"
>
<title>
wcfs
->
invProto
</title>
<title>
wcfs
->
invProto
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M97
5.4088,-368.0904C988.9027,-368.0904 1002.3966,-368.0904 1015.8905,-368.0904
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M97
9.8237,-389.3036C1000.6589,-389.3036 1021.4941,-389.3036 1042.3293,-389.3036
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"10
16.2094,-371.5905 1026.2094,-368.0904 1016.2093,-364.5905 1016.2094,-371.5905
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"10
42.5575,-392.8037 1052.5575,-389.3036 1042.5575,-385.8037 1042.5575,-392.8037
"
/>
</g>
</g>
<!-- autoexit -->
<!-- autoexit -->
<g
id=
"node4"
class=
"node"
>
<g
id=
"node4"
class=
"node"
>
<title>
autoexit
</title>
<title>
autoexit
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"6
27.8112"
cy=
"-278.3503
"
rx=
"52.1524"
ry=
"26.7407"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"6
03.2046"
cy=
"-299.5635
"
rx=
"52.1524"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"6
27.8112"
y=
"-282.1503
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
autoexit
</text>
<text
text-anchor=
"middle"
x=
"6
03.2046"
y=
"-303.3635
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
autoexit
</text>
<text
text-anchor=
"middle"
x=
"6
27.8112"
y=
"-267.1503
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
if !activity
</text>
<text
text-anchor=
"middle"
x=
"6
03.2046"
y=
"-288.3635
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
if !activity
</text>
</g>
</g>
<!-- wcfs->autoexit -->
<!-- wcfs->autoexit -->
<g
id=
"edge3"
class=
"edge"
>
<g
id=
"edge3"
class=
"edge"
>
<title>
wcfs
->
autoexit
</title>
<title>
wcfs
->
autoexit
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M92
1.2727,-363.2609C873.8768,-354.2817 771.8618,-333.3454 688.8112,-305.2203 684.5656,-303.7826 680.2083,-302.1648 675.8702,-300.4543
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M92
5.5266,-385.3135C874.1202,-377.2254 758.1195,-357.0277 664.2046,-326.4335 659.9426,-325.0451 655.5739,-323.4617 651.2282,-321.7741
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"6
77.0355,-297.1493 666.4551,-296.5956 674.3809,-303.6265 677.0355,-297.1493
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"6
52.3843,-318.4661 641.8021,-317.9484 649.7518,-324.9523 652.3843,-318.4661
"
/>
</g>
</g>
<!-- wcfsInvProcess -->
<!-- wcfsInvProcess -->
<g
id=
"node5"
class=
"node"
>
<g
id=
"node5"
class=
"node"
>
<title>
wcfsInvProcess
</title>
<title>
wcfsInvProcess
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"7
87.8112"
cy=
"-278.3503
"
rx=
"89.6056"
ry=
"26.7407"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"7
63.2046"
cy=
"-299.5635
"
rx=
"89.6056"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"7
87.8112"
y=
"-282.1503
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
process
</text>
<text
text-anchor=
"middle"
x=
"7
63.2046"
y=
"-303.3635
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
process
</text>
<text
text-anchor=
"middle"
x=
"7
87.8112"
y=
"-267.1503
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZODB invalidations
</text>
<text
text-anchor=
"middle"
x=
"7
63.2046"
y=
"-288.3635
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZODB invalidations
</text>
</g>
</g>
<!-- wcfs->wcfsInvProcess -->
<!-- wcfs->wcfsInvProcess -->
<g
id=
"edge4"
class=
"edge"
>
<g
id=
"edge4"
class=
"edge"
>
<title>
wcfs
->
wcfsInvProcess
</title>
<title>
wcfs
->
wcfsInvProcess
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M92
6.894,-356.3585C904.7855,-343.9583 869.0751,-323.9292 839.3755,-307.271
5"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M92
9.7816,-378.6568C903.0093,-365.9449 857.2349,-344.2105 820.4374,-326.738
5"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"8
40.8071,-304.0615 830.3731,-302.2222 837.3827,-310.1668 840.8071,-304.0615
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"8
21.8272,-323.524 811.2926,-322.3964 818.8248,-329.8474 821.8272,-323.524
"
/>
</g>
</g>
<!-- wcfsRead -->
<!-- wcfsRead -->
<g
id=
"node6"
class=
"node"
>
<g
id=
"node6"
class=
"node"
>
<title>
wcfsRead
</title>
<title>
wcfsRead
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"11
19.8112"
cy=
"-278.3503
"
rx=
"47.3916"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"11
38.2046"
cy=
"-299.5635
"
rx=
"47.3916"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"11
19.8112"
y=
"-274.6503
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
read(#blk)
</text>
<text
text-anchor=
"middle"
x=
"11
38.2046"
y=
"-295.8635
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
read(#blk)
</text>
</g>
</g>
<!-- wcfs->wcfsRead -->
<!-- wcfs->wcfsRead -->
<g
id=
"edge5"
class=
"edge"
>
<g
id=
"edge5"
class=
"edge"
>
<title>
wcfs
->
wcfsRead
</title>
<title>
wcfs
->
wcfsRead
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M9
69.2473,-356.9062C997.6847,-342.0692 1048.3174,-315.6518 1082.9497,-297.5826
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M9
74.2716,-378.6568C1005.1432,-363.7621 1061.6893,-336.4801 1099.6147,-318.1821
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
084.5768,-300.6815 1091.8236,-292.9527 1081.3387,-294.4754 1084.5768,-300.6815
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
101.3429,-321.2344 1108.8286,-313.7367 1098.3011,-314.9298 1101.3429,-321.2344
"
/>
</g>
</g>
<!-- wcfsGC -->
<!-- wcfsGC -->
<g
id=
"node7"
class=
"node"
>
<g
id=
"node7"
class=
"node"
>
<title>
wcfsGC
</title>
<title>
wcfsGC
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"9
47.8112"
cy=
"-278.3503
"
rx=
"35.2113"
ry=
"26.7407"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"9
52.2046"
cy=
"-299.5635
"
rx=
"35.2113"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"9
47.8112"
y=
"-282.1503
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
GC
</text>
<text
text-anchor=
"middle"
x=
"9
52.2046"
y=
"-303.3635
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
GC
</text>
<text
text-anchor=
"middle"
x=
"9
47.8112"
y=
"-267.1503
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
@rev/
</text>
<text
text-anchor=
"middle"
x=
"9
52.2046"
y=
"-288.3635
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
@rev/
</text>
</g>
</g>
<!-- wcfs->wcfsGC -->
<!-- wcfs->wcfsGC -->
<g
id=
"edge6"
class=
"edge"
>
<g
id=
"edge6"
class=
"edge"
>
<title>
wcfs
->
wcfsGC
</title>
<title>
wcfs
->
wcfsGC
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M9
47.8112,-349.9302C947.8112,-340.0272 947.8112,-327.395 947.8112,-315.5075
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M9
52.2046,-371.1434C952.2046,-361.2404 952.2046,-348.6082 952.2046,-336.7207
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"95
1.3113,-315.3399 947.8112,-305.3399 944.3113,-315.34 951.3113,-315.3399
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"95
5.7047,-336.5531 952.2046,-326.5531 948.7047,-336.5532 955.7047,-336.5531
"
/>
</g>
</g>
<!-- client -->
<!-- client -->
<g
id=
"node3"
class=
"node"
>
<g
id=
"node3"
class=
"node"
>
<title>
client
</title>
<title>
client
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"12
47.8112"
cy=
"-368.0904
"
rx=
"30.5947"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"12
86.2046"
cy=
"-389.3036
"
rx=
"30.5947"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"12
47.8112"
y=
"-364.3904
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
client
</text>
<text
text-anchor=
"middle"
x=
"12
86.2046"
y=
"-385.6036
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
client
</text>
</g>
</g>
<!-- invProto->client -->
<!-- invProto->client -->
<g
id=
"edge2"
class=
"edge"
>
<g
id=
"edge2"
class=
"edge"
>
<title>
invProto
->
client
</title>
<title>
invProto
->
client
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
193.8179,-368.0904C1201.6112,-368.0904 1209.4044,-368.0904 1217.1976,-368.0904
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
220.2456,-389.3036C1232.0004,-389.3036 1243.7553,-389.3036 1255.5102,-389.3036
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
193.5729,-364.5905 1183.5729,-368.0904 1193.5729,-371.5905 1193.5729,-364.5905
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
219.9156,-385.8037 1209.9155,-389.3036 1219.9155,-392.8037 1219.9156,-385.8037
"
/>
</g>
</g>
<!-- client->wcfsRead -->
<!-- client->wcfsRead -->
<g
id=
"edge2
3
"
class=
"edge"
>
<g
id=
"edge2
4
"
class=
"edge"
>
<title>
client
->
wcfsRead
</title>
<title>
client
->
wcfsRead
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M12
28.0917,-354.2652C1207.6058,-339.9027 1175.2476,-317.2165 1151.2335,-300.3803
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M12
64.6841,-376.2546C1240.4497,-361.56 1200.7439,-337.4844 1172.2829,-320.227
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"11
52.9986,-297.3433 1142.8012,-294.4685 1148.9801,-303.075 1152.9986,-297.3433
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"11
73.8369,-317.0761 1163.4713,-314.884 1170.2075,-323.0617 1173.8369,-317.0761
"
/>
</g>
</g>
<!-- mappingRegister -->
<!-- mappingRegister -->
<g
id=
"node1
8
"
class=
"node"
>
<g
id=
"node1
9
"
class=
"node"
>
<title>
mappingRegister
</title>
<title>
mappingRegister
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1
264.8112"
cy=
"-188.6102
"
rx=
"65.1077"
ry=
"26.7407"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1
483.2046"
cy=
"-209.8234
"
rx=
"65.1077"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"1
264.8112"
y=
"-192.4102
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
mmappings:
</text>
<text
text-anchor=
"middle"
x=
"1
483.2046"
y=
"-213.6234
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
mmappings:
</text>
<text
text-anchor=
"middle"
x=
"1
264.8112"
y=
"-177.4102
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
register/maint
</text>
<text
text-anchor=
"middle"
x=
"1
483.2046"
y=
"-198.6234
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
register/maint
</text>
</g>
</g>
<!-- client->mappingRegister -->
<!-- client->mappingRegister -->
<g
id=
"edge2
4
"
class=
"edge"
>
<g
id=
"edge2
5
"
class=
"edge"
>
<title>
client
->
mappingRegister
</title>
<title>
client
->
mappingRegister
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
249.5348,-349.8932C1252.2816,-320.8932 1257.7076,-263.6077 1261.2976,-225.7051
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
308.5249,-376.7197C1327.784,-365.1945 1355.6605,-346.8604 1376.2046,-326.4335 1396.9483,-305.8082 1394.8355,-294.6147 1414.2046,-272.6934 1423.9619,-261.6504 1435.493,-250.5204 1446.3067,-240.7583
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
264.7991,-225.8537 1262.2578,-215.5682 1257.8303,-225.1935 1264.7991,-225.8537
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
448.8634,-243.1688 1454.0184,-233.9126 1444.2163,-237.9339 1448.8634,-243.1688
"
/>
</g>
</g>
<!-- clientInvHandle -->
<!-- clientInvHandle -->
<g
id=
"node2
3
"
class=
"node"
>
<g
id=
"node2
4
"
class=
"node"
>
<title>
clientInvHandle
</title>
<title>
clientInvHandle
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1
356.8112"
cy=
"-278.3503
"
rx=
"80.7205"
ry=
"26.7407"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1
286.2046"
cy=
"-299.5635
"
rx=
"80.7205"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"1
356.8112"
y=
"-282.1503
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
process
</text>
<text
text-anchor=
"middle"
x=
"1
286.2046"
y=
"-303.3635
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
process
</text>
<text
text-anchor=
"middle"
x=
"1
356.8112"
y=
"-267.1503
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
#blk invalidations
</text>
<text
text-anchor=
"middle"
x=
"1
286.2046"
y=
"-288.3635
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
#blk invalidations
</text>
</g>
</g>
<!-- client->clientInvHandle -->
<!-- client->clientInvHandle -->
<g
id=
"edge2
5
"
class=
"edge"
>
<g
id=
"edge2
6
"
class=
"edge"
>
<title>
client
->
clientInvHandle
</title>
<title>
client
->
clientInvHandle
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M12
65.8103,-353.2716C1280.0729,-341.5292 1300.5081,-324.7049 1318.4013,-309.9733
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M12
86.2046,-371.1434C1286.2046,-361.2404 1286.2046,-348.6082 1286.2046,-336.7207
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
320.9168,-312.4359 1326.4124,-303.3777 1316.4676,-307.0317 1320.9168,-312.4359
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
289.7047,-336.5531 1286.2046,-326.5531 1282.7047,-336.5532 1289.7047,-336.5531
"
/>
</g>
</g>
<!-- nowcfs -->
<!-- nowcfs -->
<g
id=
"node2
4
"
class=
"node"
>
<g
id=
"node2
5
"
class=
"node"
>
<title>
nowcfs
</title>
<title>
nowcfs
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1
507.8112"
cy=
"-278.3503
"
rx=
"52.7911"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1
476.2046"
cy=
"-299.5635
"
rx=
"52.7911"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"1
507.8112"
y=
"-274.6503
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
!wcfs mode
</text>
<text
text-anchor=
"middle"
x=
"1
476.2046"
y=
"-295.8635
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
!wcfs mode
</text>
</g>
</g>
<!-- client->nowcfs -->
<!-- client->nowcfs -->
<g
id=
"edge2
6
"
class=
"edge"
>
<g
id=
"edge2
7
"
class=
"edge"
>
<title>
client
->
nowcfs
</title>
<title>
client
->
nowcfs
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
275.4952,-360.3797C1314.2362,-349.3561 1386.6328,-327.9035 1446.8112,-305.2203 1453.359,-302.7523 1460.217,-299.9509 1466.8732,-297.1115
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
310.2682,-377.938C1341.843,-363.0247 1397.7075,-336.639 1435.8168,-318.6393
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"14
68.6473,-300.1567 1476.4215,-292.9586 1465.8553,-293.7376 1468.6473,-300.1567
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"14
37.5501,-321.6915 1445.0975,-314.2559 1434.5605,-315.3619 1437.5501,-321.6915
"
/>
</g>
</g>
<!-- ZODB_go_inv -->
<!-- ZODB_go_inv -->
<g
id=
"node8"
class=
"node"
>
<g
id=
"node8"
class=
"node"
>
<title>
ZODB_go_inv
</title>
<title>
ZODB_go_inv
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
324.8112"
cy=
"-188.6102
"
rx=
"60.623"
ry=
"26.7407"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
467.2046"
cy=
"-209.8234
"
rx=
"60.623"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"
324.8112"
y=
"-192.4102
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZODB/go
</text>
<text
text-anchor=
"middle"
x=
"
467.2046"
y=
"-213.6234
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZODB/go
</text>
<text
text-anchor=
"middle"
x=
"
324.8112"
y=
"-177.4102
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
<text
text-anchor=
"middle"
x=
"
467.2046"
y=
"-198.6234
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
</g>
</g>
<!-- wcfsInvProcess->ZODB_go_inv -->
<!-- wcfsInvProcess->ZODB_go_inv -->
<g
id=
"edge7"
class=
"edge"
>
<g
id=
"edge7"
class=
"edge"
>
<title>
wcfsInvProcess
->
ZODB_go_inv
</title>
<title>
wcfsInvProcess
->
ZODB_go_inv
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
723.6883,-259.5135C712.145,-256.5331 700.1713,-253.7055 688.8112,-251.4802 559.6238,-226.1743 522.5488,-247.306 394.8112,-215.4802 389.4429,-214.1427 383.9278,-212.5087 378.4625,-210.7136
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
696.7857,-281.4322C635.7728,-264.7202 552.5527,-241.7612 537.2046,-236.6934 532.3085,-235.0768 527.2517,-233.3172 522.2012,-231.4975
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
379.3162,-207.3053 368.7214,-207.3375 377.0239,-213.9193 379.3162,-207.3053
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
523.1339,-228.1114 512.5403,-227.9459 520.7185,-234.6815 523.1339,-228.1114
"
/>
</g>
</g>
<!-- zconnCacheGet -->
<!-- zconnCacheGet -->
<g
id=
"node9"
class=
"node"
>
<g
id=
"node9"
class=
"node"
>
<title>
zconnCacheGet
</title>
<title>
zconnCacheGet
</title>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"474.8112"
cy=
"-188.6102"
rx=
"71.4873"
ry=
"18"
/>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"749.2046"
cy=
"-209.8234"
rx=
"54.3945"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"474.8112"
y=
"-184.9102"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
zconn.Cache.Get
</text>
<text
text-anchor=
"middle"
x=
"749.2046"
y=
"-213.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
zonn.
</text>
<text
text-anchor=
"middle"
x=
"749.2046"
y=
"-198.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
.Cache.Get
</text>
</g>
</g>
<!-- wcfsInvProcess->zconnCacheGet -->
<!-- wcfsInvProcess->zconnCacheGet -->
<g
id=
"edge8"
class=
"edge"
>
<g
id=
"edge8"
class=
"edge"
>
<title>
wcfsInvProcess
->
zconnCacheGet
</title>
<title>
wcfsInvProcess
->
zconnCacheGet
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M7
21.2468,-260.277C710.406,-257.3355 699.2965,-254.3222 688.8112,-251.4802 629.7056,-235.4599 614.4515,-233.1278 555.8112,-215.4802 546.341,-212.6302 536.3025,-209.4397 526.6358,-206.2799
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M7
59.0041,-272.6385C757.7305,-264.4748 756.3089,-255.3623 754.9522,-246.6657
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
527.7211,-202.9524 517.128,-203.1441 525.5285,-209.6002 527.7211,-202.9524
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
758.4017,-246.0703 753.4021,-236.7294 751.4854,-247.1494 758.4017,-246.0703
"
/>
</g>
</g>
<!-- zobj2file -->
<!-- zobj2file -->
<g
id=
"node10"
class=
"node"
>
<g
id=
"node10"
class=
"node"
>
<title>
zobj2file
</title>
<title>
zobj2file
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
634.8112"
cy=
"-188.6102
"
rx=
"70.3881"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
183.2046"
cy=
"-209.8234
"
rx=
"70.3881"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"
634.8112"
y=
"-184.9102
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
Z* → file/[]#blk
</text>
<text
text-anchor=
"middle"
x=
"
183.2046"
y=
"-206.1234
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
Z* → file/[]#blk
</text>
</g>
</g>
<!-- wcfsInvProcess->zobj2file -->
<!-- wcfsInvProcess->zobj2file -->
<g
id=
"edge9"
class=
"edge"
>
<g
id=
"edge9"
class=
"edge"
>
<title>
wcfsInvProcess
->
zobj2file
</title>
<title>
wcfsInvProcess
->
zobj2file
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
746.81,-254.3016C723.5232,-240.643 694.5977,-223.6771 671.9761,-210.4087
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
698.8001,-280.7349C687.3407,-277.7713 675.4683,-274.9474 664.2046,-272.6934 644.4808,-268.7465 386.2372,-235.6668 256.5187,-219.1419
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
673.7252,-207.3771 663.3286,-205.3367 670.1836,-213.4151 673.7252,-207.3771
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
256.632,-215.6282 246.2699,-217.8367 255.7476,-222.5721 256.632,-215.6282
"
/>
</g>
</g>
<!-- δFtail -->
<!-- δFtail -->
<g
id=
"node11"
class=
"node"
>
<g
id=
"node11"
class=
"node"
>
<title>
δFtail
</title>
<title>
δFtail
</title>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"9
02.8112"
cy=
"-188.6102
"
rx=
"31.6951"
ry=
"18"
/>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"9
42.2046"
cy=
"-209.8234
"
rx=
"31.6951"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"9
02.8112"
y=
"-184.9102
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
δFtail
</text>
<text
text-anchor=
"middle"
x=
"9
42.2046"
y=
"-206.1234
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
δFtail
</text>
</g>
</g>
<!-- wcfsInvProcess->δFtail -->
<!-- wcfsInvProcess->δFtail -->
<g
id=
"edge10"
class=
"edge"
>
<g
id=
"edge10"
class=
"edge"
>
<title>
wcfsInvProcess
->
δFtail
</title>
<title>
wcfsInvProcess
->
δFtail
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M8
20.1511,-253.1138C837.6886,-239.4285 859.1158,-222.7078 875.7595,-209.7199
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M8
16.2263,-277.6703C842.2862,-266.3437 873.8829,-251.7549 901.2046,-236.6934 905.2548,-234.4607 909.4331,-231.965 913.5025,-229.4187
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
878.2507,-212.2155 883.9812,-203.3041 873.9443,-206.6969 878.2507,-212.215
5"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
915.6376,-232.2065 922.1452,-223.8458 911.8442,-226.3235 915.6376,-232.206
5"
/>
</g>
</g>
<!-- fuseRetrieveCache -->
<!-- fuseRetrieveCache -->
<g
id=
"node12"
class=
"node"
>
<g
id=
"node12"
class=
"node"
>
<title>
fuseRetrieveCache
</title>
<title>
fuseRetrieveCache
</title>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"
787.8112"
cy=
"-188.6102
"
rx=
"65.1077"
ry=
"26.7407"
/>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"
611.2046"
cy=
"-209.8234
"
rx=
"65.1077"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"
787.8112"
y=
"-192.4102
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
FUSE:
</text>
<text
text-anchor=
"middle"
x=
"
611.2046"
y=
"-213.6234
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
FUSE:
</text>
<text
text-anchor=
"middle"
x=
"
787.8112"
y=
"-177.4102
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
retrieve cache
</text>
<text
text-anchor=
"middle"
x=
"
611.2046"
y=
"-198.6234
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
retrieve cache
</text>
</g>
</g>
<!-- wcfsInvProcess->fuseRetrieveCache -->
<!-- wcfsInvProcess->fuseRetrieveCache -->
<g
id=
"edge11"
class=
"edge"
>
<g
id=
"edge11"
class=
"edge"
>
<title>
wcfsInvProcess
->
fuseRetrieveCache
</title>
<title>
wcfsInvProcess
->
fuseRetrieveCache
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M787.8112,-251.4253C787.8112,-243.3504 787.8112,-234.3471 787.8112,-225.7362"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M722.4714,-275.5148C702.3885,-263.658 678.0842,-249.3088 657.3199,-237.0497"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"791.3113,-225.5161 787.8112,-215.5162 784.3113,-225.5162 791.3113,-225.5161"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"659.0509,-234.0072 648.6603,-231.9371 655.4921,-240.035 659.0509,-234.0072"
/>
</g>
<!-- _wcfs_zhead -->
<g
id=
"node13"
class=
"node"
>
<title>
_wcfs_zhead
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"857.2046"
cy=
"-209.8234"
rx=
"35.2113"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"857.2046"
y=
"-213.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
.wcfs/
</text>
<text
text-anchor=
"middle"
x=
"857.2046"
y=
"-198.6234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
zhead
</text>
</g>
<!-- wcfsInvProcess->_wcfs_zhead -->
<g
id=
"edge12"
class=
"edge"
>
<title>
wcfsInvProcess
->
_wcfs_zhead
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M790.1412,-273.8476C801.8011,-262.7161 815.489,-249.6485 827.4478,-238.2316"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"830.2019,-240.4413 835.0181,-231.0044 825.3682,-235.3781 830.2019,-240.4413"
/>
</g>
</g>
<!-- wcfsRead->δFtail -->
<!-- wcfsRead->δFtail -->
<g
id=
"edge1
7
"
class=
"edge"
>
<g
id=
"edge1
8
"
class=
"edge"
>
<title>
wcfsRead
->
δFtail
</title>
<title>
wcfsRead
->
δFtail
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
081.3894,-267.7447C1044.7522,-256.9331 988.5406,-238.5028 942.8112,-215.4802 938.7505,-213.4359 934.6113,-211.0486 930.6099,-208.556
2"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
102.5668,-287.6028C1070.3202,-276.2239 1021.9382,-257.7497 982.2046,-236.6934 978.3792,-234.6662 974.4659,-232.3606 970.6564,-229.97
2"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"9
32.4387,-205.5701 922.1543,-203.0241 928.6062,-211.4278 932.4387,-205.5701
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"9
72.3312,-226.8852 962.0466,-224.3397 968.4991,-232.7431 972.3312,-226.8852
"
/>
</g>
</g>
<!-- blktabGet -->
<!-- blktabGet -->
<g
id=
"node1
7
"
class=
"node"
>
<g
id=
"node1
8
"
class=
"node"
>
<title>
blktabGet
</title>
<title>
blktabGet
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1
066.8112"
cy=
"-188.6102
"
rx=
"114.6026"
ry=
"26.7407"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1
106.2046"
cy=
"-209.8234
"
rx=
"114.6026"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"1
066.8112"
y=
"-192.4102
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
blktab.Get(#blk):
</text>
<text
text-anchor=
"middle"
x=
"1
106.2046"
y=
"-213.6234
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
blktab.Get(#blk):
</text>
<text
text-anchor=
"middle"
x=
"1
066.8112"
y=
"-177.4102
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
manually + → ⌈rev(#blk)⌉
</text>
<text
text-anchor=
"middle"
x=
"1
106.2046"
y=
"-198.6234
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
manually + → ⌈rev(#blk)⌉
</text>
</g>
</g>
<!-- wcfsRead->blktabGet -->
<!-- wcfsRead->blktabGet -->
<g
id=
"edge1
6
"
class=
"edge"
>
<g
id=
"edge1
7
"
class=
"edge"
>
<title>
wcfsRead
->
blktabGet
</title>
<title>
wcfsRead
->
blktabGet
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
09.3401,-260.6205C1103.2227,-250.2624 1095.2798,-236.8135 1087.917,-224.3468
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
31.7289,-281.4032C1128.1263,-271.3002 1123.5108,-258.3566 1119.1977,-246.2611
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
090.7917,-222.3316 1082.6927,-215.501 1084.7644,-225.8913 1090.7917,-222.3316
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
122.4841,-245.0565 1115.8287,-236.813 1115.8908,-247.4077 1122.4841,-245.0565
"
/>
</g>
</g>
<!-- wcfsRead->mappingRegister -->
<!-- wcfsRead->mappingRegister -->
<g
id=
"edge1
8
"
class=
"edge"
>
<g
id=
"edge1
9
"
class=
"edge"
>
<title>
wcfsRead
->
mappingRegister
</title>
<title>
wcfsRead
->
mappingRegister
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
44.7376,-262.9234C1165.3807,-250.1475 1195.2367,-231.6696 1220.0126,-216.3359
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
65.9282,-284.8924C1175.3286,-280.4156 1186.0288,-275.8483 1196.2046,-272.6934 1287.9077,-244.2624 1316.3698,-261.1777 1409.2046,-236.6934 1414.7925,-235.2197 1420.5532,-233.4998 1426.2771,-231.6552
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
221.8796,-219.2966 1228.5409,-211.0578 1218.1957,-213.3443 1221.8796,-219.2966
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
427.4666,-234.948 1435.8385,-228.4548 1425.2446,-228.31 1427.4666,-234.948
"
/>
</g>
</g>
<!-- head
Inv
-->
<!-- head
Watch
-->
<g
id=
"node
19
"
class=
"node"
>
<g
id=
"node
20
"
class=
"node"
>
<title>
head
Inv
</title>
<title>
head
Watch
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1
420.8112"
cy=
"-188.6102"
rx=
"73.387
"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1
319.2046"
cy=
"-209.8234"
rx=
"80.6858
"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"1
420.8112"
y=
"-184.9102"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
#blk ← head/inv.
</text>
<text
text-anchor=
"middle"
x=
"1
319.2046"
y=
"-206.1234"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
#blk ← head/watch
</text>
</g>
</g>
<!-- wcfsRead->head
Inv
-->
<!-- wcfsRead->head
Watch
-->
<g
id=
"edge
19
"
class=
"edge"
>
<g
id=
"edge
20
"
class=
"edge"
>
<title>
wcfsRead
->
head
Inv
</title>
<title>
wcfsRead
->
head
Watch
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
58.3127,-267.7634C1202.1519,-255.6007 1275.8545,-234.8246 1338.8112,-215.4802 1348.0578,-212.6391 1357.8566,-209.5217 1367.3409,-206.4482
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M11
67.2854,-285.1452C1196.8805,-270.4719 1243.0675,-247.5723 1276.75,-230.8724
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
368.6518,-209.7022 1377.0742,-203.2746 1366.4818,-203.047 1368.6518,-209.7022
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
278.4898,-233.9164 1285.8944,-226.3386 1275.3804,-227.645 1278.4898,-233.9164
"
/>
</g>
</g>
<!-- fs1_go_inv -->
<!-- fs1_go_inv -->
<g
id=
"node1
3
"
class=
"node"
>
<g
id=
"node1
4
"
class=
"node"
>
<title>
fs1_go_inv
</title>
<title>
fs1_go_inv
</title>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"
326.8112"
cy=
"-98.8701
"
rx=
"60.623"
ry=
"26.7407"
/>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"
733.2046"
cy=
"-109.4767
"
rx=
"60.623"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"
326.8112"
y=
"-102.6701
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
fs1/go
</text>
<text
text-anchor=
"middle"
x=
"
733.2046"
y=
"-113.2767
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
fs1/go
</text>
<text
text-anchor=
"middle"
x=
"
326.8112"
y=
"-87.6701
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
<text
text-anchor=
"middle"
x=
"
733.2046"
y=
"-98.2767
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
</g>
</g>
<!-- ZODB_go_inv->fs1_go_inv -->
<!-- ZODB_go_inv->fs1_go_inv -->
<g
id=
"edge1
2
"
class=
"edge"
>
<g
id=
"edge1
3
"
class=
"edge"
>
<title>
ZODB_go_inv
->
fs1_go_inv
</title>
<title>
ZODB_go_inv
->
fs1_go_inv
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
325.4112,-161.6852C325.5912,-153.6102 325.7919,-144.607 325.9838,-135.9961
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
512.5558,-191.7476C520.7165,-188.6861 529.1793,-185.6343 537.2046,-182.9533 592.4446,-164.4997 609.2254,-168.8222 663.2046,-146.9533 671.1937,-143.7167 679.4564,-139.8252 687.3824,-135.7919
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
329.4878,-135.8516 326.2115,-125.776 322.4895,-135.6955 329.4878,-135.8516
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
689.2584,-138.7605 696.4956,-131.0227 686.0127,-132.5584 689.2584,-138.7605
"
/>
</g>
</g>
<!-- zeo_go_inv -->
<!-- zeo_go_inv -->
<g
id=
"node1
4
"
class=
"node"
>
<g
id=
"node1
5
"
class=
"node"
>
<title>
zeo_go_inv
</title>
<title>
zeo_go_inv
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
466.8112"
cy=
"-98.8701
"
rx=
"60.623"
ry=
"26.7407"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
327.2046"
cy=
"-109.4767
"
rx=
"60.623"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"
466.8112"
y=
"-102.6701
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
zeo/go
</text>
<text
text-anchor=
"middle"
x=
"
327.2046"
y=
"-113.2767
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
zeo/go
</text>
<text
text-anchor=
"middle"
x=
"
466.8112"
y=
"-87.6701
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
<text
text-anchor=
"middle"
x=
"
327.2046"
y=
"-98.2767
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
</g>
</g>
<!-- ZODB_go_inv->zeo_go_inv -->
<!-- ZODB_go_inv->zeo_go_inv -->
<g
id=
"edge1
3
"
class=
"edge"
>
<g
id=
"edge1
4
"
class=
"edge"
>
<title>
ZODB_go_inv
->
zeo_go_inv
</title>
<title>
ZODB_go_inv
->
zeo_go_inv
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
359.9123,-166.4272C379.0279,-154.3467 402.8549,-139.2887 423.1594,-126.4568
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
435.0858,-186.8018C414.9882,-172.3967 388.9291,-153.7185 367.4574,-138.3284
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
425.0381,-129.4099 431.6217,-121.1088 421.2985,-123.4925 425.0381,-129.4099
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
369.3408,-135.3721 359.174,-132.3911 365.2628,-141.0616 369.3408,-135.3721
"
/>
</g>
</g>
<!-- neo_go_inv -->
<!-- neo_go_inv -->
<g
id=
"node1
5
"
class=
"node"
>
<g
id=
"node1
6
"
class=
"node"
>
<title>
neo_go_inv
</title>
<title>
neo_go_inv
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
60.8112"
cy=
"-98.8701
"
rx=
"60.623"
ry=
"26.7407"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
467.2046"
cy=
"-109.4767
"
rx=
"60.623"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"
60.8112"
y=
"-102.6701
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
neo/go
</text>
<text
text-anchor=
"middle"
x=
"
467.2046"
y=
"-113.2767
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
neo/go
</text>
<text
text-anchor=
"middle"
x=
"
60.8112"
y=
"-87.6701
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
<text
text-anchor=
"middle"
x=
"
467.2046"
y=
"-98.2767
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
invalidations
</text>
</g>
</g>
<!-- ZODB_go_inv->neo_go_inv -->
<!-- ZODB_go_inv->neo_go_inv -->
<g
id=
"edge1
4
"
class=
"edge"
>
<g
id=
"edge1
5
"
class=
"edge"
>
<title>
ZODB_go_inv
->
neo_go_inv
</title>
<title>
ZODB_go_inv
->
neo_go_inv
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
274.7254,-173.1826C235.4057,-160.8778 179.3773,-142.9172 130.8112,-125.7401 126.025,-124.0473 121.0724,-122.2466 116.1154,-120.4103
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
467.2046,-182.9323C467.2046,-171.7967 467.2046,-158.6951 467.2046,-146.6635
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
117.2119,-117.0836 106.6195,-116.8539 114.7567,-123.6389 117.2119,-117.0836
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
470.7047,-146.4419 467.2046,-136.442 463.7047,-146.442 470.7047,-146.4419
"
/>
</g>
</g>
<!-- zcache_go_inv -->
<!-- zcache_go_inv -->
<g
id=
"node1
6
"
class=
"node"
>
<g
id=
"node1
7
"
class=
"node"
>
<title>
zcache_go_inv
</title>
<title>
zcache_go_inv
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
193.8112"
cy=
"-98.8701
"
rx=
"53.9813"
ry=
"26.7407"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
600.2046"
cy=
"-109.4767
"
rx=
"53.9813"
ry=
"26.7407"
/>
<text
text-anchor=
"middle"
x=
"
193.8112"
y=
"-102.6701
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZCache/go
</text>
<text
text-anchor=
"middle"
x=
"
600.2046"
y=
"-113.2767
"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZCache/go
</text>
<text
text-anchor=
"middle"
x=
"
193.8112"
y=
"-87.6701"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
<-
watchq
</text>
<text
text-anchor=
"middle"
x=
"
600.2046"
y=
"-98.2767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
←
watchq
</text>
</g>
</g>
<!-- ZODB_go_inv->zcache_go_inv -->
<!-- ZODB_go_inv->zcache_go_inv -->
<g
id=
"edge1
5
"
class=
"edge"
>
<g
id=
"edge1
6
"
class=
"edge"
>
<title>
ZODB_go_inv
->
zcache_go_inv
</title>
<title>
ZODB_go_inv
->
zcache_go_inv
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
291.7544,-165.965C274.1388,-153.8976 252.3349,-138.9611 233.7745,-126.2465
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
498.0517,-186.5496C517.2061,-172.0979 541.9634,-153.4189 562.308,-138.0691
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
235.7297,-123.3434 225.5017,-120.5793 231.7736,-129.1183 235.7297,-123.3434
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
564.5648,-140.7509 570.4396,-131.9339 560.3488,-135.1629 564.5648,-140.7509
"
/>
</g>
</g>
<!-- zblk2file -->
<!-- zblk2file -->
<g
id=
"node2
0
"
class=
"node"
>
<g
id=
"node2
1
"
class=
"node"
>
<title>
zblk2file
</title>
<title>
zblk2file
</title>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"632.8112"
cy=
"-98.8701"
rx=
"83.3857"
ry=
"18"
/>
<ellipse
fill=
"#f2f2f2"
stroke=
"#000000"
cx=
"50.2046"
cy=
"-109.4767"
rx=
"50.41"
ry=
"37.4533"
/>
<text
text-anchor=
"middle"
x=
"632.8112"
y=
"-95.1701"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZBlk* → file/[]#blk
</text>
<text
text-anchor=
"middle"
x=
"50.2046"
y=
"-120.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
ZBlk*
</text>
<text
text-anchor=
"middle"
x=
"50.2046"
y=
"-105.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
↓
</text>
<text
text-anchor=
"middle"
x=
"50.2046"
y=
"-90.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
file/[]#blk
</text>
</g>
</g>
<!-- zobj2file->zblk2file -->
<!-- zobj2file->zblk2file -->
<g
id=
"edge2
0
"
class=
"edge"
>
<g
id=
"edge2
1
"
class=
"edge"
>
<title>
zobj2file
->
zblk2file
</title>
<title>
zobj2file
->
zblk2file
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
634.4065,-170.4499C634.1299,-158.043 633.758,-141.3523 633.4428,-127.209
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
160.3411,-192.5732C142.0844,-178.7987 115.9716,-159.097 93.7543,-142.3343
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
636.9373,-126.9228 633.2153,-117.0033 629.9391,-127.0788 636.9373,-126.9228
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
95.8578,-139.5369 85.7669,-136.308 91.6417,-145.1249 95.8578,-139.5369
"
/>
</g>
</g>
<!-- zbtree2file -->
<!-- zbtree2file -->
<g
id=
"node2
1
"
class=
"node"
>
<g
id=
"node2
2
"
class=
"node"
>
<title>
zbtree2file
</title>
<title>
zbtree2file
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"843.8112"
cy=
"-98.8701"
rx=
"109.6807"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"183.2046"
cy=
"-109.4767"
rx=
"65.1077"
ry=
"37.4533"
/>
<text
text-anchor=
"middle"
x=
"843.8112"
y=
"-95.1701"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
BTree/Bucket → file/[]#blk
</text>
<text
text-anchor=
"middle"
x=
"183.2046"
y=
"-120.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
BTree/Bucket
</text>
<text
text-anchor=
"middle"
x=
"183.2046"
y=
"-105.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
↓
</text>
<text
text-anchor=
"middle"
x=
"183.2046"
y=
"-90.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
file/[]#blk
</text>
</g>
</g>
<!-- zobj2file->zbtree2file -->
<!-- zobj2file->zbtree2file -->
<g
id=
"edge2
1
"
class=
"edge"
>
<g
id=
"edge2
2
"
class=
"edge"
>
<title>
zobj2file
->
zbtree2file
</title>
<title>
zobj2file
->
zbtree2file
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M671.2162,-172.9786C705.6095,-158.2109 757.4333,-135.9589 795.3179,-119.692"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M183.2046,-191.4182C183.2046,-181.7819 183.2046,-169.4895 183.2046,-157.3745"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"796.8224,-122.8551 804.6302,-115.6935 794.0605,-116.423 796.8224,-122.8551"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"186.7047,-157.3017 183.2046,-147.3017 179.7047,-157.3018 186.7047,-157.3017"
/>
</g>
<!-- fileSock -->
<g
id=
"node26"
class=
"node"
>
<title>
fileSock
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"1088.2046"
cy=
"-109.4767"
rx=
"42.4939"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"1088.2046"
y=
"-105.7767"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
FileSock
</text>
</g>
<!-- _wcfs_zhead->fileSock -->
<g
id=
"edge30"
class=
"edge"
>
<title>
_wcfs_zhead
->
fileSock
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M884.249,-192.2985C889.762,-189.015 895.5941,-185.7422 901.2046,-182.9533 948.9451,-159.2221 1006.3368,-137.6367 1044.8381,-124.0939"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1046.3966,-127.2573 1054.6869,-120.6602 1044.092,-120.6475 1046.3966,-127.2573"
/>
</g>
<!-- headWatch->fileSock -->
<g
id=
"edge29"
class=
"edge"
>
<title>
headWatch
->
fileSock
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1282.3465,-193.8122C1239.9515,-175.3957 1170.6358,-145.2849 1127.3142,-126.4659"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1128.5204,-123.174 1117.9539,-122.3998 1125.7314,-129.5944 1128.5204,-123.174"
/>
</g>
</g>
<!-- δBTree -->
<!-- δBTree -->
<g
id=
"node2
2
"
class=
"node"
>
<g
id=
"node2
3
"
class=
"node"
>
<title>
δBTree
</title>
<title>
δBTree
</title>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
843.8112
"
cy=
"-18"
rx=
"43.5923"
ry=
"18"
/>
<ellipse
fill=
"none"
stroke=
"#000000"
cx=
"
183.2046
"
cy=
"-18"
rx=
"43.5923"
ry=
"18"
/>
<text
text-anchor=
"middle"
x=
"
843.8112
"
y=
"-14.3"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
δ(BTree)
</text>
<text
text-anchor=
"middle"
x=
"
183.2046
"
y=
"-14.3"
font-family=
"Times,serif"
font-size=
"14.00"
fill=
"#000000"
>
δ(BTree)
</text>
</g>
</g>
<!-- zbtree2file->δBTree -->
<!-- zbtree2file->δBTree -->
<g
id=
"edge2
2
"
class=
"edge"
>
<g
id=
"edge2
3
"
class=
"edge"
>
<title>
zbtree2file
->
δBTree
</title>
<title>
zbtree2file
->
δBTree
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
843.8112,-80.5194C843.8112,-70.4898 843.8112,-57.8453 843.8112,-46.5565
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M
183.2046,-71.7415C183.2046,-63.3502 183.2046,-54.5881 183.2046,-46.6326
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
847.3113,-46.278 843.8112,-36.278 840.3113,-46.2781 847.3113,-46.278
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"
186.7047,-46.3947 183.2046,-36.3948 179.7047,-46.3948 186.7047,-46.3947
"
/>
</g>
</g>
<!-- clientInvHandle->head
Inv
-->
<!-- clientInvHandle->head
Watch
-->
<g
id=
"edge2
7
"
class=
"edge"
>
<g
id=
"edge2
8
"
class=
"edge"
>
<title>
clientInvHandle
->
head
Inv
</title>
<title>
clientInvHandle
->
head
Watch
</title>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
375.6671,-251.9107C1384.0117,-240.21 1393.7996,-226.4855 1402.1245,-214.8125
"
/>
<path
fill=
"none"
stroke=
"#000000"
d=
"M1
296.1057,-272.6385C1300.1756,-261.5708 1304.8868,-248.759 1308.9889,-237.604
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
405.2005,-216.5272 1408.1573,-206.3533 1399.5013,-212.4627 1405.2005,-216.5272
"
/>
<polygon
fill=
"#000000"
stroke=
"#000000"
points=
"1
312.3824,-238.5164 1312.5489,-227.9229 1305.8125,-236.1004 1312.3824,-238.5164
"
/>
</g>
</g>
</g>
</g>
</svg>
</svg>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment