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
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
Kirill Smelkov
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
Hide 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