diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/.gitignore | 1 | ||||
-rw-r--r-- | contrib/Makefile.am | 11 | ||||
-rw-r--r-- | contrib/branding/logo/gnunet-logo-dark-text.svg | 1411 | ||||
-rw-r--r-- | contrib/gnunet-arch-full.svg | 648 | ||||
-rw-r--r-- | contrib/packages/guix/notest-guix-env.scm | 145 | ||||
-rw-r--r-- | contrib/services/shepherd/ng0_wip/.gitignore | 1 | ||||
-rw-r--r-- | contrib/services/shepherd/ng0_wip/00001-gnu-services-Add-gnunet-service.patch | 186 | ||||
-rw-r--r-- | contrib/services/shepherd/ng0_wip/0001-gnu-services-Add-gnunet-service.patch | 225 | ||||
-rw-r--r-- | contrib/services/shepherd/ng0_wip/001-gnu-services-Add-gnunet-service.patch | 204 | ||||
-rw-r--r-- | contrib/services/shepherd/ng0_wip/README | 11 | ||||
-rw-r--r-- | contrib/services/shepherd/ng0_wip/gnunet.scm | 173 | ||||
-rw-r--r-- | contrib/services/shepherd/ng0_wip/janneke-os-modified.scm | 62 | ||||
-rw-r--r-- | contrib/timeout_watchdog.c | 116 | ||||
-rw-r--r-- | contrib/timeout_watchdog_w32.c | 191 |
14 files changed, 2204 insertions, 1181 deletions
diff --git a/contrib/.gitignore b/contrib/.gitignore index 304706d7e..d6ef469ba 100644 --- a/contrib/.gitignore +++ b/contrib/.gitignore | |||
@@ -2,7 +2,6 @@ gnunet_janitor.py | |||
2 | gnunet_pyexpect.py | 2 | gnunet_pyexpect.py |
3 | pydiffer.py | 3 | pydiffer.py |
4 | terminate.py | 4 | terminate.py |
5 | timeout_watchdog | ||
6 | gnunet_pyexpect.py | 5 | gnunet_pyexpect.py |
7 | gnunet_pyexpect.pyc | 6 | gnunet_pyexpect.pyc |
8 | pydiffer.pyc | 7 | pydiffer.pyc |
diff --git a/contrib/Makefile.am b/contrib/Makefile.am index 158e43998..eec3300b9 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am | |||
@@ -5,17 +5,6 @@ tap32dir = $(pkgdatadir)/openvpn-tap32/tapw32/ | |||
5 | 5 | ||
6 | tap64dir = $(pkgdatadir)/openvpn-tap32/tapw64/ | 6 | tap64dir = $(pkgdatadir)/openvpn-tap32/tapw64/ |
7 | 7 | ||
8 | noinst_PROGRAMS = \ | ||
9 | timeout_watchdog | ||
10 | |||
11 | if !MINGW | ||
12 | timeout_watchdog_SOURCES = \ | ||
13 | timeout_watchdog.c | ||
14 | else | ||
15 | timeout_watchdog_SOURCES = \ | ||
16 | timeout_watchdog_w32.c | ||
17 | endif | ||
18 | |||
19 | noinst_SCRIPTS = \ | 8 | noinst_SCRIPTS = \ |
20 | scripts/terminate.py \ | 9 | scripts/terminate.py \ |
21 | scripts/pydiffer.py \ | 10 | scripts/pydiffer.py \ |
diff --git a/contrib/branding/logo/gnunet-logo-dark-text.svg b/contrib/branding/logo/gnunet-logo-dark-text.svg new file mode 100644 index 000000000..5644e0ae7 --- /dev/null +++ b/contrib/branding/logo/gnunet-logo-dark-text.svg | |||
@@ -0,0 +1,1411 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
4 | xmlns:cc="http://creativecommons.org/ns#" | ||
5 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
6 | xmlns:svg="http://www.w3.org/2000/svg" | ||
7 | xmlns="http://www.w3.org/2000/svg" | ||
8 | xmlns:xlink="http://www.w3.org/1999/xlink" | ||
9 | version="1.1" | ||
10 | id="svg2" | ||
11 | height="280" | ||
12 | width="320"> | ||
13 | <title | ||
14 | id="title3310">logo for GNUnet</title> | ||
15 | <defs | ||
16 | id="defs4"> | ||
17 | <linearGradient | ||
18 | id="gnunet"> | ||
19 | <stop | ||
20 | style="stop-color:#ff0000;stop-opacity:0.58431375;" | ||
21 | offset="0" | ||
22 | id="stop9516" /> | ||
23 | <stop | ||
24 | style="stop-color:#ffcc00;stop-opacity:1;" | ||
25 | offset="1" | ||
26 | id="stop9518" /> | ||
27 | </linearGradient> | ||
28 | <linearGradient | ||
29 | id="linearGradient4094"> | ||
30 | <stop | ||
31 | style="stop-color:#232323;stop-opacity:1;" | ||
32 | offset="0" | ||
33 | id="stop4096" /> | ||
34 | <stop | ||
35 | style="stop-color:#4d4d4d;stop-opacity:1;" | ||
36 | offset="1" | ||
37 | id="stop4098" /> | ||
38 | </linearGradient> | ||
39 | <linearGradient | ||
40 | id="linearGradient4014"> | ||
41 | <stop | ||
42 | style="stop-color:#a0a0a0;stop-opacity:1;" | ||
43 | offset="0" | ||
44 | id="stop4016" /> | ||
45 | <stop | ||
46 | style="stop-color:#ffffff;stop-opacity:1;" | ||
47 | offset="1" | ||
48 | id="stop4018" /> | ||
49 | </linearGradient> | ||
50 | <linearGradient | ||
51 | id="linearGradient4678"> | ||
52 | <stop | ||
53 | style="stop-color:#e5e5e5;stop-opacity:1;" | ||
54 | offset="0" | ||
55 | id="stop4680" /> | ||
56 | <stop | ||
57 | style="stop-color:#d3cdcd;stop-opacity:1;" | ||
58 | offset="1" | ||
59 | id="stop4682" /> | ||
60 | </linearGradient> | ||
61 | <linearGradient | ||
62 | id="linearGradient4341"> | ||
63 | <stop | ||
64 | id="stop4343" | ||
65 | offset="0" | ||
66 | style="stop-color:#333333;stop-opacity:1;" /> | ||
67 | <stop | ||
68 | id="stop4345" | ||
69 | offset="1" | ||
70 | style="stop-color:#484848;stop-opacity:1;" /> | ||
71 | </linearGradient> | ||
72 | <linearGradient | ||
73 | id="linearGradient4696-5"> | ||
74 | <stop | ||
75 | id="stop4698-6" | ||
76 | offset="0" | ||
77 | style="stop-color:#ffb638;stop-opacity:1;" /> | ||
78 | <stop | ||
79 | id="stop4700-2" | ||
80 | offset="1" | ||
81 | style="stop-color:#f0ae26;stop-opacity:1;" /> | ||
82 | </linearGradient> | ||
83 | <linearGradient | ||
84 | id="linearGradient4702-3-6"> | ||
85 | <stop | ||
86 | id="stop4704-1" | ||
87 | offset="0" | ||
88 | style="stop-color:#ff0000;stop-opacity:0.58431375;" /> | ||
89 | <stop | ||
90 | id="stop4706-8" | ||
91 | offset="1" | ||
92 | style="stop-color:#ffcc00;stop-opacity:1;" /> | ||
93 | </linearGradient> | ||
94 | <color-profile | ||
95 | name="Artifex-PS-CMYK-Profile" | ||
96 | xlink:href="/usr/share/color/icc/ghostscript/ps_cmyk.icc" | ||
97 | id="color-profile27" /> | ||
98 | <linearGradient | ||
99 | y2="69.791016" | ||
100 | x2="177.04297" | ||
101 | y1="63.65625" | ||
102 | x1="142.96875" | ||
103 | gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)" | ||
104 | gradientUnits="userSpaceOnUse" | ||
105 | id="linearGradient3138" | ||
106 | xlink:href="#linearGradient4702-3-6" /> | ||
107 | <linearGradient | ||
108 | y2="1043.709" | ||
109 | x2="80.655251" | ||
110 | y1="1025.709" | ||
111 | x1="108.08774" | ||
112 | gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)" | ||
113 | gradientUnits="userSpaceOnUse" | ||
114 | id="linearGradient3141" | ||
115 | xlink:href="#linearGradient4696-5" /> | ||
116 | <linearGradient | ||
117 | y2="922.07178" | ||
118 | x2="78.000107" | ||
119 | y1="1004.8033" | ||
120 | x1="113.5146" | ||
121 | gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)" | ||
122 | gradientUnits="userSpaceOnUse" | ||
123 | id="linearGradient3144" | ||
124 | xlink:href="#linearGradient4702-3-6" /> | ||
125 | <linearGradient | ||
126 | y2="70.667412" | ||
127 | x2="176.60477" | ||
128 | y1="63.65625" | ||
129 | x1="142.96875" | ||
130 | gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)" | ||
131 | gradientUnits="userSpaceOnUse" | ||
132 | id="linearGradient3148" | ||
133 | xlink:href="#linearGradient4702-3-6" /> | ||
134 | <linearGradient | ||
135 | y2="70.667412" | ||
136 | x2="176.60477" | ||
137 | y1="63.65625" | ||
138 | x1="142.96875" | ||
139 | gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)" | ||
140 | gradientUnits="userSpaceOnUse" | ||
141 | id="linearGradient3780" | ||
142 | xlink:href="#linearGradient4702-3-6" /> | ||
143 | <linearGradient | ||
144 | y2="922.07178" | ||
145 | x2="78.000107" | ||
146 | y1="1004.8033" | ||
147 | x1="113.5146" | ||
148 | gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)" | ||
149 | gradientUnits="userSpaceOnUse" | ||
150 | id="linearGradient3782" | ||
151 | xlink:href="#linearGradient4702-3-6" /> | ||
152 | <linearGradient | ||
153 | y2="1043.709" | ||
154 | x2="80.655251" | ||
155 | y1="1025.709" | ||
156 | x1="108.08774" | ||
157 | gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)" | ||
158 | gradientUnits="userSpaceOnUse" | ||
159 | id="linearGradient3784" | ||
160 | xlink:href="#linearGradient4696-5" /> | ||
161 | <linearGradient | ||
162 | y2="69.791016" | ||
163 | x2="177.04297" | ||
164 | y1="63.65625" | ||
165 | x1="142.96875" | ||
166 | gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)" | ||
167 | gradientUnits="userSpaceOnUse" | ||
168 | id="linearGradient3786" | ||
169 | xlink:href="#linearGradient4702-3-6" /> | ||
170 | <filter | ||
171 | id="filter9204" | ||
172 | style="color-interpolation-filters:sRGB"> | ||
173 | <feColorMatrix | ||
174 | id="feColorMatrix9194" | ||
175 | result="colormatrix" | ||
176 | values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -0.2125 -0.7154 -0.0721 1 0 " | ||
177 | in="SourceGraphic" /> | ||
178 | <feComposite | ||
179 | k1="0" | ||
180 | id="feComposite9196" | ||
181 | result="composite" | ||
182 | k4="0" | ||
183 | k3="0" | ||
184 | k2="1" | ||
185 | operator="arithmetic" | ||
186 | in2="colormatrix" | ||
187 | in="SourceGraphic" /> | ||
188 | <feGaussianBlur | ||
189 | id="feGaussianBlur9198" | ||
190 | result="blur1" | ||
191 | stdDeviation="5 0.01" /> | ||
192 | <feGaussianBlur | ||
193 | id="feGaussianBlur9200" | ||
194 | result="blur2" | ||
195 | stdDeviation="0.01 5" | ||
196 | in="composite" /> | ||
197 | <feBlend | ||
198 | id="feBlend9202" | ||
199 | result="blend" | ||
200 | mode="darken" | ||
201 | in2="blur1" | ||
202 | in="blur2" /> | ||
203 | </filter> | ||
204 | <filter | ||
205 | id="filter9330" | ||
206 | style="color-interpolation-filters:sRGB"> | ||
207 | <feGaussianBlur | ||
208 | id="feGaussianBlur9328" | ||
209 | result="blur" | ||
210 | stdDeviation="2 2" /> | ||
211 | </filter> | ||
212 | </defs> | ||
213 | <metadata | ||
214 | id="metadata7"> | ||
215 | <rdf:RDF> | ||
216 | <cc:Work | ||
217 | rdf:about=""> | ||
218 | <dc:format>image/svg+xml</dc:format> | ||
219 | <dc:type | ||
220 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||
221 | <dc:title>logo for GNUnet</dc:title> | ||
222 | <dc:creator> | ||
223 | <cc:Agent> | ||
224 | <dc:title>Luis Felipe López Acevedo, Amirouche Boubekki, carlo von lynX</dc:title> | ||
225 | </cc:Agent> | ||
226 | </dc:creator> | ||
227 | <dc:rights> | ||
228 | <cc:Agent> | ||
229 | <dc:title>GNUnet e.V.</dc:title> | ||
230 | </cc:Agent> | ||
231 | </dc:rights> | ||
232 | <cc:license | ||
233 | rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /> | ||
234 | <dc:description /> | ||
235 | </cc:Work> | ||
236 | <cc:License | ||
237 | rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"> | ||
238 | <cc:permits | ||
239 | rdf:resource="http://creativecommons.org/ns#Reproduction" /> | ||
240 | <cc:permits | ||
241 | rdf:resource="http://creativecommons.org/ns#Distribution" /> | ||
242 | <cc:requires | ||
243 | rdf:resource="http://creativecommons.org/ns#Notice" /> | ||
244 | <cc:requires | ||
245 | rdf:resource="http://creativecommons.org/ns#Attribution" /> | ||
246 | <cc:permits | ||
247 | rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> | ||
248 | <cc:requires | ||
249 | rdf:resource="http://creativecommons.org/ns#ShareAlike" /> | ||
250 | </cc:License> | ||
251 | </rdf:RDF> | ||
252 | </metadata> | ||
253 | <g | ||
254 | id="g5346" | ||
255 | style="display:none" | ||
256 | transform="translate(-387.41463,-609.81931)"> | ||
257 | <text | ||
258 | xml:space="preserve" | ||
259 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
260 | x="453.95291" | ||
261 | y="869.96057" | ||
262 | id="text5344"><tspan | ||
263 | id="tspan5342" | ||
264 | x="453.95291" | ||
265 | y="869.96057" | ||
266 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:49.33333206px;font-family:'Ubuntu Bold';-inkscape-font-specification:'Ubuntu Bold, ';fill:#ffffff;stroke-width:1.03365779px" | ||
267 | dx="0 0 0">gnu net</tspan></text> | ||
268 | </g> | ||
269 | <g | ||
270 | transform="translate(-387.41463,-609.81931)" | ||
271 | style="display:none" | ||
272 | id="g950"> | ||
273 | <text | ||
274 | id="text948" | ||
275 | y="869.21057" | ||
276 | x="467.77612" | ||
277 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
278 | xml:space="preserve"><tspan | ||
279 | dx="0 -2.5 -3 0 -19.25 -2.5 -3" | ||
280 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:1.03365779px" | ||
281 | y="869.21057" | ||
282 | x="467.77612" | ||
283 | id="tspan946">gnu net</tspan></text> | ||
284 | </g> | ||
285 | <g | ||
286 | id="g941" | ||
287 | style="display:none" | ||
288 | transform="translate(0,-20)"> | ||
289 | <ellipse | ||
290 | ry="17.690269" | ||
291 | rx="17.68549" | ||
292 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:1.68696308;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" | ||
293 | id="ellipse937" | ||
294 | cx="157.97346" | ||
295 | cy="180.65355" /> | ||
296 | <ellipse | ||
297 | ry="17.690269" | ||
298 | rx="17.68549" | ||
299 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:1.68696308;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" | ||
300 | id="ellipse939" | ||
301 | cx="157.97346" | ||
302 | cy="111.16864" /> | ||
303 | </g> | ||
304 | <g | ||
305 | transform="translate(-387.41463,-609.81931)" | ||
306 | style="display:none" | ||
307 | id="g935"> | ||
308 | <g | ||
309 | aria-label="gnu net" | ||
310 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;image-rendering:auto" | ||
311 | id="g933"> | ||
312 | <path | ||
313 | d="m 423.90503,684.79003 h 22.14128 v 61.61056 q 0,11.55196 4.3855,16.04443 4.38546,4.49242 12.72857,4.49242 12.19374,0 20.00203,-9.94753 7.80828,-9.94753 7.80828,-27.48942 v -44.71046 h 22.14128 v 99.6893 h -22.14128 v -24.92231 q -3.31586,12.83553 -12.30071,20.10899 -8.98489,7.27346 -22.14132,7.27346 -15.29567,0 -23.95963,-9.94753 -8.664,-10.0545 -8.664,-30.59135 z" | ||
314 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:4.46906853px" | ||
315 | id="path925" /> | ||
316 | <path | ||
317 | d="m 669.48029,784.47933 h -22.14128 v -61.50359 q 0,-11.65892 -4.3855,-16.15139 -4.38546,-4.49243 -12.72857,-4.49243 -12.30071,0 -20.10899,9.94753 -7.70132,9.94754 -7.70132,27.48947 v 44.71041 h -22.14128 v -99.6893 h 22.14128 v 25.02928 q 3.31586,-12.94249 12.30071,-20.10899 8.98489,-7.27346 22.14132,-7.27346 15.29567,0 23.95967,9.94753 8.66396,9.94753 8.66396,30.59135 z" | ||
318 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:4.46906853px" | ||
319 | id="path927" /> | ||
320 | </g> | ||
321 | </g> | ||
322 | <g | ||
323 | id="g1296" | ||
324 | style="display:none" | ||
325 | transform="translate(0,-67.278107)"> | ||
326 | <path | ||
327 | style="fill:none;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
328 | d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2" | ||
329 | id="path1256" /> | ||
330 | <path | ||
331 | style="fill:none;stroke:#dddddd;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
332 | d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0" | ||
333 | id="path1258" /> | ||
334 | <path | ||
335 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
336 | d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416" | ||
337 | id="path1260" /> | ||
338 | <path | ||
339 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
340 | d="m 98.868943,129.31358 37.045597,48.02106" | ||
341 | id="path1262" /> | ||
342 | <path | ||
343 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
344 | d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819" | ||
345 | id="path1264" /> | ||
346 | <path | ||
347 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
348 | d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795" | ||
349 | id="path1266" /> | ||
350 | <path | ||
351 | transform="translate(-387.41463,-542.5412)" | ||
352 | style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#dddddd;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
353 | d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75" | ||
354 | id="path1268" /> | ||
355 | <path | ||
356 | transform="translate(-387.41463,-542.5412)" | ||
357 | style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
358 | d="m 601.57854,741.42859 -2.26809,-64.28015" | ||
359 | id="path1270" /> | ||
360 | <path | ||
361 | style="fill:none;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
362 | d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0" | ||
363 | id="path1272" /> | ||
364 | <path | ||
365 | transform="translate(-387.41463,-542.5412)" | ||
366 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
367 | d="m 475.69911,700.21367 24.57107,51.42411" | ||
368 | id="path1274" /> | ||
369 | <path | ||
370 | transform="translate(-387.41463,-542.5412)" | ||
371 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
372 | d="m 534.29164,751.63778 12.85257,40.08057" | ||
373 | id="path1276" /> | ||
374 | <path | ||
375 | transform="translate(-387.41463,-542.5412)" | ||
376 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
377 | d="m 525.21925,783.02162 0.37803,45.75234" | ||
378 | id="path1278" /> | ||
379 | <path | ||
380 | transform="translate(-387.41463,-542.5412)" | ||
381 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
382 | d="m 601.95657,742.56293 -12.09653,36.6775" | ||
383 | id="path1280" /> | ||
384 | <path | ||
385 | transform="translate(-387.41463,-542.5412)" | ||
386 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
387 | d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194" | ||
388 | id="path1282" /> | ||
389 | <path | ||
390 | transform="translate(-387.41463,-542.5412)" | ||
391 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
392 | d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z" | ||
393 | id="path1284" /> | ||
394 | <path | ||
395 | transform="translate(-387.41463,-542.5412)" | ||
396 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
397 | d="m 557.35064,768.27501 31.75336,10.5873" | ||
398 | id="path1286" /> | ||
399 | <path | ||
400 | transform="translate(-387.41463,-542.5412)" | ||
401 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
402 | d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293" | ||
403 | id="path1288" /> | ||
404 | <path | ||
405 | transform="translate(-387.41463,-542.5412)" | ||
406 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
407 | d="m 524.46323,829.53019 44.98392,-0.37812" | ||
408 | id="path1290" /> | ||
409 | <path | ||
410 | transform="translate(-387.41463,-542.5412)" | ||
411 | style="display:inline;opacity:1;fill:none;stroke:#dddddd;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
412 | d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0" | ||
413 | id="path1292" /> | ||
414 | <path | ||
415 | transform="translate(-387.41463,-542.5412)" | ||
416 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
417 | d="m 409.92428,677.14844 54.05634,6.0499" | ||
418 | id="path1294" /> | ||
419 | </g> | ||
420 | <g | ||
421 | transform="translate(0,-67.278107)" | ||
422 | style="display:none" | ||
423 | id="g1254"> | ||
424 | <ellipse | ||
425 | transform="translate(-387.41463,-542.5412)" | ||
426 | ry="4.1593032" | ||
427 | rx="4.1581793" | ||
428 | cy="829.24042" | ||
429 | cx="568.98083" | ||
430 | id="ellipse1194" | ||
431 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
432 | <ellipse | ||
433 | transform="translate(-387.41463,-542.5412)" | ||
434 | ry="4.1593032" | ||
435 | rx="4.1581793" | ||
436 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
437 | id="ellipse1196" | ||
438 | cx="588.85413" | ||
439 | cy="778.67493" /> | ||
440 | <ellipse | ||
441 | transform="translate(-387.41463,-542.5412)" | ||
442 | ry="4.1593032" | ||
443 | rx="4.1581793" | ||
444 | cy="740.67249" | ||
445 | cx="601.57867" | ||
446 | id="ellipse1198" | ||
447 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
448 | <ellipse | ||
449 | transform="translate(-387.41463,-542.5412)" | ||
450 | ry="4.1593032" | ||
451 | rx="4.1581793" | ||
452 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
453 | id="ellipse1200" | ||
454 | cx="525.79852" | ||
455 | cy="829.24042" /> | ||
456 | <ellipse | ||
457 | transform="translate(-387.41463,-542.5412)" | ||
458 | ry="4.1593032" | ||
459 | rx="4.1581793" | ||
460 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
461 | id="ellipse1202" | ||
462 | cx="557.82654" | ||
463 | cy="768.71582" /> | ||
464 | <ellipse | ||
465 | transform="translate(-387.41463,-542.5412)" | ||
466 | ry="4.1593032" | ||
467 | rx="4.1581793" | ||
468 | cy="783.02173" | ||
469 | cx="525.21936" | ||
470 | id="ellipse1204" | ||
471 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
472 | <ellipse | ||
473 | transform="translate(-387.41463,-542.5412)" | ||
474 | ry="4.1593032" | ||
475 | rx="4.1581793" | ||
476 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
477 | id="ellipse1206" | ||
478 | cx="400.09586" | ||
479 | cy="647.34271" /> | ||
480 | <ellipse | ||
481 | transform="translate(-387.41463,-542.5412)" | ||
482 | ry="4.1593032" | ||
483 | rx="4.1581793" | ||
484 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
485 | id="ellipse1208" | ||
486 | cx="450.11285" | ||
487 | cy="628.31934" /> | ||
488 | <ellipse | ||
489 | transform="translate(-387.41463,-542.5412)" | ||
490 | ry="4.1593032" | ||
491 | rx="4.1581793" | ||
492 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
493 | id="ellipse1210" | ||
494 | cx="622.36951" | ||
495 | cy="699.45752" /> | ||
496 | <ellipse | ||
497 | transform="translate(-387.41463,-542.5412)" | ||
498 | ry="4.1593032" | ||
499 | rx="4.1581793" | ||
500 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
501 | id="ellipse1212" | ||
502 | cx="547.21771" | ||
503 | cy="792.29773" /> | ||
504 | <ellipse | ||
505 | transform="translate(-387.41463,-542.5412)" | ||
506 | ry="4.1593032" | ||
507 | rx="4.1581793" | ||
508 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
509 | id="ellipse1214" | ||
510 | cx="566.20697" | ||
511 | cy="800.12549" /> | ||
512 | <ellipse | ||
513 | transform="translate(-387.41463,-542.5412)" | ||
514 | ry="4.1593032" | ||
515 | rx="4.1581793" | ||
516 | cy="751.63794" | ||
517 | cx="500.64822" | ||
518 | id="ellipse1216" | ||
519 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
520 | <ellipse | ||
521 | transform="translate(-387.41463,-542.5412)" | ||
522 | ry="4.1593032" | ||
523 | rx="4.1581793" | ||
524 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
525 | id="ellipse1218" | ||
526 | cx="533.33447" | ||
527 | cy="751.72632" /> | ||
528 | <ellipse | ||
529 | transform="translate(-387.41463,-542.5412)" | ||
530 | ry="4.1593032" | ||
531 | rx="4.1581793" | ||
532 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
533 | id="ellipse1220" | ||
534 | cx="450.75012" | ||
535 | cy="699.83545" /> | ||
536 | <ellipse | ||
537 | transform="translate(-387.41463,-542.5412)" | ||
538 | ry="4.1593032" | ||
539 | rx="4.1581793" | ||
540 | cy="700.59174" | ||
541 | cx="476.07718" | ||
542 | id="ellipse1222" | ||
543 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
544 | <ellipse | ||
545 | transform="translate(-387.41463,-542.5412)" | ||
546 | ry="4.1593032" | ||
547 | rx="4.1581793" | ||
548 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
549 | id="ellipse1224" | ||
550 | cx="521.49146" | ||
551 | cy="719.65314" /> | ||
552 | <ellipse | ||
553 | transform="translate(-387.41463,-542.5412)" | ||
554 | ry="4.1593032" | ||
555 | rx="4.1581793" | ||
556 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
557 | id="ellipse1226" | ||
558 | cx="500.6362" | ||
559 | cy="703.87305" /> | ||
560 | <ellipse | ||
561 | ry="4.1593032" | ||
562 | rx="4.1581793" | ||
563 | cy="134.28851" | ||
564 | cx="211.9584" | ||
565 | id="ellipse1228" | ||
566 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
567 | <ellipse | ||
568 | transform="translate(-387.41463,-542.5412)" | ||
569 | ry="4.1593032" | ||
570 | rx="4.1581793" | ||
571 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
572 | id="ellipse1230" | ||
573 | cx="576.62964" | ||
574 | cy="713.44794" /> | ||
575 | <ellipse | ||
576 | ry="4.1593032" | ||
577 | rx="4.1581793" | ||
578 | cy="123.16669" | ||
579 | cx="43.166531" | ||
580 | id="ellipse1232" | ||
581 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
582 | <ellipse | ||
583 | ry="4.1593032" | ||
584 | rx="4.1581793" | ||
585 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
586 | id="ellipse1234" | ||
587 | cx="98.865997" | ||
588 | cy="129.43542" /> | ||
589 | <ellipse | ||
590 | ry="4.1593032" | ||
591 | rx="4.1581793" | ||
592 | cy="130.05022" | ||
593 | cx="267.08618" | ||
594 | id="ellipse1236" | ||
595 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
596 | <ellipse | ||
597 | transform="translate(-387.41463,-542.5412)" | ||
598 | ry="4.1593032" | ||
599 | rx="4.1581793" | ||
600 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
601 | id="ellipse1238" | ||
602 | cx="679.07196" | ||
603 | cy="686.22339" /> | ||
604 | <ellipse | ||
605 | transform="translate(-387.41463,-542.5412)" | ||
606 | ry="4.1593032" | ||
607 | rx="4.1581793" | ||
608 | cy="748.99109" | ||
609 | cx="577.00763" | ||
610 | id="ellipse1240" | ||
611 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
612 | <ellipse | ||
613 | transform="translate(-387.41463,-542.5412)" | ||
614 | ry="4.1593032" | ||
615 | rx="4.1581793" | ||
616 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
617 | id="ellipse1242" | ||
618 | cx="577.00763" | ||
619 | cy="748.99109" /> | ||
620 | <ellipse | ||
621 | transform="translate(-387.41463,-542.5412)" | ||
622 | ry="4.1593032" | ||
623 | rx="4.1581793" | ||
624 | cy="748.99109" | ||
625 | cx="577.07013" | ||
626 | id="ellipse1244" | ||
627 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
628 | <ellipse | ||
629 | transform="translate(0,-3e-6)" | ||
630 | ry="4.1593032" | ||
631 | rx="4.1581793" | ||
632 | cy="133.85095" | ||
633 | cx="22.887779" | ||
634 | id="ellipse1246" | ||
635 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
636 | <ellipse | ||
637 | transform="translate(-387.41463,-542.5412)" | ||
638 | ry="4.1593032" | ||
639 | rx="4.1581793" | ||
640 | cy="682.1922" | ||
641 | cx="462.47165" | ||
642 | id="ellipse1248" | ||
643 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
644 | <ellipse | ||
645 | transform="translate(-387.41463,-542.5412)" | ||
646 | ry="4.1593032" | ||
647 | rx="4.1581793" | ||
648 | cy="647.3053" | ||
649 | cx="694.58264" | ||
650 | id="ellipse1250" | ||
651 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> | ||
652 | <ellipse | ||
653 | transform="translate(-387.41463,-542.5412)" | ||
654 | ry="4.1593032" | ||
655 | rx="4.1581793" | ||
656 | style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
657 | id="ellipse1252" | ||
658 | cx="649.61285" | ||
659 | cy="628.31934" /> | ||
660 | </g> | ||
661 | <g | ||
662 | transform="translate(0,-67.278107)" | ||
663 | style="display:inline" | ||
664 | id="g1533"> | ||
665 | <path | ||
666 | id="path1493" | ||
667 | d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2" | ||
668 | style="fill:none;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||
669 | <path | ||
670 | id="path1495" | ||
671 | d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0" | ||
672 | style="fill:none;stroke:#3399cc;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||
673 | <path | ||
674 | id="path1497" | ||
675 | d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416" | ||
676 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||
677 | <path | ||
678 | id="path1499" | ||
679 | d="m 98.868943,129.31358 37.045597,48.02106" | ||
680 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||
681 | <path | ||
682 | id="path1501" | ||
683 | d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819" | ||
684 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||
685 | <path | ||
686 | id="path1503" | ||
687 | d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795" | ||
688 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||
689 | <path | ||
690 | id="path1505" | ||
691 | d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75" | ||
692 | style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#3399cc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
693 | transform="translate(-387.41463,-542.5412)" /> | ||
694 | <path | ||
695 | id="path1507" | ||
696 | d="m 601.57854,741.42859 -2.26809,-64.28015" | ||
697 | style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
698 | transform="translate(-387.41463,-542.5412)" /> | ||
699 | <path | ||
700 | id="path1509" | ||
701 | d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0" | ||
702 | style="fill:none;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> | ||
703 | <path | ||
704 | id="path1511" | ||
705 | d="m 475.69911,700.21367 24.57107,51.42411" | ||
706 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
707 | transform="translate(-387.41463,-542.5412)" /> | ||
708 | <path | ||
709 | id="path1513" | ||
710 | d="m 534.29164,751.63778 12.85257,40.08057" | ||
711 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
712 | transform="translate(-387.41463,-542.5412)" /> | ||
713 | <path | ||
714 | id="path1515" | ||
715 | d="m 525.21925,783.02162 0.37803,45.75234" | ||
716 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
717 | transform="translate(-387.41463,-542.5412)" /> | ||
718 | <path | ||
719 | id="path1517" | ||
720 | d="m 601.95657,742.56293 -12.09653,36.6775" | ||
721 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
722 | transform="translate(-387.41463,-542.5412)" /> | ||
723 | <path | ||
724 | id="path1519" | ||
725 | d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194" | ||
726 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
727 | transform="translate(-387.41463,-542.5412)" /> | ||
728 | <path | ||
729 | id="path1521" | ||
730 | d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z" | ||
731 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
732 | transform="translate(-387.41463,-542.5412)" /> | ||
733 | <path | ||
734 | id="path1523" | ||
735 | d="m 557.35064,768.27501 31.75336,10.5873" | ||
736 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
737 | transform="translate(-387.41463,-542.5412)" /> | ||
738 | <path | ||
739 | id="path1525" | ||
740 | d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293" | ||
741 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
742 | transform="translate(-387.41463,-542.5412)" /> | ||
743 | <path | ||
744 | id="path1527" | ||
745 | d="m 524.46323,829.53019 44.98392,-0.37812" | ||
746 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
747 | transform="translate(-387.41463,-542.5412)" /> | ||
748 | <path | ||
749 | id="path1529" | ||
750 | d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0" | ||
751 | style="display:inline;opacity:1;fill:none;stroke:#3399cc;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
752 | transform="translate(-387.41463,-542.5412)" /> | ||
753 | <path | ||
754 | id="path1531" | ||
755 | d="m 409.92428,677.14844 54.05634,6.0499" | ||
756 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | ||
757 | transform="translate(-387.41463,-542.5412)" /> | ||
758 | </g> | ||
759 | <g | ||
760 | id="g1491" | ||
761 | style="display:inline" | ||
762 | transform="translate(0,-67.278107)"> | ||
763 | <ellipse | ||
764 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
765 | id="ellipse1431" | ||
766 | cx="568.98083" | ||
767 | cy="829.24042" | ||
768 | rx="4.1581793" | ||
769 | ry="4.1593032" | ||
770 | transform="translate(-387.41463,-542.5412)" /> | ||
771 | <ellipse | ||
772 | cy="778.67493" | ||
773 | cx="588.85413" | ||
774 | id="ellipse1433" | ||
775 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
776 | rx="4.1581793" | ||
777 | ry="4.1593032" | ||
778 | transform="translate(-387.41463,-542.5412)" /> | ||
779 | <ellipse | ||
780 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
781 | id="ellipse1435" | ||
782 | cx="601.57867" | ||
783 | cy="740.67249" | ||
784 | rx="4.1581793" | ||
785 | ry="4.1593032" | ||
786 | transform="translate(-387.41463,-542.5412)" /> | ||
787 | <ellipse | ||
788 | cy="829.24042" | ||
789 | cx="525.79852" | ||
790 | id="ellipse1437" | ||
791 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
792 | rx="4.1581793" | ||
793 | ry="4.1593032" | ||
794 | transform="translate(-387.41463,-542.5412)" /> | ||
795 | <ellipse | ||
796 | cy="768.71582" | ||
797 | cx="557.82654" | ||
798 | id="ellipse1439" | ||
799 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
800 | rx="4.1581793" | ||
801 | ry="4.1593032" | ||
802 | transform="translate(-387.41463,-542.5412)" /> | ||
803 | <ellipse | ||
804 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
805 | id="ellipse1441" | ||
806 | cx="525.21936" | ||
807 | cy="783.02173" | ||
808 | rx="4.1581793" | ||
809 | ry="4.1593032" | ||
810 | transform="translate(-387.41463,-542.5412)" /> | ||
811 | <ellipse | ||
812 | cy="647.34271" | ||
813 | cx="400.09586" | ||
814 | id="ellipse1443" | ||
815 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
816 | rx="4.1581793" | ||
817 | ry="4.1593032" | ||
818 | transform="translate(-387.41463,-542.5412)" /> | ||
819 | <ellipse | ||
820 | cy="628.31934" | ||
821 | cx="450.11285" | ||
822 | id="ellipse1445" | ||
823 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
824 | rx="4.1581793" | ||
825 | ry="4.1593032" | ||
826 | transform="translate(-387.41463,-542.5412)" /> | ||
827 | <ellipse | ||
828 | cy="699.45752" | ||
829 | cx="622.36951" | ||
830 | id="ellipse1447" | ||
831 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
832 | rx="4.1581793" | ||
833 | ry="4.1593032" | ||
834 | transform="translate(-387.41463,-542.5412)" /> | ||
835 | <ellipse | ||
836 | cy="792.29773" | ||
837 | cx="547.21771" | ||
838 | id="ellipse1449" | ||
839 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
840 | rx="4.1581793" | ||
841 | ry="4.1593032" | ||
842 | transform="translate(-387.41463,-542.5412)" /> | ||
843 | <ellipse | ||
844 | cy="800.12549" | ||
845 | cx="566.20697" | ||
846 | id="ellipse1451" | ||
847 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
848 | rx="4.1581793" | ||
849 | ry="4.1593032" | ||
850 | transform="translate(-387.41463,-542.5412)" /> | ||
851 | <ellipse | ||
852 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
853 | id="ellipse1453" | ||
854 | cx="500.64822" | ||
855 | cy="751.63794" | ||
856 | rx="4.1581793" | ||
857 | ry="4.1593032" | ||
858 | transform="translate(-387.41463,-542.5412)" /> | ||
859 | <ellipse | ||
860 | cy="751.72632" | ||
861 | cx="533.33447" | ||
862 | id="ellipse1455" | ||
863 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
864 | rx="4.1581793" | ||
865 | ry="4.1593032" | ||
866 | transform="translate(-387.41463,-542.5412)" /> | ||
867 | <ellipse | ||
868 | cy="699.83545" | ||
869 | cx="450.75012" | ||
870 | id="ellipse1457" | ||
871 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
872 | rx="4.1581793" | ||
873 | ry="4.1593032" | ||
874 | transform="translate(-387.41463,-542.5412)" /> | ||
875 | <ellipse | ||
876 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
877 | id="ellipse1459" | ||
878 | cx="476.07718" | ||
879 | cy="700.59174" | ||
880 | rx="4.1581793" | ||
881 | ry="4.1593032" | ||
882 | transform="translate(-387.41463,-542.5412)" /> | ||
883 | <ellipse | ||
884 | cy="719.65314" | ||
885 | cx="521.49146" | ||
886 | id="ellipse1461" | ||
887 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
888 | rx="4.1581793" | ||
889 | ry="4.1593032" | ||
890 | transform="translate(-387.41463,-542.5412)" /> | ||
891 | <ellipse | ||
892 | cy="703.87305" | ||
893 | cx="500.6362" | ||
894 | id="ellipse1463" | ||
895 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
896 | rx="4.1581793" | ||
897 | ry="4.1593032" | ||
898 | transform="translate(-387.41463,-542.5412)" /> | ||
899 | <ellipse | ||
900 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
901 | id="ellipse1465" | ||
902 | cx="211.9584" | ||
903 | cy="134.28851" | ||
904 | rx="4.1581793" | ||
905 | ry="4.1593032" /> | ||
906 | <ellipse | ||
907 | cy="713.44794" | ||
908 | cx="576.62964" | ||
909 | id="ellipse1467" | ||
910 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
911 | rx="4.1581793" | ||
912 | ry="4.1593032" | ||
913 | transform="translate(-387.41463,-542.5412)" /> | ||
914 | <ellipse | ||
915 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
916 | id="ellipse1469" | ||
917 | cx="43.166531" | ||
918 | cy="123.16669" | ||
919 | rx="4.1581793" | ||
920 | ry="4.1593032" /> | ||
921 | <ellipse | ||
922 | cy="129.43542" | ||
923 | cx="98.865997" | ||
924 | id="ellipse1471" | ||
925 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
926 | rx="4.1581793" | ||
927 | ry="4.1593032" /> | ||
928 | <ellipse | ||
929 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
930 | id="ellipse1473" | ||
931 | cx="267.08618" | ||
932 | cy="130.05022" | ||
933 | rx="4.1581793" | ||
934 | ry="4.1593032" /> | ||
935 | <ellipse | ||
936 | cy="686.22339" | ||
937 | cx="679.07196" | ||
938 | id="ellipse1475" | ||
939 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
940 | rx="4.1581793" | ||
941 | ry="4.1593032" | ||
942 | transform="translate(-387.41463,-542.5412)" /> | ||
943 | <ellipse | ||
944 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
945 | id="ellipse1477" | ||
946 | cx="577.00763" | ||
947 | cy="748.99109" | ||
948 | rx="4.1581793" | ||
949 | ry="4.1593032" | ||
950 | transform="translate(-387.41463,-542.5412)" /> | ||
951 | <ellipse | ||
952 | cy="748.99109" | ||
953 | cx="577.00763" | ||
954 | id="ellipse1479" | ||
955 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
956 | rx="4.1581793" | ||
957 | ry="4.1593032" | ||
958 | transform="translate(-387.41463,-542.5412)" /> | ||
959 | <ellipse | ||
960 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
961 | id="ellipse1481" | ||
962 | cx="577.07013" | ||
963 | cy="748.99109" | ||
964 | rx="4.1581793" | ||
965 | ry="4.1593032" | ||
966 | transform="translate(-387.41463,-542.5412)" /> | ||
967 | <ellipse | ||
968 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
969 | id="ellipse1483" | ||
970 | cx="22.887779" | ||
971 | cy="133.85095" | ||
972 | rx="4.1581793" | ||
973 | ry="4.1593032" | ||
974 | transform="translate(0,-3e-6)" /> | ||
975 | <ellipse | ||
976 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
977 | id="ellipse1485" | ||
978 | cx="462.47165" | ||
979 | cy="682.1922" | ||
980 | rx="4.1581793" | ||
981 | ry="4.1593032" | ||
982 | transform="translate(-387.41463,-542.5412)" /> | ||
983 | <ellipse | ||
984 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
985 | id="ellipse1487" | ||
986 | cx="694.58264" | ||
987 | cy="647.3053" | ||
988 | rx="4.1581793" | ||
989 | ry="4.1593032" | ||
990 | transform="translate(-387.41463,-542.5412)" /> | ||
991 | <ellipse | ||
992 | cy="628.31934" | ||
993 | cx="649.61285" | ||
994 | id="ellipse1489" | ||
995 | style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
996 | rx="4.1581793" | ||
997 | ry="4.1593032" | ||
998 | transform="translate(-387.41463,-542.5412)" /> | ||
999 | </g> | ||
1000 | <g | ||
1001 | id="g1539" | ||
1002 | style="display:inline" | ||
1003 | transform="translate(0,-20)"> | ||
1004 | <ellipse | ||
1005 | ry="4.1593032" | ||
1006 | rx="4.1581793" | ||
1007 | style="display:inline;opacity:1;fill:#3399cc;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1008 | id="ellipse1535" | ||
1009 | cx="159.80099" | ||
1010 | cy="276.32968" /> | ||
1011 | <ellipse | ||
1012 | ry="4.1593032" | ||
1013 | rx="4.1581793" | ||
1014 | style="display:inline;opacity:1;fill:#3399cc;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1015 | id="ellipse1537" | ||
1016 | cx="159.80099" | ||
1017 | cy="259.99252" /> | ||
1018 | </g> | ||
1019 | <g | ||
1020 | transform="translate(0,-67.278107)" | ||
1021 | style="display:none" | ||
1022 | id="layer3"> | ||
1023 | <path | ||
1024 | id="path5313" | ||
1025 | d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2" | ||
1026 | style="fill:none;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" /> | ||
1027 | <path | ||
1028 | id="path5311" | ||
1029 | d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0" | ||
1030 | style="fill:none;stroke:#cc0000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" /> | ||
1031 | <path | ||
1032 | id="path9316" | ||
1033 | d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416" | ||
1034 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" /> | ||
1035 | <path | ||
1036 | id="path9318" | ||
1037 | d="m 98.868943,129.31358 37.045597,48.02106" | ||
1038 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" /> | ||
1039 | <path | ||
1040 | id="path12058" | ||
1041 | d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819" | ||
1042 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" /> | ||
1043 | <path | ||
1044 | id="path12250" | ||
1045 | d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795" | ||
1046 | style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" /> | ||
1047 | <path | ||
1048 | id="path5161" | ||
1049 | d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75" | ||
1050 | style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" | ||
1051 | transform="translate(-387.41463,-542.5412)" /> | ||
1052 | <path | ||
1053 | id="path12206" | ||
1054 | d="m 601.57854,741.42859 -2.26809,-64.28015" | ||
1055 | style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" | ||
1056 | transform="translate(-387.41463,-542.5412)" /> | ||
1057 | <path | ||
1058 | id="path5331" | ||
1059 | d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0" | ||
1060 | style="fill:none;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" /> | ||
1061 | <path | ||
1062 | id="path9320" | ||
1063 | d="m 475.69911,700.21367 24.57107,51.42411" | ||
1064 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" | ||
1065 | transform="translate(-387.41463,-542.5412)" /> | ||
1066 | <path | ||
1067 | id="path9322" | ||
1068 | d="m 534.29164,751.63778 12.85257,40.08057" | ||
1069 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" | ||
1070 | transform="translate(-387.41463,-542.5412)" /> | ||
1071 | <path | ||
1072 | id="path9324" | ||
1073 | d="m 525.21925,783.02162 0.37803,45.75234" | ||
1074 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" | ||
1075 | transform="translate(-387.41463,-542.5412)" /> | ||
1076 | <path | ||
1077 | id="path9326" | ||
1078 | d="m 601.95657,742.56293 -12.09653,36.6775" | ||
1079 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" | ||
1080 | transform="translate(-387.41463,-542.5412)" /> | ||
1081 | <path | ||
1082 | id="path12060" | ||
1083 | d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194" | ||
1084 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" | ||
1085 | transform="translate(-387.41463,-542.5412)" /> | ||
1086 | <path | ||
1087 | id="path12208" | ||
1088 | d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z" | ||
1089 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843" | ||
1090 | transform="translate(-387.41463,-542.5412)" /> | ||
1091 | <path | ||
1092 | id="path12210" | ||
1093 | d="m 557.35064,768.27501 31.75336,10.5873" | ||
1094 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843" | ||
1095 | transform="translate(-387.41463,-542.5412)" /> | ||
1096 | <path | ||
1097 | id="path12212" | ||
1098 | d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293" | ||
1099 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843" | ||
1100 | transform="translate(-387.41463,-542.5412)" /> | ||
1101 | <path | ||
1102 | id="path12216" | ||
1103 | d="m 524.46323,829.53019 44.98392,-0.37812" | ||
1104 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" | ||
1105 | transform="translate(-387.41463,-542.5412)" /> | ||
1106 | <path | ||
1107 | id="path5163" | ||
1108 | d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0" | ||
1109 | style="display:inline;opacity:1;fill:none;stroke:#cc0000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" | ||
1110 | transform="translate(-387.41463,-542.5412)" /> | ||
1111 | <path | ||
1112 | id="path12214" | ||
1113 | d="m 409.92428,677.14844 54.05634,6.0499" | ||
1114 | style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843" | ||
1115 | transform="translate(-387.41463,-542.5412)" /> | ||
1116 | </g> | ||
1117 | <g | ||
1118 | id="g325" | ||
1119 | style="display:none" | ||
1120 | transform="translate(0,-67.278107)"> | ||
1121 | <ellipse | ||
1122 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1123 | id="ellipse12254" | ||
1124 | cx="568.98083" | ||
1125 | cy="829.24042" | ||
1126 | rx="4.1581793" | ||
1127 | ry="4.1593032" | ||
1128 | transform="translate(-387.41463,-542.5412)" /> | ||
1129 | <ellipse | ||
1130 | cy="778.67493" | ||
1131 | cx="588.85413" | ||
1132 | id="ellipse12290" | ||
1133 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1134 | rx="4.1581793" | ||
1135 | ry="4.1593032" | ||
1136 | transform="translate(-387.41463,-542.5412)" /> | ||
1137 | <ellipse | ||
1138 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1139 | id="ellipse12284" | ||
1140 | cx="601.57867" | ||
1141 | cy="740.67249" | ||
1142 | rx="4.1581793" | ||
1143 | ry="4.1593032" | ||
1144 | transform="translate(-387.41463,-542.5412)" /> | ||
1145 | <ellipse | ||
1146 | cy="829.24042" | ||
1147 | cx="525.79852" | ||
1148 | id="ellipse12256" | ||
1149 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1150 | rx="4.1581793" | ||
1151 | ry="4.1593032" | ||
1152 | transform="translate(-387.41463,-542.5412)" /> | ||
1153 | <ellipse | ||
1154 | cy="768.71582" | ||
1155 | cx="557.82654" | ||
1156 | id="ellipse12306" | ||
1157 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1158 | rx="4.1581793" | ||
1159 | ry="4.1593032" | ||
1160 | transform="translate(-387.41463,-542.5412)" /> | ||
1161 | <ellipse | ||
1162 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1163 | id="ellipse12280" | ||
1164 | cx="525.21936" | ||
1165 | cy="783.02173" | ||
1166 | rx="4.1581793" | ||
1167 | ry="4.1593032" | ||
1168 | transform="translate(-387.41463,-542.5412)" /> | ||
1169 | <ellipse | ||
1170 | cy="647.34271" | ||
1171 | cx="400.09586" | ||
1172 | id="ellipse12258" | ||
1173 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1174 | rx="4.1581793" | ||
1175 | ry="4.1593032" | ||
1176 | transform="translate(-387.41463,-542.5412)" /> | ||
1177 | <ellipse | ||
1178 | cy="628.31934" | ||
1179 | cx="450.11285" | ||
1180 | id="ellipse12258-3" | ||
1181 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1182 | rx="4.1581793" | ||
1183 | ry="4.1593032" | ||
1184 | transform="translate(-387.41463,-542.5412)" /> | ||
1185 | <ellipse | ||
1186 | cy="699.45752" | ||
1187 | cx="622.36951" | ||
1188 | id="ellipse12294" | ||
1189 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1190 | rx="4.1581793" | ||
1191 | ry="4.1593032" | ||
1192 | transform="translate(-387.41463,-542.5412)" /> | ||
1193 | <ellipse | ||
1194 | cy="792.29773" | ||
1195 | cx="547.21771" | ||
1196 | id="ellipse12252" | ||
1197 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1198 | rx="4.1581793" | ||
1199 | ry="4.1593032" | ||
1200 | transform="translate(-387.41463,-542.5412)" /> | ||
1201 | <ellipse | ||
1202 | cy="800.12549" | ||
1203 | cx="566.20697" | ||
1204 | id="ellipse12282" | ||
1205 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1206 | rx="4.1581793" | ||
1207 | ry="4.1593032" | ||
1208 | transform="translate(-387.41463,-542.5412)" /> | ||
1209 | <ellipse | ||
1210 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1211 | id="ellipse12276" | ||
1212 | cx="500.64822" | ||
1213 | cy="751.63794" | ||
1214 | rx="4.1581793" | ||
1215 | ry="4.1593032" | ||
1216 | transform="translate(-387.41463,-542.5412)" /> | ||
1217 | <ellipse | ||
1218 | cy="751.72632" | ||
1219 | cx="533.33447" | ||
1220 | id="ellipse12278" | ||
1221 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1222 | rx="4.1581793" | ||
1223 | ry="4.1593032" | ||
1224 | transform="translate(-387.41463,-542.5412)" /> | ||
1225 | <ellipse | ||
1226 | cy="699.83545" | ||
1227 | cx="450.75012" | ||
1228 | id="ellipse12262" | ||
1229 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1230 | rx="4.1581793" | ||
1231 | ry="4.1593032" | ||
1232 | transform="translate(-387.41463,-542.5412)" /> | ||
1233 | <ellipse | ||
1234 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1235 | id="ellipse12268" | ||
1236 | cx="476.07718" | ||
1237 | cy="700.59174" | ||
1238 | rx="4.1581793" | ||
1239 | ry="4.1593032" | ||
1240 | transform="translate(-387.41463,-542.5412)" /> | ||
1241 | <ellipse | ||
1242 | cy="719.65314" | ||
1243 | cx="521.49146" | ||
1244 | id="ellipse12270" | ||
1245 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1246 | rx="4.1581793" | ||
1247 | ry="4.1593032" | ||
1248 | transform="translate(-387.41463,-542.5412)" /> | ||
1249 | <ellipse | ||
1250 | cy="703.87305" | ||
1251 | cx="500.6362" | ||
1252 | id="ellipse12274" | ||
1253 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1254 | rx="4.1581793" | ||
1255 | ry="4.1593032" | ||
1256 | transform="translate(-387.41463,-542.5412)" /> | ||
1257 | <ellipse | ||
1258 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1259 | id="ellipse12292" | ||
1260 | cx="211.9584" | ||
1261 | cy="134.28851" | ||
1262 | rx="4.1581793" | ||
1263 | ry="4.1593032" /> | ||
1264 | <ellipse | ||
1265 | cy="713.44794" | ||
1266 | cx="576.62964" | ||
1267 | id="ellipse12286" | ||
1268 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1269 | rx="4.1581793" | ||
1270 | ry="4.1593032" | ||
1271 | transform="translate(-387.41463,-542.5412)" /> | ||
1272 | <ellipse | ||
1273 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1274 | id="ellipse12260" | ||
1275 | cx="43.166531" | ||
1276 | cy="123.16669" | ||
1277 | rx="4.1581793" | ||
1278 | ry="4.1593032" /> | ||
1279 | <ellipse | ||
1280 | cy="129.43542" | ||
1281 | cx="98.865997" | ||
1282 | id="ellipse12266" | ||
1283 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1284 | rx="4.1581793" | ||
1285 | ry="4.1593032" /> | ||
1286 | <ellipse | ||
1287 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1288 | id="ellipse12296" | ||
1289 | cx="267.08618" | ||
1290 | cy="130.05022" | ||
1291 | rx="4.1581793" | ||
1292 | ry="4.1593032" /> | ||
1293 | <ellipse | ||
1294 | cy="686.22339" | ||
1295 | cx="679.07196" | ||
1296 | id="ellipse12298" | ||
1297 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1298 | rx="4.1581793" | ||
1299 | ry="4.1593032" | ||
1300 | transform="translate(-387.41463,-542.5412)" /> | ||
1301 | <ellipse | ||
1302 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1303 | id="ellipse12288" | ||
1304 | cx="577.00763" | ||
1305 | cy="748.99109" | ||
1306 | rx="4.1581793" | ||
1307 | ry="4.1593032" | ||
1308 | transform="translate(-387.41463,-542.5412)" /> | ||
1309 | <ellipse | ||
1310 | cy="748.99109" | ||
1311 | cx="577.00763" | ||
1312 | id="ellipse12302" | ||
1313 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1314 | rx="4.1581793" | ||
1315 | ry="4.1593032" | ||
1316 | transform="translate(-387.41463,-542.5412)" /> | ||
1317 | <ellipse | ||
1318 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1319 | id="ellipse12304" | ||
1320 | cx="577.07013" | ||
1321 | cy="748.99109" | ||
1322 | rx="4.1581793" | ||
1323 | ry="4.1593032" | ||
1324 | transform="translate(-387.41463,-542.5412)" /> | ||
1325 | <ellipse | ||
1326 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1327 | id="ellipse12264" | ||
1328 | cx="22.887779" | ||
1329 | cy="133.85095" | ||
1330 | rx="4.1581793" | ||
1331 | ry="4.1593032" | ||
1332 | transform="translate(0,-3e-6)" /> | ||
1333 | <ellipse | ||
1334 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1335 | id="ellipse12272" | ||
1336 | cx="462.47165" | ||
1337 | cy="682.1922" | ||
1338 | rx="4.1581793" | ||
1339 | ry="4.1593032" | ||
1340 | transform="translate(-387.41463,-542.5412)" /> | ||
1341 | <ellipse | ||
1342 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1343 | id="ellipse12300" | ||
1344 | cx="694.58264" | ||
1345 | cy="647.3053" | ||
1346 | rx="4.1581793" | ||
1347 | ry="4.1593032" | ||
1348 | transform="translate(-387.41463,-542.5412)" /> | ||
1349 | <ellipse | ||
1350 | cy="628.31934" | ||
1351 | cx="649.61285" | ||
1352 | id="ellipse12258-3-0" | ||
1353 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" | ||
1354 | rx="4.1581793" | ||
1355 | ry="4.1593032" | ||
1356 | transform="translate(-387.41463,-542.5412)" /> | ||
1357 | </g> | ||
1358 | <g | ||
1359 | transform="translate(0,-20)" | ||
1360 | style="display:none" | ||
1361 | id="layer6"> | ||
1362 | <ellipse | ||
1363 | cy="276.32968" | ||
1364 | cx="159.80099" | ||
1365 | id="ellipse12282-8-9-0" | ||
1366 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" | ||
1367 | rx="4.1581793" | ||
1368 | ry="4.1593032" /> | ||
1369 | <ellipse | ||
1370 | cy="259.99252" | ||
1371 | cx="159.80099" | ||
1372 | id="ellipse12282-8-9" | ||
1373 | style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" | ||
1374 | rx="4.1581793" | ||
1375 | ry="4.1593032" /> | ||
1376 | </g> | ||
1377 | <g | ||
1378 | id="g975" | ||
1379 | style="display:inline" | ||
1380 | transform="translate(-387.41463,-609.81931)"> | ||
1381 | <g | ||
1382 | id="text973" | ||
1383 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;image-rendering:auto" | ||
1384 | aria-label="gnu net"> | ||
1385 | <path | ||
1386 | id="path977" | ||
1387 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1" | ||
1388 | d="m 489.62118,868.96318 q 0,2.375 -0.81641,4.23046 -0.81641,1.85547 -2.30078,3.14193 -1.45964,1.28646 -3.46354,1.95443 -1.97917,0.69271 -4.42839,0.69271 -6.01172,0 -10.26693,-3.63672 l 2.42448,-3.95834 q 3.53776,3.04297 7.84245,3.04297 2.64714,0 4.25521,-1.31119 1.63281,-1.28646 1.63281,-4.0573 v -2.47395 q -1.58333,1.36067 -3.04297,2.02864 -1.45963,0.64323 -3.38932,0.64323 -2.22656,0 -4.13151,-0.9401 -1.90495,-0.94011 -3.29037,-2.54818 -1.36067,-1.63281 -2.15234,-3.78516 -0.76693,-2.15234 -0.76693,-4.57682 0,-2.42448 0.76693,-4.57682 0.79167,-2.17709 2.15234,-3.76042 1.38542,-1.60807 3.29037,-2.52344 1.90495,-0.9401 4.13151,-0.9401 1.92969,0 3.4388,0.66797 1.50912,0.64323 2.99349,1.95442 v -2.07812 h 5.1211 z m -5.1211,-16.67448 q -0.91536,-1.01433 -2.375,-1.53386 -1.43489,-0.54427 -2.79557,-0.54427 -2.89453,0 -4.70052,2.02865 -1.78125,2.02864 -1.78125,5.17057 0,1.55859 0.47005,2.89453 0.49479,1.3112 1.33594,2.27604 0.86588,0.96485 2.05338,1.53386 1.21224,0.54427 2.6224,0.54427 1.36068,0 2.79557,-0.54427 1.45964,-0.56901 2.375,-1.58334 z" /> | ||
1389 | <path | ||
1390 | id="path979" | ||
1391 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1" | ||
1392 | d="m 514.82951,869.21057 h -5.12109 v -14.22526 q 0,-2.69661 -1.01433,-3.73568 -1.01432,-1.03906 -2.94401,-1.03906 -2.84505,0 -4.65104,2.30078 -1.78125,2.30078 -1.78125,6.35808 v 10.34114 h -5.12109 v -23.05729 h 5.12109 v 5.78906 q 0.76693,-2.99349 2.84505,-4.65104 2.07813,-1.68229 5.1211,-1.68229 3.53776,0 5.54166,2.30078 2.00391,2.30078 2.00391,7.07552 z" /> | ||
1393 | <path | ||
1394 | id="path981" | ||
1395 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1" | ||
1396 | d="m 518.90503,846.15328 h 5.12109 v 14.25 q 0,2.67187 1.01433,3.71094 1.01432,1.03906 2.94401,1.03906 2.82031,0 4.6263,-2.30078 1.80599,-2.30078 1.80599,-6.35807 v -10.34115 h 5.12109 v 23.05729 h -5.12109 v -5.76432 q -0.76693,2.96875 -2.84505,4.65104 -2.07813,1.68229 -5.1211,1.68229 -3.53776,0 -5.54166,-2.30078 -2.00391,-2.32552 -2.00391,-7.07552 z" /> | ||
1397 | <path | ||
1398 | id="path983" | ||
1399 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1" | ||
1400 | d="m 575.70451,869.21057 h -5.12109 v -14.22526 q 0,-2.69661 -1.01433,-3.73568 -1.01432,-1.03906 -2.94401,-1.03906 -2.84505,0 -4.65104,2.30078 -1.78125,2.30078 -1.78125,6.35808 v 10.34114 h -5.12109 v -23.05729 h 5.12109 v 5.78906 q 0.76693,-2.99349 2.84505,-4.65104 2.07813,-1.68229 5.1211,-1.68229 3.53776,0 5.54167,2.30078 2.0039,2.30078 2.0039,7.07552 z" /> | ||
1401 | <path | ||
1402 | id="path985" | ||
1403 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1" | ||
1404 | d="m 583.76832,859.63635 q 0.37109,2.375 2.2513,3.95834 1.90495,1.55859 5.09635,1.55859 2.4987,0 4.32943,-0.76693 1.85547,-0.79166 3.19141,-2.07812 l 2.62239,3.61198 q -2.22656,2.22656 -4.72526,3.04297 -2.47396,0.8164 -5.41797,0.8164 -2.67187,0 -4.97265,-0.89062 -2.30079,-0.89063 -3.98308,-2.47396 -1.68229,-1.60807 -2.64713,-3.8099 -0.94011,-2.20182 -0.94011,-4.89844 0,-2.62239 0.86589,-4.82421 0.89062,-2.22657 2.47396,-3.83464 1.60807,-1.63281 3.83463,-2.52344 2.22657,-0.91536 4.92318,-0.91536 2.79557,0 5.07161,0.96484 2.27605,0.94011 3.88412,2.7461 1.63281,1.80599 2.54818,4.42838 0.91536,2.59766 0.91536,5.88802 z m 13.53255,-4.5026 q -0.39584,-2.22656 -2.30078,-3.5625 -1.90495,-1.36068 -4.32943,-1.36068 -2.42448,0 -4.35417,1.36068 -1.92968,1.33594 -2.32552,3.5625 z" /> | ||
1405 | <path | ||
1406 | id="path987" | ||
1407 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1" | ||
1408 | d="m 627.08081,861.86291 q -0.39583,3.63672 -2.86979,5.78907 -2.44922,2.1276 -6.13542,2.1276 -2.02864,0 -3.71094,-0.66797 -1.68229,-0.66797 -2.86979,-1.85547 -1.1875,-1.1875 -1.85547,-2.84505 -0.64322,-1.68229 -0.64322,-3.66146 v -9.97005 h -5.22006 v -4.6263 h 5.22006 v -9.22787 h 5.12109 v 9.22787 h 9.67318 v 4.6263 h -9.67318 v 9.97005 q 0,2.22657 1.08854,3.31511 1.08854,1.08854 2.86979,1.08854 2.17709,0 3.24089,-1.26172 1.0638,-1.26172 1.26172,-3.04297 z" /> | ||
1409 | </g> | ||
1410 | </g> | ||
1411 | </svg> | ||
diff --git a/contrib/gnunet-arch-full.svg b/contrib/gnunet-arch-full.svg new file mode 100644 index 000000000..766f2b855 --- /dev/null +++ b/contrib/gnunet-arch-full.svg | |||
@@ -0,0 +1,648 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" | ||
3 | "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||
4 | <!-- Generated by graphviz version 2.38.0 (20140413.2041) | ||
5 | --> | ||
6 | <!-- Title: dependencies Pages: 1 --> | ||
7 | <svg width="1277pt" height="836pt" | ||
8 | viewBox="0.00 0.00 1276.81 836.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
9 | <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 832)"> | ||
10 | <title>dependencies</title> | ||
11 | <polygon fill="white" stroke="none" points="-4,4 -4,-832 1272.81,-832 1272.81,4 -4,4"/> | ||
12 | <!-- voting --> | ||
13 | <g id="node1" class="node"><title>voting</title> | ||
14 | <polygon fill="none" stroke="black" points="120.944,-743.562 80,-756 39.0559,-743.562 39.0942,-723.438 120.906,-723.438 120.944,-743.562"/> | ||
15 | <text text-anchor="middle" x="80" y="-734.3" font-family="Times,serif" font-size="14.00">voting</text> | ||
16 | </g> | ||
17 | <!-- consensus --> | ||
18 | <g id="node2" class="node"><title>consensus</title> | ||
19 | <ellipse fill="none" stroke="black" cx="112" cy="-594" rx="46.2923" ry="18"/> | ||
20 | <text text-anchor="middle" x="112" y="-590.3" font-family="Times,serif" font-size="14.00">consensus</text> | ||
21 | </g> | ||
22 | <!-- voting->consensus --> | ||
23 | <g id="edge1" class="edge"><title>voting->consensus</title> | ||
24 | <path fill="none" stroke="black" d="M121.028,-728.482C145.315,-721.103 174.155,-707.724 189,-684 197.487,-670.436 196.445,-662.162 189,-648 180.933,-632.654 166.19,-620.887 151.748,-612.383"/> | ||
25 | <polygon fill="black" stroke="black" points="153.308,-609.247 142.857,-607.508 149.942,-615.385 153.308,-609.247"/> | ||
26 | </g> | ||
27 | <!-- identity --> | ||
28 | <g id="node3" class="node"><title>identity</title> | ||
29 | <ellipse fill="none" stroke="black" cx="282" cy="-450" rx="37.8943" ry="18"/> | ||
30 | <text text-anchor="middle" x="282" y="-446.3" font-family="Times,serif" font-size="14.00">identity</text> | ||
31 | </g> | ||
32 | <!-- voting->identity --> | ||
33 | <g id="edge2" class="edge"><title>voting->identity</title> | ||
34 | <path fill="none" stroke="black" d="M58.5145,-723.377C45.8789,-714.02 31.0387,-700.353 24,-684 5.02284,-639.911 -2.50901,-616.016 24,-576 46.6577,-541.798 71.8444,-557.396 109,-540 158.351,-516.894 214.207,-487.564 248.77,-469.032"/> | ||
35 | <polygon fill="black" stroke="black" points="250.781,-471.924 257.931,-464.105 247.466,-465.759 250.781,-471.924"/> | ||
36 | </g> | ||
37 | <!-- cadet --> | ||
38 | <g id="node4" class="node"><title>cadet</title> | ||
39 | <ellipse fill="none" stroke="black" cx="538" cy="-450" rx="29.4969" ry="18"/> | ||
40 | <text text-anchor="middle" x="538" y="-446.3" font-family="Times,serif" font-size="14.00">cadet</text> | ||
41 | </g> | ||
42 | <!-- voting->cadet --> | ||
43 | <g id="edge3" class="edge"><title>voting->cadet</title> | ||
44 | <path fill="none" stroke="black" d="M72.0051,-723.243C55.682,-693.149 22.8306,-620.604 57,-576 70.8829,-557.877 390.653,-484.265 500.977,-459.316"/> | ||
45 | <polygon fill="black" stroke="black" points="501.999,-462.673 510.983,-457.057 500.458,-455.845 501.999,-462.673"/> | ||
46 | </g> | ||
47 | <!-- secretsharing --> | ||
48 | <g id="node5" class="node"><title>secretsharing</title> | ||
49 | <ellipse fill="none" stroke="black" cx="123" cy="-666" rx="57.3905" ry="18"/> | ||
50 | <text text-anchor="middle" x="123" y="-662.3" font-family="Times,serif" font-size="14.00">secretsharing</text> | ||
51 | </g> | ||
52 | <!-- voting->secretsharing --> | ||
53 | <g id="edge4" class="edge"><title>voting->secretsharing</title> | ||
54 | <path fill="none" stroke="black" d="M88.4954,-723.17C93.8716,-714.418 100.986,-702.837 107.357,-692.466"/> | ||
55 | <polygon fill="black" stroke="black" points="110.45,-694.117 112.702,-683.764 104.486,-690.453 110.45,-694.117"/> | ||
56 | </g> | ||
57 | <!-- consensus->cadet --> | ||
58 | <g id="edge72" class="edge"><title>consensus->cadet</title> | ||
59 | <path fill="none" stroke="black" d="M146.507,-581.905C153.275,-579.85 160.34,-577.79 167,-576 236.135,-557.417 256.193,-562.96 324,-540 360.547,-527.625 367.474,-519.056 403,-504 437.068,-489.562 476.509,-474.236 503.927,-463.798"/> | ||
60 | <polygon fill="black" stroke="black" points="505.344,-467.004 513.453,-460.185 502.862,-460.459 505.344,-467.004"/> | ||
61 | </g> | ||
62 | <!-- set --> | ||
63 | <g id="node24" class="node"><title>set</title> | ||
64 | <ellipse fill="none" stroke="black" cx="517" cy="-522" rx="27" ry="18"/> | ||
65 | <text text-anchor="middle" x="517" y="-518.3" font-family="Times,serif" font-size="14.00">set</text> | ||
66 | </g> | ||
67 | <!-- consensus->set --> | ||
68 | <g id="edge71" class="edge"><title>consensus->set</title> | ||
69 | <path fill="none" stroke="black" d="M145.818,-581.678C152.772,-579.596 160.083,-577.583 167,-576 182.24,-572.511 394.44,-541.075 480.815,-528.33"/> | ||
70 | <polygon fill="black" stroke="black" points="481.561,-531.758 490.943,-526.837 480.539,-524.833 481.561,-531.758"/> | ||
71 | </g> | ||
72 | <!-- dht --> | ||
73 | <g id="node7" class="node"><title>dht</title> | ||
74 | <ellipse fill="none" stroke="black" cx="756" cy="-378" rx="27" ry="18"/> | ||
75 | <text text-anchor="middle" x="756" y="-374.3" font-family="Times,serif" font-size="14.00">dht</text> | ||
76 | </g> | ||
77 | <!-- cadet->dht --> | ||
78 | <g id="edge51" class="edge"><title>cadet->dht</title> | ||
79 | <path fill="none" stroke="black" d="M563.434,-440.833C602.822,-428.186 678.592,-403.856 722.428,-389.78"/> | ||
80 | <polygon fill="black" stroke="black" points="723.607,-393.078 732.058,-386.688 721.467,-386.413 723.607,-393.078"/> | ||
81 | </g> | ||
82 | <!-- core --> | ||
83 | <g id="node8" class="node"><title>core</title> | ||
84 | <ellipse fill="none" stroke="black" cx="555" cy="-234" rx="27" ry="18"/> | ||
85 | <text text-anchor="middle" x="555" y="-230.3" font-family="Times,serif" font-size="14.00">core</text> | ||
86 | </g> | ||
87 | <!-- cadet->core --> | ||
88 | <g id="edge50" class="edge"><title>cadet->core</title> | ||
89 | <path fill="none" stroke="black" d="M539.362,-431.849C542.303,-394.832 549.266,-307.181 552.824,-262.386"/> | ||
90 | <polygon fill="black" stroke="black" points="556.328,-262.478 553.631,-252.232 549.35,-261.924 556.328,-262.478"/> | ||
91 | </g> | ||
92 | <!-- block --> | ||
93 | <g id="node11" class="node"><title>block</title> | ||
94 | <polygon fill="none" stroke="black" points="429,-324 385.598,-306 429,-288 472.402,-306 429,-324"/> | ||
95 | <text text-anchor="middle" x="429" y="-302.3" font-family="Times,serif" font-size="14.00">block</text> | ||
96 | </g> | ||
97 | <!-- cadet->block --> | ||
98 | <g id="edge52" class="edge"><title>cadet->block</title> | ||
99 | <path fill="none" stroke="blue" stroke-dasharray="1,5" d="M522.106,-434.467C511.33,-424.227 497.085,-409.913 486,-396 469.058,-374.736 452.633,-348.272 441.802,-329.75"/> | ||
100 | <polygon fill="blue" stroke="blue" points="444.702,-327.773 436.674,-320.859 438.638,-331.27 444.702,-327.773"/> | ||
101 | </g> | ||
102 | <!-- secretsharing->consensus --> | ||
103 | <g id="edge5" class="edge"><title>secretsharing->consensus</title> | ||
104 | <path fill="none" stroke="black" d="M120.281,-647.697C119.069,-639.983 117.612,-630.712 116.261,-622.112"/> | ||
105 | <polygon fill="black" stroke="black" points="119.698,-621.44 114.688,-612.104 112.783,-622.526 119.698,-621.44"/> | ||
106 | </g> | ||
107 | <!-- fs --> | ||
108 | <g id="node6" class="node"><title>fs</title> | ||
109 | <polygon fill="none" stroke="black" points="100,-527.562 73,-540 46,-527.562 46.0252,-507.438 99.9748,-507.438 100,-527.562"/> | ||
110 | <text text-anchor="middle" x="73" y="-518.3" font-family="Times,serif" font-size="14.00">fs</text> | ||
111 | </g> | ||
112 | <!-- fs->identity --> | ||
113 | <g id="edge12" class="edge"><title>fs->identity</title> | ||
114 | <path fill="none" stroke="black" d="M100.21,-509.307C104.786,-507.46 109.507,-505.625 114,-504 164.764,-485.643 178.566,-484.387 230,-468 233.971,-466.735 238.108,-465.404 242.237,-464.067"/> | ||
115 | <polygon fill="black" stroke="black" points="243.351,-467.386 251.778,-460.965 241.186,-460.729 243.351,-467.386"/> | ||
116 | </g> | ||
117 | <!-- fs->cadet --> | ||
118 | <g id="edge9" class="edge"><title>fs->cadet</title> | ||
119 | <path fill="none" stroke="black" d="M100.01,-516.934C178.772,-505.077 408.387,-470.512 499.803,-456.75"/> | ||
120 | <polygon fill="black" stroke="black" points="500.372,-460.204 509.74,-455.254 499.33,-453.282 500.372,-460.204"/> | ||
121 | </g> | ||
122 | <!-- fs->dht --> | ||
123 | <g id="edge6" class="edge"><title>fs->dht</title> | ||
124 | <path fill="none" stroke="black" d="M100.081,-509.411C132.571,-495.433 183.726,-473.164 192,-468 213.144,-454.802 212.035,-441.688 235,-432 322.67,-395.017 615.27,-383.079 719.081,-379.955"/> | ||
125 | <polygon fill="black" stroke="black" points="719.199,-383.453 729.093,-379.664 718.996,-376.456 719.199,-383.453"/> | ||
126 | </g> | ||
127 | <!-- fs->core --> | ||
128 | <g id="edge7" class="edge"><title>fs->core</title> | ||
129 | <path fill="none" stroke="black" d="M65.0877,-507.277C55.5997,-488.827 42.6595,-455.618 57,-432 93.0072,-372.699 269.007,-312.27 334,-288 397.135,-264.424 474.404,-248.714 518.841,-240.869"/> | ||
130 | <polygon fill="black" stroke="black" points="519.614,-244.287 528.871,-239.134 518.42,-237.39 519.614,-244.287"/> | ||
131 | </g> | ||
132 | <!-- datastore --> | ||
133 | <g id="node9" class="node"><title>datastore</title> | ||
134 | <ellipse fill="none" stroke="black" cx="108" cy="-450" rx="42.4939" ry="18"/> | ||
135 | <text text-anchor="middle" x="108" y="-446.3" font-family="Times,serif" font-size="14.00">datastore</text> | ||
136 | </g> | ||
137 | <!-- fs->datastore --> | ||
138 | <g id="edge8" class="edge"><title>fs->datastore</title> | ||
139 | <path fill="none" stroke="black" d="M79.9149,-507.17C84.2467,-498.507 89.9645,-487.071 95.1098,-476.78"/> | ||
140 | <polygon fill="black" stroke="black" points="98.2763,-478.274 99.618,-467.764 92.0153,-475.143 98.2763,-478.274"/> | ||
141 | </g> | ||
142 | <!-- ats --> | ||
143 | <g id="node10" class="node"><title>ats</title> | ||
144 | <ellipse fill="none" stroke="black" cx="385" cy="-90" rx="27" ry="18"/> | ||
145 | <text text-anchor="middle" x="385" y="-86.3" font-family="Times,serif" font-size="14.00">ats</text> | ||
146 | </g> | ||
147 | <!-- fs->ats --> | ||
148 | <g id="edge10" class="edge"><title>fs->ats</title> | ||
149 | <path fill="none" stroke="black" d="M60.2844,-507.296C39.3694,-483.267 0,-431.113 0,-379 0,-379 0,-379 0,-233 0,-159.097 252.872,-111.714 348.742,-96.4063"/> | ||
150 | <polygon fill="black" stroke="black" points="349.504,-99.8296 358.84,-94.8203 348.418,-92.9144 349.504,-99.8296"/> | ||
151 | </g> | ||
152 | <!-- fs->block --> | ||
153 | <g id="edge11" class="edge"><title>fs->block</title> | ||
154 | <path fill="none" stroke="blue" stroke-dasharray="1,5" d="M99.0792,-507.426C116.81,-497.613 140.343,-483.417 159,-468 175.732,-454.174 174.815,-445.258 192,-432 259.224,-380.139 351.062,-338.689 398.245,-319.166"/> | ||
155 | <polygon fill="blue" stroke="blue" points="399.679,-322.361 407.611,-315.337 397.03,-315.881 399.679,-322.361"/> | ||
156 | </g> | ||
157 | <!-- dht->core --> | ||
158 | <g id="edge42" class="edge"><title>dht->core</title> | ||
159 | <path fill="none" stroke="black" d="M780.722,-370.233C802.496,-362.816 832.877,-348.569 847,-324 854.974,-310.128 857.48,-300.09 847,-288 810.092,-245.421 650.341,-266.908 596,-252 592.628,-251.075 589.164,-249.944 585.745,-248.709"/> | ||
160 | <polygon fill="black" stroke="black" points="586.936,-245.416 576.348,-245.037 584.388,-251.936 586.936,-245.416"/> | ||
161 | </g> | ||
162 | <!-- dht->block --> | ||
163 | <g id="edge44" class="edge"><title>dht->block</title> | ||
164 | <path fill="none" stroke="black" d="M730.132,-372.774C681.84,-364.697 574.817,-345.908 486,-324 478.104,-322.052 469.673,-319.694 461.782,-317.363"/> | ||
165 | <polygon fill="black" stroke="black" points="462.742,-313.997 452.157,-314.456 460.718,-320.698 462.742,-313.997"/> | ||
166 | </g> | ||
167 | <!-- nse --> | ||
168 | <g id="node27" class="node"><title>nse</title> | ||
169 | <ellipse fill="none" stroke="black" cx="811" cy="-306" rx="27" ry="18"/> | ||
170 | <text text-anchor="middle" x="811" y="-302.3" font-family="Times,serif" font-size="14.00">nse</text> | ||
171 | </g> | ||
172 | <!-- dht->nse --> | ||
173 | <g id="edge43" class="edge"><title>dht->nse</title> | ||
174 | <path fill="none" stroke="black" d="M767.934,-361.811C775.214,-352.546 784.663,-340.52 792.854,-330.094"/> | ||
175 | <polygon fill="black" stroke="black" points="795.663,-332.185 799.089,-322.159 790.159,-327.86 795.663,-332.185"/> | ||
176 | </g> | ||
177 | <!-- datacache --> | ||
178 | <g id="node28" class="node"><title>datacache</title> | ||
179 | <polygon fill="none" stroke="black" points="702,-324 637.818,-306 702,-288 766.182,-306 702,-324"/> | ||
180 | <text text-anchor="middle" x="702" y="-302.3" font-family="Times,serif" font-size="14.00">datacache</text> | ||
181 | </g> | ||
182 | <!-- dht->datacache --> | ||
183 | <g id="edge45" class="edge"><title>dht->datacache</title> | ||
184 | <path fill="none" stroke="black" d="M744.016,-361.465C736.66,-351.93 727.125,-339.57 718.998,-329.034"/> | ||
185 | <polygon fill="black" stroke="black" points="721.73,-326.846 712.851,-321.066 716.187,-331.121 721.73,-326.846"/> | ||
186 | </g> | ||
187 | <!-- peerinfo --> | ||
188 | <g id="node29" class="node"><title>peerinfo</title> | ||
189 | <ellipse fill="none" stroke="black" cx="518" cy="-90" rx="40.0939" ry="18"/> | ||
190 | <text text-anchor="middle" x="518" y="-86.3" font-family="Times,serif" font-size="14.00">peerinfo</text> | ||
191 | </g> | ||
192 | <!-- dht->peerinfo --> | ||
193 | <g id="edge46" class="edge"><title>dht->peerinfo</title> | ||
194 | <path fill="none" stroke="black" d="M728.828,-376.457C687.438,-374.282 608.033,-364.658 557,-324 495.436,-274.952 504.26,-168.494 512.535,-118.27"/> | ||
195 | <polygon fill="black" stroke="black" points="516.027,-118.624 514.32,-108.168 509.133,-117.406 516.027,-118.624"/> | ||
196 | </g> | ||
197 | <!-- hello --> | ||
198 | <g id="node30" class="node"><title>hello</title> | ||
199 | <polygon fill="none" stroke="black" points="854,-36 813.614,-18 854,-3.55271e-15 894.386,-18 854,-36"/> | ||
200 | <text text-anchor="middle" x="854" y="-14.3" font-family="Times,serif" font-size="14.00">hello</text> | ||
201 | </g> | ||
202 | <!-- dht->hello --> | ||
203 | <g id="edge47" class="edge"><title>dht->hello</title> | ||
204 | <path fill="none" stroke="black" d="M782.364,-373.864C833.24,-367.278 942.225,-350.399 968,-324 996.322,-294.992 988,-275.542 988,-235 988,-235 988,-235 988,-161 988,-99.7534 921.245,-54.2239 881.968,-32.736"/> | ||
205 | <polygon fill="black" stroke="black" points="883.108,-29.3792 872.632,-27.796 879.834,-35.5665 883.108,-29.3792"/> | ||
206 | </g> | ||
207 | <!-- transport --> | ||
208 | <g id="node33" class="node"><title>transport</title> | ||
209 | <ellipse fill="none" stroke="black" cx="680" cy="-162" rx="42.4939" ry="18"/> | ||
210 | <text text-anchor="middle" x="680" y="-158.3" font-family="Times,serif" font-size="14.00">transport</text> | ||
211 | </g> | ||
212 | <!-- core->transport --> | ||
213 | <g id="edge58" class="edge"><title>core->transport</title> | ||
214 | <path fill="none" stroke="black" d="M575.083,-221.753C594.251,-211.02 623.495,-194.643 646.244,-181.903"/> | ||
215 | <polygon fill="black" stroke="black" points="648.219,-184.809 655.234,-176.869 644.799,-178.701 648.219,-184.809"/> | ||
216 | </g> | ||
217 | <!-- exit --> | ||
218 | <g id="node12" class="node"><title>exit</title> | ||
219 | <polygon fill="none" stroke="black" points="952,-540 898,-540 898,-504 952,-504 952,-540"/> | ||
220 | <text text-anchor="middle" x="925" y="-518.3" font-family="Times,serif" font-size="14.00">exit</text> | ||
221 | </g> | ||
222 | <!-- exit->cadet --> | ||
223 | <g id="edge13" class="edge"><title>exit->cadet</title> | ||
224 | <path fill="none" stroke="black" d="M897.67,-514.323C883.742,-511.021 866.513,-507.093 851,-504 752.337,-484.331 635.236,-465.765 576.155,-456.729"/> | ||
225 | <polygon fill="black" stroke="black" points="576.571,-453.252 566.158,-455.206 575.517,-460.172 576.571,-453.252"/> | ||
226 | </g> | ||
227 | <!-- tun --> | ||
228 | <g id="node13" class="node"><title>tun</title> | ||
229 | <polygon fill="none" stroke="black" points="929,-468 897.995,-450 929,-432 960.005,-450 929,-468"/> | ||
230 | <text text-anchor="middle" x="929" y="-446.3" font-family="Times,serif" font-size="14.00">tun</text> | ||
231 | </g> | ||
232 | <!-- exit->tun --> | ||
233 | <g id="edge14" class="edge"><title>exit->tun</title> | ||
234 | <path fill="none" stroke="black" d="M925.989,-503.697C926.436,-495.868 926.975,-486.435 927.473,-477.728"/> | ||
235 | <polygon fill="black" stroke="black" points="930.974,-477.806 928.05,-467.622 923.985,-477.406 930.974,-477.806"/> | ||
236 | </g> | ||
237 | <!-- dnsstub --> | ||
238 | <g id="node14" class="node"><title>dnsstub</title> | ||
239 | <polygon fill="none" stroke="black" points="1032,-468 978.877,-450 1032,-432 1085.12,-450 1032,-468"/> | ||
240 | <text text-anchor="middle" x="1032" y="-446.3" font-family="Times,serif" font-size="14.00">dnsstub</text> | ||
241 | </g> | ||
242 | <!-- exit->dnsstub --> | ||
243 | <g id="edge15" class="edge"><title>exit->dnsstub</title> | ||
244 | <path fill="none" stroke="black" d="M951.175,-503.876C967.88,-492.948 989.443,-478.841 1006.1,-467.947"/> | ||
245 | <polygon fill="black" stroke="black" points="1008.33,-470.67 1014.78,-462.266 1004.49,-464.812 1008.33,-470.67"/> | ||
246 | </g> | ||
247 | <!-- vpn --> | ||
248 | <g id="node15" class="node"><title>vpn</title> | ||
249 | <ellipse fill="none" stroke="black" cx="815" cy="-522" rx="27" ry="18"/> | ||
250 | <text text-anchor="middle" x="815" y="-518.3" font-family="Times,serif" font-size="14.00">vpn</text> | ||
251 | </g> | ||
252 | <!-- vpn->cadet --> | ||
253 | <g id="edge16" class="edge"><title>vpn->cadet</title> | ||
254 | <path fill="none" stroke="black" d="M793.129,-511.116C787.017,-508.578 780.317,-506.003 774,-504 705.524,-482.293 623.185,-465.931 576.085,-457.463"/> | ||
255 | <polygon fill="black" stroke="black" points="576.482,-453.979 566.025,-455.678 575.26,-460.871 576.482,-453.979"/> | ||
256 | </g> | ||
257 | <!-- vpn->tun --> | ||
258 | <g id="edge18" class="edge"><title>vpn->tun</title> | ||
259 | <path fill="none" stroke="black" d="M834.339,-509.125C854.149,-496.961 884.945,-478.051 905.995,-465.126"/> | ||
260 | <polygon fill="black" stroke="black" points="907.942,-468.038 914.632,-459.822 904.279,-462.072 907.942,-468.038"/> | ||
261 | </g> | ||
262 | <!-- regex --> | ||
263 | <g id="node16" class="node"><title>regex</title> | ||
264 | <ellipse fill="none" stroke="black" cx="756" cy="-450" rx="30.5947" ry="18"/> | ||
265 | <text text-anchor="middle" x="756" y="-446.3" font-family="Times,serif" font-size="14.00">regex</text> | ||
266 | </g> | ||
267 | <!-- vpn->regex --> | ||
268 | <g id="edge17" class="edge"><title>vpn->regex</title> | ||
269 | <path fill="none" stroke="black" d="M802.198,-505.811C794.496,-496.673 784.53,-484.849 775.827,-474.524"/> | ||
270 | <polygon fill="black" stroke="black" points="778.307,-472.035 769.186,-466.644 772.954,-476.546 778.307,-472.035"/> | ||
271 | </g> | ||
272 | <!-- regex->dht --> | ||
273 | <g id="edge57" class="edge"><title>regex->dht</title> | ||
274 | <path fill="none" stroke="black" d="M756,-431.697C756,-423.983 756,-414.712 756,-406.112"/> | ||
275 | <polygon fill="black" stroke="black" points="759.5,-406.104 756,-396.104 752.5,-406.104 759.5,-406.104"/> | ||
276 | </g> | ||
277 | <!-- regex->block --> | ||
278 | <g id="edge49" class="edge"><title>regex->block</title> | ||
279 | <path fill="none" stroke="blue" stroke-dasharray="1,5" d="M732.22,-438.673C673.767,-413.29 523.157,-347.888 458.838,-319.957"/> | ||
280 | <polygon fill="blue" stroke="blue" points="459.85,-316.581 449.283,-315.808 457.061,-323.002 459.85,-316.581"/> | ||
281 | </g> | ||
282 | <!-- pt --> | ||
283 | <g id="node17" class="node"><title>pt</title> | ||
284 | <polygon fill="none" stroke="black" points="986,-599.562 959,-612 932,-599.562 932.025,-579.438 985.975,-579.438 986,-599.562"/> | ||
285 | <text text-anchor="middle" x="959" y="-590.3" font-family="Times,serif" font-size="14.00">pt</text> | ||
286 | </g> | ||
287 | <!-- pt->cadet --> | ||
288 | <g id="edge19" class="edge"><title>pt->cadet</title> | ||
289 | <path fill="none" stroke="black" d="M931.717,-579.439C928.807,-578.197 925.864,-577.023 923,-576 860.875,-553.809 836.841,-571.725 779,-540 758.602,-528.812 761.339,-515.294 741,-504 688.34,-474.76 619.008,-461.18 576.516,-455.23"/> | ||
290 | <polygon fill="black" stroke="black" points="576.951,-451.758 566.577,-453.91 576.029,-458.697 576.951,-451.758"/> | ||
291 | </g> | ||
292 | <!-- pt->vpn --> | ||
293 | <g id="edge20" class="edge"><title>pt->vpn</title> | ||
294 | <path fill="none" stroke="black" d="M931.915,-579.834C907.352,-567.894 871.179,-550.309 845.585,-537.868"/> | ||
295 | <polygon fill="black" stroke="black" points="846.864,-534.598 836.34,-533.373 843.803,-540.893 846.864,-534.598"/> | ||
296 | </g> | ||
297 | <!-- dns --> | ||
298 | <g id="node18" class="node"><title>dns</title> | ||
299 | <ellipse fill="none" stroke="black" cx="997" cy="-522" rx="27" ry="18"/> | ||
300 | <text text-anchor="middle" x="997" y="-518.3" font-family="Times,serif" font-size="14.00">dns</text> | ||
301 | </g> | ||
302 | <!-- pt->dns --> | ||
303 | <g id="edge21" class="edge"><title>pt->dns</title> | ||
304 | <path fill="none" stroke="black" d="M966.508,-579.17C971.277,-570.385 977.594,-558.748 983.241,-548.346"/> | ||
305 | <polygon fill="black" stroke="black" points="986.48,-549.716 988.175,-539.257 980.328,-546.376 986.48,-549.716"/> | ||
306 | </g> | ||
307 | <!-- dnsparser --> | ||
308 | <g id="node19" class="node"><title>dnsparser</title> | ||
309 | <polygon fill="none" stroke="black" points="1143,-540 1080.49,-522 1143,-504 1205.51,-522 1143,-540"/> | ||
310 | <text text-anchor="middle" x="1143" y="-518.3" font-family="Times,serif" font-size="14.00">dnsparser</text> | ||
311 | </g> | ||
312 | <!-- pt->dnsparser --> | ||
313 | <g id="edge22" class="edge"><title>pt->dnsparser</title> | ||
314 | <path fill="none" stroke="black" d="M986.15,-582.671C1018.5,-570.365 1072.61,-549.781 1108.05,-536.296"/> | ||
315 | <polygon fill="black" stroke="black" points="1109.42,-539.521 1117.52,-532.694 1106.93,-532.979 1109.42,-539.521"/> | ||
316 | </g> | ||
317 | <!-- dns->tun --> | ||
318 | <g id="edge23" class="edge"><title>dns->tun</title> | ||
319 | <path fill="none" stroke="black" d="M982.91,-506.496C972.543,-495.824 958.362,-481.226 947.147,-469.681"/> | ||
320 | <polygon fill="black" stroke="black" points="949.418,-466.995 939.94,-462.261 944.397,-471.873 949.418,-466.995"/> | ||
321 | </g> | ||
322 | <!-- dns->dnsstub --> | ||
323 | <g id="edge24" class="edge"><title>dns->dnsstub</title> | ||
324 | <path fill="none" stroke="black" d="M1005.12,-504.765C1009.59,-495.828 1015.21,-484.573 1020.16,-474.673"/> | ||
325 | <polygon fill="black" stroke="black" points="1023.3,-476.227 1024.64,-465.717 1017.04,-473.096 1023.3,-476.227"/> | ||
326 | </g> | ||
327 | <!-- gnsrecord --> | ||
328 | <g id="node25" class="node"><title>gnsrecord</title> | ||
329 | <ellipse fill="none" stroke="black" cx="1192" cy="-450" rx="45.4919" ry="18"/> | ||
330 | <text text-anchor="middle" x="1192" y="-446.3" font-family="Times,serif" font-size="14.00">gnsrecord</text> | ||
331 | </g> | ||
332 | <!-- dnsparser->gnsrecord --> | ||
333 | <g id="edge39" class="edge"><title>dnsparser->gnsrecord</title> | ||
334 | <path fill="none" stroke="blue" stroke-dasharray="1,5" d="M1152.92,-506.834C1159.12,-497.971 1167.29,-486.304 1174.55,-475.928"/> | ||
335 | <polygon fill="blue" stroke="blue" points="1177.51,-477.805 1180.38,-467.606 1171.77,-473.791 1177.51,-477.805"/> | ||
336 | </g> | ||
337 | <!-- zonemaster --> | ||
338 | <g id="node20" class="node"><title>zonemaster</title> | ||
339 | <polygon fill="none" stroke="black" points="914.433,-599.562 851,-612 787.567,-599.562 787.626,-579.438 914.374,-579.438 914.433,-599.562"/> | ||
340 | <text text-anchor="middle" x="851" y="-590.3" font-family="Times,serif" font-size="14.00">zonemaster</text> | ||
341 | </g> | ||
342 | <!-- zonemaster->dht --> | ||
343 | <g id="edge26" class="edge"><title>zonemaster->dht</title> | ||
344 | <path fill="none" stroke="black" d="M853.642,-579.298C856.499,-561.438 859.583,-529.479 851,-504 836.849,-461.994 802.343,-422.916 779.052,-399.996"/> | ||
345 | <polygon fill="black" stroke="black" points="781.264,-397.267 771.628,-392.861 776.413,-402.314 781.264,-397.267"/> | ||
346 | </g> | ||
347 | <!-- namestore --> | ||
348 | <g id="node21" class="node"><title>namestore</title> | ||
349 | <ellipse fill="none" stroke="black" cx="685" cy="-522" rx="47.3916" ry="18"/> | ||
350 | <text text-anchor="middle" x="685" y="-518.3" font-family="Times,serif" font-size="14.00">namestore</text> | ||
351 | </g> | ||
352 | <!-- zonemaster->namestore --> | ||
353 | <g id="edge25" class="edge"><title>zonemaster->namestore</title> | ||
354 | <path fill="none" stroke="black" d="M818.599,-579.337C791.812,-568.041 753.653,-551.95 724.971,-539.855"/> | ||
355 | <polygon fill="black" stroke="black" points="726.212,-536.58 715.637,-535.919 723.492,-543.03 726.212,-536.58"/> | ||
356 | </g> | ||
357 | <!-- namestore->identity --> | ||
358 | <g id="edge37" class="edge"><title>namestore->identity</title> | ||
359 | <path fill="none" stroke="black" d="M642.634,-513.641C566.046,-500.338 405.247,-472.408 326.867,-458.793"/> | ||
360 | <polygon fill="black" stroke="black" points="327.275,-455.312 316.823,-457.049 326.077,-462.208 327.275,-455.312"/> | ||
361 | </g> | ||
362 | <!-- namestore->gnsrecord --> | ||
363 | <g id="edge38" class="edge"><title>namestore->gnsrecord</title> | ||
364 | <path fill="none" stroke="black" d="M726.085,-512.971C742.503,-509.919 761.609,-506.564 779,-504 918.405,-483.451 954.522,-488.05 1094,-468 1109.42,-465.784 1126.13,-463.019 1141.32,-460.368"/> | ||
365 | <polygon fill="black" stroke="black" points="1142.32,-463.746 1151.56,-458.558 1141.1,-456.853 1142.32,-463.746"/> | ||
366 | </g> | ||
367 | <!-- gns --> | ||
368 | <g id="node22" class="node"><title>gns</title> | ||
369 | <ellipse fill="none" stroke="black" cx="850" cy="-666" rx="27" ry="18"/> | ||
370 | <text text-anchor="middle" x="850" y="-662.3" font-family="Times,serif" font-size="14.00">gns</text> | ||
371 | </g> | ||
372 | <!-- gns->identity --> | ||
373 | <g id="edge34" class="edge"><title>gns->identity</title> | ||
374 | <path fill="none" stroke="black" d="M823.048,-663.899C740.091,-660.169 489.801,-646.281 417,-612 395.952,-602.089 396.543,-591.28 379,-576 359.686,-559.178 350.742,-559.383 334,-540 317.464,-520.856 303.335,-495.717 293.996,-477.041"/> | ||
375 | <polygon fill="black" stroke="black" points="297.085,-475.39 289.562,-467.93 290.791,-478.453 297.085,-475.39"/> | ||
376 | </g> | ||
377 | <!-- gns->dht --> | ||
378 | <g id="edge28" class="edge"><title>gns->dht</title> | ||
379 | <path fill="none" stroke="black" d="M870.511,-653.985C875.467,-651.699 880.829,-649.525 886,-648 1002.11,-613.746 1046.93,-664.524 1156,-612 1236.59,-573.194 1305.75,-498.559 1246,-432 1215.85,-398.416 902.601,-384.19 793.343,-380.225"/> | ||
380 | <polygon fill="black" stroke="black" points="793.243,-376.719 783.125,-379.863 792.995,-383.715 793.243,-376.719"/> | ||
381 | </g> | ||
382 | <!-- gns->block --> | ||
383 | <g id="edge29" class="edge"><title>gns->block</title> | ||
384 | <path fill="none" stroke="blue" stroke-dasharray="1,5" d="M822.824,-664.872C770.707,-663.582 654.321,-655.598 569,-612 548.284,-601.414 548.925,-590.83 531,-576 509.902,-558.544 496.079,-562.857 481,-540 438.212,-475.142 430.206,-380.324 428.985,-334.208"/> | ||
385 | <polygon fill="blue" stroke="blue" points="432.483,-334.033 428.808,-324.096 425.484,-334.156 432.483,-334.033"/> | ||
386 | </g> | ||
387 | <!-- gns->dnsstub --> | ||
388 | <g id="edge33" class="edge"><title>gns->dnsstub</title> | ||
389 | <path fill="none" stroke="black" d="M871.065,-654.325C875.905,-652.077 881.078,-649.834 886,-648 941.778,-627.217 973.486,-654.658 1015,-612 1049.82,-576.222 1044.5,-512.583 1037.99,-476.971"/> | ||
390 | <polygon fill="black" stroke="black" points="1041.36,-476 1035.97,-466.88 1034.5,-477.373 1041.36,-476"/> | ||
391 | </g> | ||
392 | <!-- gns->vpn --> | ||
393 | <g id="edge31" class="edge"><title>gns->vpn</title> | ||
394 | <path fill="none" stroke="black" d="M827.858,-655.35C811.041,-646.688 789.135,-632.213 779,-612 768.086,-590.233 781.353,-564.325 794.756,-546.091"/> | ||
395 | <polygon fill="black" stroke="black" points="797.832,-547.84 801.242,-537.808 792.321,-543.524 797.832,-547.84"/> | ||
396 | </g> | ||
397 | <!-- gns->dns --> | ||
398 | <g id="edge27" class="edge"><title>gns->dns</title> | ||
399 | <path fill="none" stroke="black" d="M871.13,-654.496C875.967,-652.239 881.122,-649.949 886,-648 933.377,-629.072 964.65,-653.009 995,-612 1008.03,-594.39 1007.25,-568.995 1003.95,-549.835"/> | ||
400 | <polygon fill="black" stroke="black" points="1007.35,-549.022 1001.93,-539.921 1000.49,-550.418 1007.35,-549.022"/> | ||
401 | </g> | ||
402 | <!-- gns->dnsparser --> | ||
403 | <g id="edge32" class="edge"><title>gns->dnsparser</title> | ||
404 | <path fill="none" stroke="black" d="M870.586,-654.227C875.54,-651.931 880.881,-649.692 886,-648 963.461,-622.391 995.505,-653.066 1066,-612 1093.37,-596.054 1115.84,-566.774 1129.29,-546.163"/> | ||
405 | <polygon fill="black" stroke="black" points="1132.29,-547.978 1134.66,-537.654 1126.37,-544.243 1132.29,-547.978"/> | ||
406 | </g> | ||
407 | <!-- revocation --> | ||
408 | <g id="node23" class="node"><title>revocation</title> | ||
409 | <ellipse fill="none" stroke="black" cx="474" cy="-594" rx="48.1917" ry="18"/> | ||
410 | <text text-anchor="middle" x="474" y="-590.3" font-family="Times,serif" font-size="14.00">revocation</text> | ||
411 | </g> | ||
412 | <!-- gns->revocation --> | ||
413 | <g id="edge30" class="edge"><title>gns->revocation</title> | ||
414 | <path fill="none" stroke="black" d="M823.776,-661.482C769.658,-654.024 641.808,-635.374 536,-612 531.019,-610.9 525.841,-609.65 520.694,-608.34"/> | ||
415 | <polygon fill="black" stroke="black" points="521.456,-604.922 510.895,-605.77 519.68,-611.693 521.456,-604.922"/> | ||
416 | </g> | ||
417 | <!-- gns->gnsrecord --> | ||
418 | <g id="edge41" class="edge"><title>gns->gnsrecord</title> | ||
419 | <path fill="none" stroke="black" d="M870.549,-654.113C875.504,-651.822 880.856,-649.613 886,-648 978.027,-619.137 1009.84,-646.249 1100,-612 1156.37,-590.587 1185.79,-592.754 1215,-540 1225.98,-520.174 1217.7,-494.957 1208.15,-476.431"/> | ||
420 | <polygon fill="black" stroke="black" points="1211.2,-474.717 1203.29,-467.672 1205.08,-478.114 1211.2,-474.717"/> | ||
421 | </g> | ||
422 | <!-- revocation->core --> | ||
423 | <g id="edge35" class="edge"><title>revocation->core</title> | ||
424 | <path fill="none" stroke="black" d="M447.586,-578.755C410.639,-556.683 348,-510.49 348,-451 348,-451 348,-451 348,-377 348,-335.398 347.208,-317.038 377,-288 415.046,-250.916 477.859,-239.613 517.794,-236.267"/> | ||
425 | <polygon fill="black" stroke="black" points="518.191,-239.747 527.918,-235.547 517.695,-232.765 518.191,-239.747"/> | ||
426 | </g> | ||
427 | <!-- revocation->set --> | ||
428 | <g id="edge36" class="edge"><title>revocation->set</title> | ||
429 | <path fill="none" stroke="black" d="M484.409,-576.055C489.683,-567.469 496.183,-556.888 501.987,-547.439"/> | ||
430 | <polygon fill="black" stroke="black" points="505.024,-549.182 507.276,-538.829 499.06,-545.518 505.024,-549.182"/> | ||
431 | </g> | ||
432 | <!-- set->cadet --> | ||
433 | <g id="edge75" class="edge"><title>set->cadet</title> | ||
434 | <path fill="none" stroke="black" d="M522.084,-504.055C524.482,-496.059 527.401,-486.331 530.08,-477.4"/> | ||
435 | <polygon fill="black" stroke="black" points="533.442,-478.373 532.963,-467.789 526.737,-476.362 533.442,-478.373"/> | ||
436 | </g> | ||
437 | <!-- conversation --> | ||
438 | <g id="node26" class="node"><title>conversation</title> | ||
439 | <polygon fill="none" stroke="black" points="1017.18,-743.562 948,-756 878.82,-743.562 878.884,-723.438 1017.12,-723.438 1017.18,-743.562"/> | ||
440 | <text text-anchor="middle" x="948" y="-734.3" font-family="Times,serif" font-size="14.00">conversation</text> | ||
441 | </g> | ||
442 | <!-- conversation->cadet --> | ||
443 | <g id="edge53" class="edge"><title>conversation->cadet</title> | ||
444 | <path fill="none" stroke="black" d="M900.537,-723.335C873.864,-714.435 840.677,-701.257 814,-684 756.206,-646.615 759.329,-615.558 703,-576 673.069,-554.981 658.318,-561.866 629,-540 611.601,-527.024 611.36,-519.336 596,-504 585.077,-493.094 572.479,-481.475 561.82,-471.903"/> | ||
445 | <polygon fill="black" stroke="black" points="563.901,-469.069 554.107,-465.028 559.243,-474.295 563.901,-469.069"/> | ||
446 | </g> | ||
447 | <!-- conversation->gns --> | ||
448 | <g id="edge54" class="edge"><title>conversation->gns</title> | ||
449 | <path fill="none" stroke="black" d="M928.638,-723.17C913.533,-712.381 892.408,-697.291 875.857,-685.469"/> | ||
450 | <polygon fill="black" stroke="black" points="877.846,-682.589 867.674,-679.625 873.777,-688.285 877.846,-682.589"/> | ||
451 | </g> | ||
452 | <!-- conversation->gnsrecord --> | ||
453 | <g id="edge40" class="edge"><title>conversation->gnsrecord</title> | ||
454 | <path fill="none" stroke="blue" stroke-dasharray="1,5" d="M1017.21,-728.51C1076.25,-719.968 1155.24,-705.041 1179,-684 1241.33,-628.786 1256.97,-583.117 1231,-504 1227.58,-493.58 1221.24,-483.522 1214.65,-475.019"/> | ||
455 | <polygon fill="blue" stroke="blue" points="1217.15,-472.551 1208.08,-467.08 1211.76,-477.015 1217.15,-472.551"/> | ||
456 | </g> | ||
457 | <!-- speaker --> | ||
458 | <g id="node31" class="node"><title>speaker</title> | ||
459 | <polygon fill="none" stroke="black" points="948,-684 894.877,-666 948,-648 1001.12,-666 948,-684"/> | ||
460 | <text text-anchor="middle" x="948" y="-662.3" font-family="Times,serif" font-size="14.00">speaker</text> | ||
461 | </g> | ||
462 | <!-- conversation->speaker --> | ||
463 | <g id="edge55" class="edge"><title>conversation->speaker</title> | ||
464 | <path fill="none" stroke="black" d="M948,-723.17C948,-714.919 948,-704.153 948,-694.256"/> | ||
465 | <polygon fill="black" stroke="black" points="951.5,-694.019 948,-684.019 944.5,-694.019 951.5,-694.019"/> | ||
466 | </g> | ||
467 | <!-- microphone --> | ||
468 | <g id="node32" class="node"><title>microphone</title> | ||
469 | <polygon fill="none" stroke="black" points="1095,-684 1019.76,-666 1095,-648 1170.24,-666 1095,-684"/> | ||
470 | <text text-anchor="middle" x="1095" y="-662.3" font-family="Times,serif" font-size="14.00">microphone</text> | ||
471 | </g> | ||
472 | <!-- conversation->microphone --> | ||
473 | <g id="edge56" class="edge"><title>conversation->microphone</title> | ||
474 | <path fill="none" stroke="black" d="M976.692,-723.337C1001.14,-711.695 1036.29,-694.958 1061.92,-682.753"/> | ||
475 | <polygon fill="black" stroke="black" points="1063.71,-685.777 1071.23,-678.318 1060.7,-679.457 1063.71,-685.777"/> | ||
476 | </g> | ||
477 | <!-- nse->core --> | ||
478 | <g id="edge48" class="edge"><title>nse->core</title> | ||
479 | <path fill="none" stroke="black" d="M790.412,-294.231C785.459,-291.935 780.118,-289.695 775,-288 697.966,-262.487 673.625,-275.652 596,-252 592.83,-251.034 589.569,-249.913 586.336,-248.716"/> | ||
480 | <polygon fill="black" stroke="black" points="587.428,-245.385 576.841,-244.978 584.864,-251.899 587.428,-245.385"/> | ||
481 | </g> | ||
482 | <!-- peerinfo->hello --> | ||
483 | <g id="edge76" class="edge"><title>peerinfo->hello</title> | ||
484 | <path fill="none" stroke="black" d="M548.194,-77.9517C554.676,-75.8006 561.524,-73.6914 568,-72 654.752,-49.3407 758.747,-32.6176 814.333,-24.4966"/> | ||
485 | <polygon fill="black" stroke="black" points="815.063,-27.9277 824.46,-23.0344 814.062,-20.9995 815.063,-27.9277"/> | ||
486 | </g> | ||
487 | <!-- transport->ats --> | ||
488 | <g id="edge66" class="edge"><title>transport->ats</title> | ||
489 | <path fill="none" stroke="black" d="M644.122,-152.487C587.168,-138.972 476.742,-112.769 420.21,-99.3548"/> | ||
490 | <polygon fill="black" stroke="black" points="420.844,-95.9082 410.306,-97.0048 419.228,-102.719 420.844,-95.9082"/> | ||
491 | </g> | ||
492 | <!-- transport->peerinfo --> | ||
493 | <g id="edge68" class="edge"><title>transport->peerinfo</title> | ||
494 | <path fill="none" stroke="black" d="M651.411,-148.647C624.725,-137.116 584.738,-119.837 555.501,-107.204"/> | ||
495 | <polygon fill="black" stroke="black" points="556.601,-103.867 546.033,-103.113 553.824,-110.292 556.601,-103.867"/> | ||
496 | </g> | ||
497 | <!-- transport->hello --> | ||
498 | <g id="edge67" class="edge"><title>transport->hello</title> | ||
499 | <path fill="none" stroke="black" d="M721.405,-157.922C756.719,-153.037 806.213,-140.439 835,-108 850.042,-91.0495 854.193,-65.1533 854.935,-45.6573"/> | ||
500 | <polygon fill="black" stroke="black" points="858.435,-45.6195 855.044,-35.5822 851.436,-45.5437 858.435,-45.6195"/> | ||
501 | </g> | ||
502 | <!-- nat --> | ||
503 | <g id="node36" class="node"><title>nat</title> | ||
504 | <polygon fill="none" stroke="black" points="796,-108 765.835,-90 796,-72 826.165,-90 796,-108"/> | ||
505 | <text text-anchor="middle" x="796" y="-86.3" font-family="Times,serif" font-size="14.00">nat</text> | ||
506 | </g> | ||
507 | <!-- transport->nat --> | ||
508 | <g id="edge69" class="edge"><title>transport->nat</title> | ||
509 | <path fill="none" stroke="black" d="M703.474,-146.834C723.706,-134.626 752.749,-117.1 772.878,-104.953"/> | ||
510 | <polygon fill="black" stroke="black" points="774.946,-107.793 781.7,-99.6294 771.33,-101.799 774.946,-107.793"/> | ||
511 | </g> | ||
512 | <!-- fragmentation --> | ||
513 | <g id="node37" class="node"><title>fragmentation</title> | ||
514 | <polygon fill="none" stroke="black" points="662,-108 576.537,-90 662,-72 747.463,-90 662,-108"/> | ||
515 | <text text-anchor="middle" x="662" y="-86.3" font-family="Times,serif" font-size="14.00">fragmentation</text> | ||
516 | </g> | ||
517 | <!-- transport->fragmentation --> | ||
518 | <g id="edge70" class="edge"><title>transport->fragmentation</title> | ||
519 | <path fill="none" stroke="black" d="M675.643,-144.055C673.556,-135.941 671.011,-126.044 668.687,-117.006"/> | ||
520 | <polygon fill="black" stroke="black" points="672.073,-116.12 666.193,-107.307 665.294,-117.864 672.073,-116.12"/> | ||
521 | </g> | ||
522 | <!-- topology --> | ||
523 | <g id="node34" class="node"><title>topology</title> | ||
524 | <polygon fill="none" stroke="black" points="959.5,-324 894.5,-324 894.5,-288 959.5,-288 959.5,-324"/> | ||
525 | <text text-anchor="middle" x="927" y="-302.3" font-family="Times,serif" font-size="14.00">topology</text> | ||
526 | </g> | ||
527 | <!-- topology->core --> | ||
528 | <g id="edge61" class="edge"><title>topology->core</title> | ||
529 | <path fill="none" stroke="black" d="M894.413,-292.17C889.63,-290.593 884.724,-289.139 880,-288 756.312,-258.18 718.97,-284.656 596,-252 592.621,-251.103 589.151,-249.989 585.73,-248.765"/> | ||
530 | <polygon fill="black" stroke="black" points="586.918,-245.471 576.329,-245.106 584.379,-251.995 586.918,-245.471"/> | ||
531 | </g> | ||
532 | <!-- topology->peerinfo --> | ||
533 | <g id="edge59" class="edge"><title>topology->peerinfo</title> | ||
534 | <path fill="none" stroke="black" d="M894.233,-295.354C862.315,-285.612 812.655,-269.532 771,-252 705.781,-224.55 688.475,-218.336 629,-180 597.704,-159.827 564.778,-132.553 542.992,-113.534"/> | ||
535 | <polygon fill="black" stroke="black" points="545.032,-110.666 535.215,-106.682 540.404,-115.919 545.032,-110.666"/> | ||
536 | </g> | ||
537 | <!-- topology->hello --> | ||
538 | <g id="edge62" class="edge"><title>topology->hello</title> | ||
539 | <path fill="none" stroke="black" d="M922.652,-287.966C910.314,-239.626 875.032,-101.398 860.438,-44.2243"/> | ||
540 | <polygon fill="black" stroke="black" points="863.829,-43.3557 857.964,-34.532 857.046,-45.087 863.829,-43.3557"/> | ||
541 | </g> | ||
542 | <!-- topology->transport --> | ||
543 | <g id="edge60" class="edge"><title>topology->transport</title> | ||
544 | <path fill="none" stroke="black" d="M897.206,-287.871C850.798,-261.191 761.564,-209.891 713.17,-182.069"/> | ||
545 | <polygon fill="black" stroke="black" points="714.758,-178.945 704.344,-176.995 711.269,-185.014 714.758,-178.945"/> | ||
546 | </g> | ||
547 | <!-- hostlist --> | ||
548 | <g id="node35" class="node"><title>hostlist</title> | ||
549 | <polygon fill="none" stroke="black" points="214,-324 158,-324 158,-288 214,-288 214,-324"/> | ||
550 | <text text-anchor="middle" x="186" y="-302.3" font-family="Times,serif" font-size="14.00">hostlist</text> | ||
551 | </g> | ||
552 | <!-- hostlist->core --> | ||
553 | <g id="edge63" class="edge"><title>hostlist->core</title> | ||
554 | <path fill="none" stroke="black" d="M214.167,-292.599C218.733,-290.88 223.455,-289.271 228,-288 330.933,-259.219 456.746,-244.294 517.975,-238.275"/> | ||
555 | <polygon fill="black" stroke="black" points="518.666,-241.725 528.286,-237.286 517.998,-234.757 518.666,-241.725"/> | ||
556 | </g> | ||
557 | <!-- hostlist->peerinfo --> | ||
558 | <g id="edge64" class="edge"><title>hostlist->peerinfo</title> | ||
559 | <path fill="none" stroke="black" d="M212.608,-287.849C273.449,-248.632 422.455,-152.586 487.166,-110.875"/> | ||
560 | <polygon fill="black" stroke="black" points="489.21,-113.721 495.719,-105.362 485.418,-107.838 489.21,-113.721"/> | ||
561 | </g> | ||
562 | <!-- hostlist->hello --> | ||
563 | <g id="edge65" class="edge"><title>hostlist->hello</title> | ||
564 | <path fill="none" stroke="black" d="M192.198,-287.715C209.228,-243.039 261.382,-123.627 349,-72 425.521,-26.9118 694.449,-19.9666 805.486,-19.053"/> | ||
565 | <polygon fill="black" stroke="black" points="805.751,-22.5513 815.727,-18.9823 805.703,-15.5515 805.751,-22.5513"/> | ||
566 | </g> | ||
567 | <!-- scalarproduct --> | ||
568 | <g id="node38" class="node"><title>scalarproduct</title> | ||
569 | <ellipse fill="none" stroke="black" cx="636" cy="-594" rx="57.6901" ry="18"/> | ||
570 | <text text-anchor="middle" x="636" y="-590.3" font-family="Times,serif" font-size="14.00">scalarproduct</text> | ||
571 | </g> | ||
572 | <!-- scalarproduct->cadet --> | ||
573 | <g id="edge74" class="edge"><title>scalarproduct->cadet</title> | ||
574 | <path fill="none" stroke="black" d="M622.726,-576.035C614.79,-565.742 604.61,-552.266 596,-540 581.021,-518.662 564.9,-493.752 553.465,-475.721"/> | ||
575 | <polygon fill="black" stroke="black" points="556.241,-473.562 547.943,-466.975 550.322,-477.299 556.241,-473.562"/> | ||
576 | </g> | ||
577 | <!-- scalarproduct->set --> | ||
578 | <g id="edge73" class="edge"><title>scalarproduct->set</title> | ||
579 | <path fill="none" stroke="black" d="M610.179,-577.811C591.059,-566.564 565.021,-551.248 545.33,-539.665"/> | ||
580 | <polygon fill="black" stroke="black" points="546.899,-536.527 536.505,-534.473 543.349,-542.56 546.899,-536.527"/> | ||
581 | </g> | ||
582 | <!-- secushare --> | ||
583 | <g id="node39" class="node"><title>secushare</title> | ||
584 | <polygon fill="none" stroke="black" points="633.366,-815.562 578,-828 522.634,-815.562 522.686,-795.438 633.314,-795.438 633.366,-815.562"/> | ||
585 | <text text-anchor="middle" x="578" y="-806.3" font-family="Times,serif" font-size="14.00">secushare</text> | ||
586 | </g> | ||
587 | <!-- social --> | ||
588 | <g id="node42" class="node"><title>social</title> | ||
589 | <ellipse fill="none" stroke="black" cx="578" cy="-738" rx="31.3957" ry="18"/> | ||
590 | <text text-anchor="middle" x="578" y="-734.3" font-family="Times,serif" font-size="14.00">social</text> | ||
591 | </g> | ||
592 | <!-- secushare->social --> | ||
593 | <g id="edge80" class="edge"><title>secushare->social</title> | ||
594 | <path fill="none" stroke="black" d="M578,-795.17C578,-786.919 578,-776.153 578,-766.256"/> | ||
595 | <polygon fill="black" stroke="black" points="581.5,-766.019 578,-756.019 574.5,-766.019 581.5,-766.019"/> | ||
596 | </g> | ||
597 | <!-- multicast --> | ||
598 | <g id="node40" class="node"><title>multicast</title> | ||
599 | <ellipse fill="none" stroke="black" cx="326" cy="-594" rx="43.5923" ry="18"/> | ||
600 | <text text-anchor="middle" x="326" y="-590.3" font-family="Times,serif" font-size="14.00">multicast</text> | ||
601 | </g> | ||
602 | <!-- multicast->cadet --> | ||
603 | <g id="edge82" class="edge"><title>multicast->cadet</title> | ||
604 | <path fill="none" stroke="black" d="M347.889,-578.338C386.803,-552.273 467.927,-497.935 510.526,-469.402"/> | ||
605 | <polygon fill="black" stroke="black" points="512.642,-472.198 519.003,-463.725 508.747,-466.382 512.642,-472.198"/> | ||
606 | </g> | ||
607 | <!-- psyc --> | ||
608 | <g id="node41" class="node"><title>psyc</title> | ||
609 | <ellipse fill="none" stroke="black" cx="326" cy="-666" rx="27" ry="18"/> | ||
610 | <text text-anchor="middle" x="326" y="-662.3" font-family="Times,serif" font-size="14.00">psyc</text> | ||
611 | </g> | ||
612 | <!-- psyc->multicast --> | ||
613 | <g id="edge81" class="edge"><title>psyc->multicast</title> | ||
614 | <path fill="none" stroke="black" d="M326,-647.697C326,-639.983 326,-630.712 326,-622.112"/> | ||
615 | <polygon fill="black" stroke="black" points="329.5,-622.104 326,-612.104 322.5,-622.104 329.5,-622.104"/> | ||
616 | </g> | ||
617 | <!-- psycstore --> | ||
618 | <g id="node43" class="node"><title>psycstore</title> | ||
619 | <ellipse fill="none" stroke="black" cx="220" cy="-594" rx="44.393" ry="18"/> | ||
620 | <text text-anchor="middle" x="220" y="-590.3" font-family="Times,serif" font-size="14.00">psycstore</text> | ||
621 | </g> | ||
622 | <!-- psyc->psycstore --> | ||
623 | <g id="edge79" class="edge"><title>psyc->psycstore</title> | ||
624 | <path fill="none" stroke="black" d="M307.536,-652.807C291.938,-642.506 269.271,-627.537 250.911,-615.413"/> | ||
625 | <polygon fill="black" stroke="black" points="252.567,-612.312 242.294,-609.722 248.71,-618.154 252.567,-612.312"/> | ||
626 | </g> | ||
627 | <!-- social->gns --> | ||
628 | <g id="edge78" class="edge"><title>social->gns</title> | ||
629 | <path fill="none" stroke="black" d="M605.831,-729.838C655.82,-716.973 760.68,-689.987 815.282,-675.935"/> | ||
630 | <polygon fill="black" stroke="black" points="816.373,-679.268 825.185,-673.386 814.628,-672.489 816.373,-679.268"/> | ||
631 | </g> | ||
632 | <!-- social->psyc --> | ||
633 | <g id="edge77" class="edge"><title>social->psyc</title> | ||
634 | <path fill="none" stroke="black" d="M550.552,-729.376C504.247,-716.513 410.731,-690.537 360.222,-676.506"/> | ||
635 | <polygon fill="black" stroke="black" points="360.996,-673.089 350.424,-673.784 359.122,-679.833 360.996,-673.089"/> | ||
636 | </g> | ||
637 | <!-- rps --> | ||
638 | <g id="node44" class="node"><title>rps</title> | ||
639 | <ellipse fill="none" stroke="black" cx="593" cy="-306" rx="27" ry="18"/> | ||
640 | <text text-anchor="middle" x="593" y="-302.3" font-family="Times,serif" font-size="14.00">rps</text> | ||
641 | </g> | ||
642 | <!-- rps->core --> | ||
643 | <g id="edge83" class="edge"><title>rps->core</title> | ||
644 | <path fill="none" stroke="black" d="M584.187,-288.765C579.582,-280.283 573.845,-269.714 568.679,-260.197"/> | ||
645 | <polygon fill="black" stroke="black" points="571.613,-258.266 563.766,-251.147 565.461,-261.606 571.613,-258.266"/> | ||
646 | </g> | ||
647 | </g> | ||
648 | </svg> | ||
diff --git a/contrib/packages/guix/notest-guix-env.scm b/contrib/packages/guix/notest-guix-env.scm new file mode 100644 index 000000000..ffb0ec889 --- /dev/null +++ b/contrib/packages/guix/notest-guix-env.scm | |||
@@ -0,0 +1,145 @@ | |||
1 | ;;; This file is part of GNUnet. | ||
2 | ;;; Copyright (C) 2016, 2017, 2018 GNUnet e.V. | ||
3 | ;;; | ||
4 | ;;; GNUnet is free software: you can redistribute it and/or modify it | ||
5 | ;;; under the terms of the GNU Affero General Public License as published | ||
6 | ;;; by the Free Software Foundation, either version 3 of the License, | ||
7 | ;;; or (at your option) any later version. | ||
8 | ;;; | ||
9 | ;;; GNUnet is distributed in the hope that it will be useful, but | ||
10 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
12 | ;;; Affero General Public License for more details. | ||
13 | ;;; | ||
14 | ;;; You should have received a copy of the GNU Affero General Public License | ||
15 | ;;; along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | |||
17 | (use-modules | ||
18 | (ice-9 popen) | ||
19 | (ice-9 match) | ||
20 | (ice-9 rdelim) | ||
21 | (guix packages) | ||
22 | (guix build-system gnu) | ||
23 | (guix gexp) | ||
24 | ((guix build utils) #:select (with-directory-excursion)) | ||
25 | (guix git-download) | ||
26 | (guix utils) ; current-source-directory | ||
27 | (gnu packages) | ||
28 | (gnu packages aidc) | ||
29 | (gnu packages autotools) | ||
30 | (gnu packages backup) | ||
31 | (gnu packages base) | ||
32 | (gnu packages compression) | ||
33 | (gnu packages curl) | ||
34 | (gnu packages databases) | ||
35 | (gnu packages file) | ||
36 | (gnu packages gettext) | ||
37 | (gnu packages glib) | ||
38 | (gnu packages gnome) | ||
39 | (gnu packages gnunet) | ||
40 | (gnu packages gnupg) | ||
41 | (gnu packages gnuzilla) | ||
42 | (gnu packages groff) | ||
43 | (gnu packages gstreamer) | ||
44 | (gnu packages gtk) | ||
45 | (gnu packages guile) | ||
46 | (gnu packages image) | ||
47 | (gnu packages image-viewers) | ||
48 | (gnu packages libidn) | ||
49 | (gnu packages libunistring) | ||
50 | (gnu packages linux) | ||
51 | (gnu packages maths) | ||
52 | (gnu packages multiprecision) | ||
53 | (gnu packages perl) | ||
54 | (gnu packages pkg-config) | ||
55 | (gnu packages pulseaudio) | ||
56 | (gnu packages python) | ||
57 | (gnu packages tex) | ||
58 | (gnu packages texinfo) | ||
59 | (gnu packages tex) | ||
60 | (gnu packages tls) | ||
61 | (gnu packages upnp) | ||
62 | (gnu packages video) | ||
63 | (gnu packages web) | ||
64 | (gnu packages xiph) | ||
65 | ((guix licenses) #:prefix license:)) | ||
66 | |||
67 | (define %source-dir (current-source-directory)) | ||
68 | |||
69 | (define gnunet-dev-env | ||
70 | (let* ((revision "1") | ||
71 | (select? (delay (or (git-predicate | ||
72 | (current-source-directory)) | ||
73 | source-file?)))) | ||
74 | (package | ||
75 | (inherit gnunet) | ||
76 | (name "gnunet") | ||
77 | (version (string-append "git" revision)) | ||
78 | (source | ||
79 | (local-file | ||
80 | (string-append (getcwd)) | ||
81 | #:recursive? #t)) | ||
82 | (inputs | ||
83 | `(("glpk" ,glpk) | ||
84 | ("gnurl" ,gnurl) | ||
85 | ("gstreamer" ,gstreamer) | ||
86 | ("gst-plugins-base" ,gst-plugins-base) | ||
87 | ("gnutls/dane" ,gnutls/dane) | ||
88 | ("libextractor" ,libextractor) | ||
89 | ("libgcrypt" ,libgcrypt) | ||
90 | ("libidn" ,libidn) | ||
91 | ("libmicrohttpd" ,libmicrohttpd) | ||
92 | ("libltdl" ,libltdl) | ||
93 | ("libunistring" ,libunistring) | ||
94 | ("openssl" ,openssl) | ||
95 | ("opus" ,opus) | ||
96 | ("pulseaudio" ,pulseaudio) | ||
97 | ("sqlite" ,sqlite) | ||
98 | ("postgresql" ,postgresql) | ||
99 | ("mysql" ,mariadb) | ||
100 | ("zlib" ,zlib) | ||
101 | ("perl" ,perl) | ||
102 | ("python-2" ,python-2) ; tests and gnunet-qr | ||
103 | ("python2-future" ,python2-future) | ||
104 | ("jansson" ,jansson) | ||
105 | ("nss" ,nss) | ||
106 | ("glib" ,glib "bin") | ||
107 | ("gmp" ,gmp) | ||
108 | ("bluez" ,bluez) ; for optional bluetooth feature | ||
109 | ("glib" ,glib) | ||
110 | ;; ("texlive" ,texlive) ;FIXME: minimize. | ||
111 | ("texlive-tiny" ,texlive-tiny) ;; Seems to be enough for _just_ info output. | ||
112 | ("miniupnpc" ,miniupnpc) | ||
113 | ("libogg" ,libogg))) | ||
114 | (native-inputs | ||
115 | `(("pkg-config" ,pkg-config) | ||
116 | ("autoconf" ,autoconf) | ||
117 | ("automake" ,automake) | ||
118 | ("gnu-gettext" ,gnu-gettext) | ||
119 | ("which" ,which) | ||
120 | ("texinfo" ,texinfo-5) ; Debian stable: 5.2 | ||
121 | ("libtool" ,libtool))) | ||
122 | (outputs '("out" "debug")) | ||
123 | (arguments | ||
124 | `(#:configure-flags | ||
125 | (list (string-append "--with-nssdir=" %output "/lib") | ||
126 | "--enable-experimental") | ||
127 | #:phases | ||
128 | ;; swap check and install phases and set paths to installed bin | ||
129 | (modify-phases %standard-phases | ||
130 | (add-after 'unpack 'patch-bin-sh | ||
131 | (lambda _ | ||
132 | (for-each (lambda (f) (chmod f #o755)) | ||
133 | (find-files "po" "")) | ||
134 | #t)) | ||
135 | (add-after 'patch-bin-sh 'bootstrap | ||
136 | (lambda _ | ||
137 | (invoke "sh" "bootstrap"))) | ||
138 | ;;(add-before 'build 'chdir | ||
139 | ;; (lambda _ | ||
140 | ;; (chdir "doc/documentation"))) | ||
141 | (delete 'check) | ||
142 | ;; XXX: https://gnunet.org/bugs/view.php?id=4619 | ||
143 | )))))) | ||
144 | |||
145 | gnunet-dev-env | ||
diff --git a/contrib/services/shepherd/ng0_wip/.gitignore b/contrib/services/shepherd/ng0_wip/.gitignore deleted file mode 100644 index 9b974979a..000000000 --- a/contrib/services/shepherd/ng0_wip/.gitignore +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | !*.patch \ No newline at end of file | ||
diff --git a/contrib/services/shepherd/ng0_wip/00001-gnu-services-Add-gnunet-service.patch b/contrib/services/shepherd/ng0_wip/00001-gnu-services-Add-gnunet-service.patch deleted file mode 100644 index 609a0a5ef..000000000 --- a/contrib/services/shepherd/ng0_wip/00001-gnu-services-Add-gnunet-service.patch +++ /dev/null | |||
@@ -1,186 +0,0 @@ | |||
1 | From 60a4c0f7c60ef705db17561fd3e930bbe11730c9 Mon Sep 17 00:00:00 2001 | ||
2 | From: ng0 <ng0@we.make.ritual.n0.is> | ||
3 | Date: Mon, 12 Sep 2016 12:26:52 +0000 | ||
4 | Subject: [PATCH] gnu: services: Add gnunet-service. | ||
5 | |||
6 | * gnu/services/networking.scm (gnunet): New service. | ||
7 | |||
8 | Signed-off-by: Nils Gillmann <ng0@n0.is> | ||
9 | --- | ||
10 | doc/guix.texi | 36 ++++++++++++++ | ||
11 | gnu/services/networking.scm | 93 ++++++++++++++++++++++++++++++++++++- | ||
12 | 2 files changed, 128 insertions(+), 1 deletion(-) | ||
13 | |||
14 | diff --git a/doc/guix.texi b/doc/guix.texi | ||
15 | index d925b4eda..eb7b409d7 100644 | ||
16 | --- a/doc/guix.texi | ||
17 | +++ b/doc/guix.texi | ||
18 | @@ -11016,6 +11016,42 @@ Package object of the Open vSwitch. | ||
19 | @end table | ||
20 | @end deftp | ||
21 | |||
22 | +@cindex GNUnet | ||
23 | +@cindex gnunet | ||
24 | +@subsubheading GNUnet Service | ||
25 | + | ||
26 | +@deffn {Scheme Variable} gnunet-service-type | ||
27 | +This is the type of the @uref{https://gnunet.org, GNUnet} | ||
28 | +service, whose value should be an @code{gnunet-configuration} object | ||
29 | +as in this example: | ||
30 | + | ||
31 | +@example | ||
32 | +(service gnunet-service-type | ||
33 | + (gnunet-configuration | ||
34 | + (config-file (local-file "./gnunet.conf")))) | ||
35 | +@end example | ||
36 | +@end deffn | ||
37 | + | ||
38 | +@deftp {Data Type} gnunet-configuration | ||
39 | +Data type representing the configuration of GNUnet. | ||
40 | + | ||
41 | +@table @asis | ||
42 | +@item @code{package} (default: @var{gnunet}) | ||
43 | +Package object of the GNUnet service. | ||
44 | + | ||
45 | +@item @code{config-file} (default: @var{%default-gnunet-file}) | ||
46 | +File-like object of the GNUnet configuration file to use. For NAT is | ||
47 | +assumes by default that you are behind a NAT (@var{BEHIND_NAT = YES}) | ||
48 | +and enables UPNP (@var{ENABLE_UPNP = YES}). | ||
49 | +The hostlist is configured with the options @var{-b} (bootstrap using | ||
50 | +configured hostlist servers) and @var{-e} (enable learning advertised hostlists). | ||
51 | +Read the configuration files in @var{"~/.guix-profile/share/gnunet/config.d/"} | ||
52 | +for more information. These files also set the defaults when you don't set | ||
53 | +any explicit values to override them. | ||
54 | + | ||
55 | +@end table | ||
56 | +@end deftp | ||
57 | + | ||
58 | @node X Window | ||
59 | @subsubsection X Window | ||
60 | |||
61 | diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm | ||
62 | index b0c23aafc..0ff20e707 100644 | ||
63 | --- a/gnu/services/networking.scm | ||
64 | +++ b/gnu/services/networking.scm | ||
65 | @@ -5,6 +5,7 @@ | ||
66 | ;;; Copyright © 2016 John Darrington <jmd@gnu.org> | ||
67 | ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> | ||
68 | ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> | ||
69 | +;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net> | ||
70 | ;;; | ||
71 | ;;; This file is part of GNU Guix. | ||
72 | ;;; | ||
73 | @@ -29,6 +30,7 @@ | ||
74 | #:use-module (gnu system pam) | ||
75 | #:use-module (gnu packages admin) | ||
76 | #:use-module (gnu packages connman) | ||
77 | + #:use-module (gnu packages gnunet) | ||
78 | #:use-module (gnu packages linux) | ||
79 | #:use-module (gnu packages tor) | ||
80 | #:use-module (gnu packages messaging) | ||
81 | @@ -92,7 +94,12 @@ | ||
82 | wpa-supplicant-service-type | ||
83 | |||
84 | openvswitch-service-type | ||
85 | - openvswitch-configuration)) | ||
86 | + openvswitch-configuration | ||
87 | + | ||
88 | + gnunet-configuration | ||
89 | + gnunet-configuration? | ||
90 | + gnunet-service | ||
91 | + gnunet-service-type)) | ||
92 | |||
93 | ;;; Commentary: | ||
94 | ;;; | ||
95 | @@ -1125,4 +1132,88 @@ a network connection manager.")))) | ||
96 | switch designed to enable massive network automation through programmatic | ||
97 | extension."))) | ||
98 | |||
99 | +;;; | ||
100 | +;;; GNUnet | ||
101 | +;;; | ||
102 | + | ||
103 | +(define-record-type* <gnunet-configuration> | ||
104 | + gnunet-configuration make-gnunet-configuration | ||
105 | + gnunet-configuration? | ||
106 | + (package gnunet-configuration-package | ||
107 | + (default gnunet)) | ||
108 | + (config-file gnunet-configuration-config-file | ||
109 | + (default %default-gnunet-config-file))) | ||
110 | + | ||
111 | +(define %default-gnunet-config-file | ||
112 | + (plain-file "gnunet.conf" " | ||
113 | +[PATHS] | ||
114 | +SERVICEHOME = /var/lib/gnunet | ||
115 | +GNUNET_CONFIG_HOME = /var/lib/gnunet | ||
116 | + | ||
117 | +[arm] | ||
118 | +SYSTEM_ONLY = YES | ||
119 | +USER_ONLY = NO | ||
120 | + | ||
121 | +[nat] | ||
122 | +BEHIND_NAT = YES | ||
123 | +ENABLE_UPNP = YES | ||
124 | + | ||
125 | +[hostlist] | ||
126 | +OPTIONS = -b -e | ||
127 | +")) | ||
128 | + | ||
129 | +(define gnunet-shepherd-service | ||
130 | + (match-lambda | ||
131 | + (($ <gnunet-configuration> package config-file) | ||
132 | + (list (shepherd-service | ||
133 | + (provision '(gnunet)) | ||
134 | + (requirement '(loopback)) | ||
135 | + (documentation "Run the GNUnet service.") | ||
136 | + (start | ||
137 | + (let ((gnunet | ||
138 | + (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) | ||
139 | + #~(make-forkexec-constructor | ||
140 | + (list #$gnunet "-c" #$config-file) | ||
141 | + #:log-file "/var/log/gnunet.log" | ||
142 | + #:pid-file "/var/run/gnunet.pid"))) | ||
143 | + (stop | ||
144 | + #~(make-kill-destructor))))))) | ||
145 | + | ||
146 | +(define %gnunet-accounts | ||
147 | + (list (user-group | ||
148 | + (name "gnunetdns") | ||
149 | + (system? #t)) | ||
150 | + (user-group | ||
151 | + (name "gnunet") | ||
152 | + (system? #t)) | ||
153 | + (user-account | ||
154 | + (name "gnunet") | ||
155 | + (group "gnunet") | ||
156 | + (system? #t) | ||
157 | + (comment "GNUnet system user") | ||
158 | + (home-directory "/var/lib/gnunet") | ||
159 | + (shell #~(string-append #$shadow "/sbin/nologin"))))) | ||
160 | + | ||
161 | +(define gnunet-activation | ||
162 | + (match-lambda | ||
163 | + (($ <gnunet-configuration> package config-file) | ||
164 | + (let ((gnunet | ||
165 | + (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) | ||
166 | + #~(begin | ||
167 | + ;; Create the .config + .cache for gnunet user | ||
168 | + (mkdir-p "/var/lib/gnunet/.config/gnunet") | ||
169 | + (mkdir-p "/var/lib/gnunet/.cache/gnunet")))))) | ||
170 | + | ||
171 | +(define gnunet-service-type | ||
172 | + (service-type | ||
173 | + (name 'gnunet) | ||
174 | + (extensions (list (service-extension account-service-type | ||
175 | + (const %gnunet-accounts)) | ||
176 | + (service-extension activation-service-type | ||
177 | + gnunet-activation) | ||
178 | + (service-extension profile-service-type | ||
179 | + (compose list gnunet-configuration-package)) | ||
180 | + (service-extension shepherd-root-service-type | ||
181 | + gnunet-shepherd-service))))) | ||
182 | + | ||
183 | ;;; networking.scm ends here | ||
184 | -- | ||
185 | 2.17.0 | ||
186 | |||
diff --git a/contrib/services/shepherd/ng0_wip/0001-gnu-services-Add-gnunet-service.patch b/contrib/services/shepherd/ng0_wip/0001-gnu-services-Add-gnunet-service.patch deleted file mode 100644 index a494434e0..000000000 --- a/contrib/services/shepherd/ng0_wip/0001-gnu-services-Add-gnunet-service.patch +++ /dev/null | |||
@@ -1,225 +0,0 @@ | |||
1 | From 434b05bc1a11b4865c0bd634281acd91dfce972c Mon Sep 17 00:00:00 2001 | ||
2 | From: ng0 <ng0@we.make.ritual.n0.is> | ||
3 | Date: Mon, 12 Sep 2016 12:26:52 +0000 | ||
4 | Subject: [PATCH] gnu: services: Add gnunet-service. | ||
5 | |||
6 | Signed-off-by: Nils Gillmann <ng0@n0.is> | ||
7 | --- | ||
8 | doc/guix.texi | 36 ++++++++++ | ||
9 | gnu/services/networking.scm | 134 +++++++++++++++++++++++++++++++++++- | ||
10 | 2 files changed, 169 insertions(+), 1 deletion(-) | ||
11 | |||
12 | diff --git a/doc/guix.texi b/doc/guix.texi | ||
13 | index 00bf24d3f..73589c88b 100644 | ||
14 | --- a/doc/guix.texi | ||
15 | +++ b/doc/guix.texi | ||
16 | @@ -10138,6 +10138,42 @@ Package object of the Open vSwitch. | ||
17 | @end table | ||
18 | @end deftp | ||
19 | |||
20 | +@cindex GNUnet | ||
21 | +@cindex gnunet | ||
22 | +@subsubheading GNUnet Service | ||
23 | + | ||
24 | +@deffn {Scheme Variable} gnunet-service-type | ||
25 | +This is the type of the @uref{https://gnunet.org, GNUnet} | ||
26 | +service, whose value should be an @code{gnunet-configuration} object | ||
27 | +as in this example: | ||
28 | + | ||
29 | +@example | ||
30 | +(service gnunet-service-type | ||
31 | + (gnunet-configuration | ||
32 | + (config-file (local-file "./gnunet.conf")))) | ||
33 | +@end example | ||
34 | +@end deffn | ||
35 | + | ||
36 | +@deftp {Data Type} gnunet-configuration | ||
37 | +Data type representing the configuration of GNUnet. | ||
38 | + | ||
39 | +@table @asis | ||
40 | +@item @code{package} (default: @var{gnunet}) | ||
41 | +Package object of the GNUnet service. | ||
42 | + | ||
43 | +@item @code{config-file} (default: @var{%default-gnunet-file}) | ||
44 | +File-like object of the GNUnet configuration file to use. For NAT is | ||
45 | +assumes by default that you are behind a NAT (@var{BEHIND_NAT = YES}) | ||
46 | +and enables UPNP (@var{ENABLE_UPNP = YES}). | ||
47 | +The hostlist is configured with the options @var{-b} (bootstrap using | ||
48 | +configured hostlist servers) and @var{-e} (enable learning advertised hostlists). | ||
49 | +Read the configuration files in @var{"~/.guix-profile/share/gnunet/config.d/"} | ||
50 | +for more information. These files also set the defaults when you don't set | ||
51 | +any explicit values to override them. | ||
52 | + | ||
53 | +@end table | ||
54 | +@end deftp | ||
55 | + | ||
56 | @node X Window | ||
57 | @subsubsection X Window | ||
58 | |||
59 | diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm | ||
60 | index 99a3d493c..fe682b267 100644 | ||
61 | --- a/gnu/services/networking.scm | ||
62 | +++ b/gnu/services/networking.scm | ||
63 | @@ -5,6 +5,7 @@ | ||
64 | ;;; Copyright © 2016 John Darrington <jmd@gnu.org> | ||
65 | ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> | ||
66 | ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> | ||
67 | +;;; Copyright © 2017 ng0 <ng0@no-reply.pragmatique.xyt> | ||
68 | ;;; | ||
69 | ;;; This file is part of GNU Guix. | ||
70 | ;;; | ||
71 | @@ -29,6 +30,7 @@ | ||
72 | #:use-module (gnu system pam) | ||
73 | #:use-module (gnu packages admin) | ||
74 | #:use-module (gnu packages connman) | ||
75 | + #:use-module (gnu packages gnunet) | ||
76 | #:use-module (gnu packages linux) | ||
77 | #:use-module (gnu packages tor) | ||
78 | #:use-module (gnu packages messaging) | ||
79 | @@ -92,7 +94,12 @@ | ||
80 | wpa-supplicant-service-type | ||
81 | |||
82 | openvswitch-service-type | ||
83 | - openvswitch-configuration)) | ||
84 | + openvswitch-configuration | ||
85 | + | ||
86 | + gnunet-configuration | ||
87 | + gnunet-configuration? | ||
88 | + gnunet-service-type | ||
89 | + %default-gnunet-config-file)) | ||
90 | |||
91 | ;;; Commentary: | ||
92 | ;;; | ||
93 | @@ -1069,4 +1076,129 @@ dns=" dns " | ||
94 | (service-extension shepherd-root-service-type | ||
95 | openvswitch-shepherd-service))))) | ||
96 | |||
97 | +;;; | ||
98 | +;;; GNUnet | ||
99 | +;;; | ||
100 | + | ||
101 | +;; steps: | ||
102 | +;; 0. The service works!!! | ||
103 | +;; 1. We want a completely adjustable config. | ||
104 | +;; 2. We want to extend this service with functions like | ||
105 | +;; vpn, comparable to tor-service | ||
106 | +;; Because of (1) we can't have a default. We can have | ||
107 | +;; default values which can be adjusted. A config is | ||
108 | +;; generated from these. | ||
109 | + | ||
110 | +(define-record-type* <gnunet-configuration> | ||
111 | + gnunet-configuration make-gnunet-configuration | ||
112 | + gnunet-configuration? | ||
113 | + (gnunet gnunet-configuration-package | ||
114 | + (default gnunet)) | ||
115 | + (config-file gnunet-configuration-config-file | ||
116 | + (default (plain-file "empty" "")))) | ||
117 | + | ||
118 | +(define %default-gnunet-config-file | ||
119 | + (plain-file "gnunet.conf" " | ||
120 | +[PATHS] | ||
121 | +SERVICEHOME = /var/lib/gnunet | ||
122 | +GNUNET_CONFIG_HOME = /var/lib/gnunet | ||
123 | + | ||
124 | +[arm] | ||
125 | +SYSTEM_ONLY = NO | ||
126 | +USER_ONLY = NO | ||
127 | + | ||
128 | +[nat] | ||
129 | +BEHIND_NAT = YES | ||
130 | +ENABLE_UPNP = YES | ||
131 | + | ||
132 | +[hostlist] | ||
133 | +OPTIONS = -b -e | ||
134 | +")) | ||
135 | + | ||
136 | +(define gnunet-shepherd-service | ||
137 | + (match-lambda | ||
138 | + (($ <gnunet-configuration> package config-file) | ||
139 | + (list (shepherd-service | ||
140 | + (provision '(gnunet)) | ||
141 | + (requirement '(user-processes loopback networking)) | ||
142 | + (documentation "Run the GNUnet service.") | ||
143 | + (start | ||
144 | + (let ((gnunet | ||
145 | + (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) | ||
146 | + #~(make-forkexec-constructor | ||
147 | + (list #$gnunet "-c" #$config-file "-d") | ||
148 | + #:pid-file "/var/run/gnunet/arm-service.pid" | ||
149 | + #:user "gnunet" | ||
150 | + #:group "gnunet" | ||
151 | + ;;#:log-file "/var/lib/gnunet/gnunet.log"))) | ||
152 | + #:log-file "/var/log/gnunet.log"))) | ||
153 | + (stop #~(make-kill-destructor))))))) | ||
154 | + | ||
155 | +(define %gnunet-accounts | ||
156 | + (list (user-group (name "gnunetdns") (system? #t)) | ||
157 | + (user-group (name "gnunet") (system? #t)) | ||
158 | + (user-account | ||
159 | + (name "gnunet") | ||
160 | + (group "gnunet") | ||
161 | + (system? #t) | ||
162 | + (comment "GNUnet system user") | ||
163 | + (home-directory "/var/empty") | ||
164 | + (shell (file-append shadow "/sbin/nologin"))))) | ||
165 | + | ||
166 | +;; ${GNUNET_HOME}/.local/share/gnunet/gnunet.conf -> chmod 600 | ||
167 | +;; mkdir -p ${GNUNET_HOME}/.cache/gnunet | ||
168 | + | ||
169 | +(define gnunet-activation | ||
170 | + (match-lambda | ||
171 | + (($ <gnunet-configuration> package config-file) | ||
172 | + (let ((gnunet | ||
173 | + (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) | ||
174 | + #~(begin | ||
175 | + (use-modules (guix build utils)) | ||
176 | + (define %user (getpw "gnunet")) | ||
177 | + (mkdir-p "/var/lib/gnunet/") | ||
178 | + (chown "/var/lib/gnunet" (passwd:uid %user) (passwd:gid %user)) | ||
179 | + ;;(chmod "/var/lib/gnunet/" #o755) | ||
180 | + (mkdir-p "/var/lib/gnunet/.local/share/gnunet") | ||
181 | + (mkdir-p "/var/lib/gnunet/.cache/gnunet") | ||
182 | + (mkdir-p "/var/lib/gnunet/hostlist") | ||
183 | + (mkdir-p "/var/lib/gnunet/.config/gnunet") | ||
184 | + (chown "/var/lib/gnunet/.local/share/gnunet" (passwd:uid %user) (passwd:gid %user)) | ||
185 | + (chown "/var/lib/gnunet/.cache/gnunet" (passwd:uid %user) (passwd:gid %user)) | ||
186 | + (chown "/var/lib/gnunet/hostlist" (passwd:uid %user) (passwd:gid %user)) | ||
187 | + ;;(chown "/var/lib/gnunet/gnunet.conf" (passwd:uid %user) (passwd:gid %user)) | ||
188 | + (chown "/var/lib/gnunet/.config/gnunet" (passwd:uid %user) (passwd:gid %user))))))) | ||
189 | + ;;(chmod "/var/lib/gnunet/.config/gnunet" #o755) | ||
190 | + ;;(chmod "/var/lib/gnunet/.cache/gnunet" #o755) | ||
191 | + ;;(chmod "/var/lib/gnunet/.local/share/gnunet" #o755)))))) | ||
192 | + | ||
193 | +;; SUID_ROOT_HELPERS="exit nat-server nat-client transport-bluetooth transport-wlan vpn" | ||
194 | +;; set chmod u+s for those above. | ||
195 | +;; chmodown_execbin ${libexec}/gnunet-helper-dns 4750 root:gnunetdns | ||
196 | +;; chmodown_execbin ${libexec}/gnunet-service-dns 2750 gnunet:gnunetdns | ||
197 | +(define gnunet-setuid-programs | ||
198 | + (match-lambda | ||
199 | + (($ <gnunet-configuration> package) | ||
200 | + (list (file-append package "/lib/gnunet/libexec/gnunet-helper-exit") | ||
201 | + (file-append package "/lib/gnunet/libexec/gnunet-helper-nat-server") | ||
202 | + (file-append package "/lib/gnunet/libexec/gnunet-helper-nat-client") | ||
203 | + (file-append package "/lib/gnunet/libexec/gnunet-helper-transport-bluetooth") | ||
204 | + (file-append package "/lib/gnunet/libexec/gnunet-helper-transport-wlan") | ||
205 | + (file-append package "/lib/gnunet/libexec/gnunet-helper-vpn"))))) | ||
206 | + | ||
207 | +(define gnunet-service-type | ||
208 | + (service-type | ||
209 | + (name 'gnunet) | ||
210 | + (extensions (list (service-extension account-service-type | ||
211 | + (const %gnunet-accounts)) | ||
212 | + (service-extension activation-service-type | ||
213 | + gnunet-activation) | ||
214 | + (service-extension profile-service-type | ||
215 | + (compose list gnunet-configuration-package)) | ||
216 | + (service-extension setuid-program-service-type | ||
217 | + gnunet-setuid-programs) | ||
218 | + (service-extension shepherd-root-service-type | ||
219 | + gnunet-shepherd-service))))) | ||
220 | +;;; --- here starts the rewrite. | ||
221 | + | ||
222 | ;;; networking.scm ends here | ||
223 | -- | ||
224 | 2.17.0 | ||
225 | |||
diff --git a/contrib/services/shepherd/ng0_wip/001-gnu-services-Add-gnunet-service.patch b/contrib/services/shepherd/ng0_wip/001-gnu-services-Add-gnunet-service.patch deleted file mode 100644 index 0017ec8cf..000000000 --- a/contrib/services/shepherd/ng0_wip/001-gnu-services-Add-gnunet-service.patch +++ /dev/null | |||
@@ -1,204 +0,0 @@ | |||
1 | From 91241bacb6533745535ff28d20f087ecd571e7be Mon Sep 17 00:00:00 2001 | ||
2 | From: ng0 <ng0@we.make.ritual.n0.is> | ||
3 | Date: Mon, 12 Sep 2016 12:26:52 +0000 | ||
4 | Subject: [PATCH] gnu: services: Add gnunet-service. | ||
5 | |||
6 | --- | ||
7 | doc/guix.texi | 36 ++++++++++++++ | ||
8 | gnu/services/networking.scm | 114 +++++++++++++++++++++++++++++++++++++++++++- | ||
9 | 2 files changed, 149 insertions(+), 1 deletion(-) | ||
10 | |||
11 | diff --git a/doc/guix.texi b/doc/guix.texi | ||
12 | index 99bde4aca..6c683393e 100644 | ||
13 | --- a/doc/guix.texi | ||
14 | +++ b/doc/guix.texi | ||
15 | @@ -8903,6 +8903,42 @@ Boolean values @var{ipv4?} and @var{ipv6?} determine whether to use IPv4/IPv6 | ||
16 | sockets. | ||
17 | @end deffn | ||
18 | |||
19 | +@cindex GNUnet | ||
20 | +@cindex gnunet | ||
21 | +@subsubheading GNUnet Service | ||
22 | + | ||
23 | +@deffn {Scheme Variable} gnunet-service-type | ||
24 | +This is the type of the @uref{https://gnunet.org, GNUnet} | ||
25 | +service, whose value should be an @code{gnunet-configuration} object | ||
26 | +as in this example: | ||
27 | + | ||
28 | +@example | ||
29 | +(service gnunet-service-type | ||
30 | + (gnunet-configuration | ||
31 | + (config-file (local-file "./gnunet.conf")))) | ||
32 | +@end example | ||
33 | +@end deffn | ||
34 | + | ||
35 | +@deftp {Data Type} gnunet-configuration | ||
36 | +Data type representing the configuration of GNUnet. | ||
37 | + | ||
38 | +@table @asis | ||
39 | +@item @code{package} (default: @var{gnunet}) | ||
40 | +Package object of the GNUnet service. | ||
41 | + | ||
42 | +@item @code{config-file} (default: @var{%default-gnunet-file}) | ||
43 | +File-like object of the GNUnet configuration file to use. For NAT is | ||
44 | +assumes by default that you are behind a NAT (@var{BEHIND_NAT = YES}) | ||
45 | +and enables UPNP (@var{ENABLE_UPNP = YES}). | ||
46 | +The hostlist is configured with the options @var{-b} (bootstrap using | ||
47 | +configured hostlist servers) and @var{-e} (enable learning advertised hostlists). | ||
48 | +Read the configuration files in @var{"~/.guix-profile/share/gnunet/config.d/"} | ||
49 | +for more information. These files also set the defaults when you don't set | ||
50 | +any explicit values to override them. | ||
51 | + | ||
52 | +@end table | ||
53 | +@end deftp | ||
54 | + | ||
55 | |||
56 | @node X Window | ||
57 | @subsubsection X Window | ||
58 | diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm | ||
59 | index d672ecf68..ff3615ea2 100644 | ||
60 | --- a/gnu/services/networking.scm | ||
61 | +++ b/gnu/services/networking.scm | ||
62 | @@ -3,6 +3,7 @@ | ||
63 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | ||
64 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
65 | ;;; Copyright © 2016 John Darrington <jmd@gnu.org> | ||
66 | +;;; Copyright © 2016 ng0 <ng0@libertad.pw> | ||
67 | ;;; | ||
68 | ;;; This file is part of GNU Guix. | ||
69 | ;;; | ||
70 | @@ -27,6 +28,7 @@ | ||
71 | #:use-module (gnu system pam) | ||
72 | #:use-module (gnu packages admin) | ||
73 | #:use-module (gnu packages connman) | ||
74 | + #:use-module (gnu packages gnunet) | ||
75 | #:use-module (gnu packages linux) | ||
76 | #:use-module (gnu packages tor) | ||
77 | #:use-module (gnu packages messaging) | ||
78 | @@ -66,7 +68,12 @@ | ||
79 | wicd-service | ||
80 | network-manager-service | ||
81 | connman-service | ||
82 | - wpa-supplicant-service-type)) | ||
83 | + wpa-supplicant-service-type | ||
84 | + | ||
85 | + gnunet-configuration | ||
86 | + gnunet-configuration? | ||
87 | + gnunet-service-type | ||
88 | + %default-gnunet-config-file)) | ||
89 | |||
90 | ;;; Commentary: | ||
91 | ;;; | ||
92 | @@ -781,4 +788,109 @@ configure networking." | ||
93 | (service-extension dbus-root-service-type list) | ||
94 | (service-extension profile-service-type list))))) | ||
95 | |||
96 | + | ||
97 | +;;; GNUnet | ||
98 | +;;; | ||
99 | +;;; | ||
100 | + | ||
101 | +(define-record-type* <gnunet-configuration> | ||
102 | + gnunet-configuration make-gnunet-configuration | ||
103 | + gnunet-configuration? | ||
104 | + (package gnunet-configuration-package | ||
105 | + (default gnunet)) | ||
106 | + (config-file gnunet-configuration-config-file | ||
107 | + (default %default-gnunet-config-file))) | ||
108 | + | ||
109 | +(define %default-gnunet-config-file | ||
110 | + (plain-file "gnunet.conf" " | ||
111 | +[PATHS] | ||
112 | +SERVICEHOME = /var/lib/gnunet | ||
113 | +GNUNET_CONFIG_HOME = /var/lib/gnunet | ||
114 | + | ||
115 | +[arm] | ||
116 | +SYSTEM_ONLY = YES | ||
117 | +USER_ONLY = NO | ||
118 | + | ||
119 | +[nat] | ||
120 | +BEHIND_NAT = YES | ||
121 | +ENABLE_UPNP = YES | ||
122 | + | ||
123 | +[hostlist] | ||
124 | +OPTIONS = -b -e | ||
125 | +")) | ||
126 | + | ||
127 | +(define gnunet-shepherd-service | ||
128 | + (match-lambda | ||
129 | + (($ <gnunet-configuration> package config-file) | ||
130 | + (list (shepherd-service | ||
131 | + (provision '(gnunet)) | ||
132 | + (requirement '(user-processes loopback)) | ||
133 | + (documentation "Run the GNUnet service.") | ||
134 | + (start | ||
135 | + (let ((gnunet | ||
136 | + (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) | ||
137 | + #~(make-forkexec-constructor | ||
138 | + (list #$gnunet "-c" #$config-file) | ||
139 | + #:pid-file "/var/run/gnunet.pid"))) | ||
140 | + (stop | ||
141 | + #~(make-kill-destructor | ||
142 | + (list #$gnunet "-e")))))))) | ||
143 | + | ||
144 | +(define %gnunet-accounts | ||
145 | + (list (user-group | ||
146 | + (name "gnunetdns") | ||
147 | + (system? #t)) | ||
148 | + (user-group | ||
149 | + (name "gnunet") | ||
150 | + (system? #t)) | ||
151 | + (user-account | ||
152 | + (name "gnunet") | ||
153 | + (group "gnunet") | ||
154 | + (system? #t) | ||
155 | + (comment "GNUnet system user") | ||
156 | + (home-directory "/var/empty") | ||
157 | + (shell #~(string-append #$shadow "/sbin/nologin"))))) | ||
158 | + | ||
159 | +(define gnunet-activation | ||
160 | + (match-lambda | ||
161 | + (($ <gnunet-configuration> package config-file) | ||
162 | + (let ((gnunet | ||
163 | + (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) | ||
164 | + #~(begin | ||
165 | + (use-modules (guix build utils)) | ||
166 | + (define %user (getpw "gnunet")) | ||
167 | + (mkdir-p "/var/lib/gnunet/") | ||
168 | + (chown "/var/lib/gnunet" (passwd:uid %user) (passwd:gid %user)) | ||
169 | + (chmod "/var/lib/gnunet/" #o600) | ||
170 | + (mkdir-p "/var/lib/gnunet/.local/share/gnunet") | ||
171 | + (mkdir-p "/var/lib/gnunet/.cache/gnunet") | ||
172 | + (mkdir-p "/var/lib/gnunet/.config/gnunet") | ||
173 | + (chmod "/var/lib/gnunet/.config/gnunet" #o600) | ||
174 | + (chmod "/var/lib/gnunet/.cache/gnunet" #o600) | ||
175 | + (chmod "/var/lib/gnunet/.local/share/gnunet" #o600)))))) | ||
176 | + | ||
177 | +(define gnunet-setuid-programs | ||
178 | + (match-lambda | ||
179 | + (($ <gnunet-configuration> package) | ||
180 | + (list (file-append package "/lib/gnunet/libexec/gnunet-helper-exit") | ||
181 | + (file-append package "/lib/gnunet/libexec/gnunet-helper-nat-server") | ||
182 | + (file-append package "/lib/gnunet/libexec/gnunet-helper-nat-client") | ||
183 | + (file-append package "/lib/gnunet/libexec/gnunet-helper-transport-bluetooth") | ||
184 | + (file-append package "/lib/gnunet/libexec/gnunet-helper-transport-wlan") | ||
185 | + (file-append package "/lib/gnunet/libexec/gnunet-helper-vpn"))))) | ||
186 | + | ||
187 | +(define gnunet-service-type | ||
188 | + (service-type | ||
189 | + (name 'gnunet) | ||
190 | + (extensions (list (service-extension account-service-type | ||
191 | + (const %gnunet-accounts)) | ||
192 | + (service-extension activation-service-type | ||
193 | + gnunet-activation) | ||
194 | + (service-extension profile-service-type | ||
195 | + (compose list gnunet-configuration-package)) | ||
196 | + (service-extension setuid-program-service-type | ||
197 | + gnunet-setuid-programs) | ||
198 | + (service-extension shepherd-root-service-type | ||
199 | + gnunet-shepherd-service))))) | ||
200 | + | ||
201 | ;;; networking.scm ends here | ||
202 | -- | ||
203 | 2.11.0 | ||
204 | |||
diff --git a/contrib/services/shepherd/ng0_wip/README b/contrib/services/shepherd/ng0_wip/README deleted file mode 100644 index c36c10959..000000000 --- a/contrib/services/shepherd/ng0_wip/README +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | short notes: | ||
2 | |||
3 | * you are not expected to be able to run this as-is. | ||
4 | * you must keep it GPL3 licensed and NOT license it to GNUnet e.V., | ||
5 | for changes add your line to the header. | ||
6 | * does not apply to a guix checkout, you have to search and replace | ||
7 | the imported modules. in my development of plant, infotropique | ||
8 | services is equivalent to gnu services (same for packages) and plant | ||
9 | XYZ is guix XYZ. | ||
10 | * Understanding is optional. | ||
11 | * Patches come as context reading material. \ No newline at end of file | ||
diff --git a/contrib/services/shepherd/ng0_wip/gnunet.scm b/contrib/services/shepherd/ng0_wip/gnunet.scm deleted file mode 100644 index 80b807e74..000000000 --- a/contrib/services/shepherd/ng0_wip/gnunet.scm +++ /dev/null | |||
@@ -1,173 +0,0 @@ | |||
1 | ;;; plant --- | ||
2 | ;;; Copyright (C) 2016, 2017, 2018 Nils Gillmann <gillmann@infotropique.org> | ||
3 | ;;; | ||
4 | ;;; This file is part of plant. | ||
5 | ;;; | ||
6 | ;;; plant is free software; you can redistribute it and/or modify it | ||
7 | ;;; under the terms of the GNU General Public License as published by | ||
8 | ;;; the Free Software Foundation; either version 3 of the License, or (at | ||
9 | ;;; your option) any later version. | ||
10 | ;;; | ||
11 | ;;; plant is distributed in the hope that it will be useful, but | ||
12 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | ;;; GNU General Public License for more details. | ||
15 | ;;; | ||
16 | ;;; You should have received a copy of thye GNU General Public License | ||
17 | ;;; along with plant. If not, see <http://www.gnu.org/licenses/>. | ||
18 | |||
19 | (define-module (infotropique services networking) | ||
20 | #:use-module (infotropique services) | ||
21 | #:use-module (infotropique services shepherd) | ||
22 | #:use-module (infotropique services dbus) | ||
23 | #:use-module (infotropique system shadow) | ||
24 | #:use-module (infotropique system pam) | ||
25 | #:use-module (infotropique packages admin) | ||
26 | #:use-module (infotropique packages connman) | ||
27 | #:use-module (infotropique packages linux) | ||
28 | #:use-module (infotropique packages tor) | ||
29 | #:use-module (infotropique packages messaging) | ||
30 | #:use-module (infotropique packages networking) | ||
31 | #:use-module (infotropique packages ntp) | ||
32 | #:use-module (infotropique packages wicd) | ||
33 | #:use-module (infotropique packages gnome) | ||
34 | #:use-module (infotropique packages gnunet) | ||
35 | #:use-module (plant gexp) | ||
36 | #:use-module (plant records) | ||
37 | #:use-module (plant modules) | ||
38 | #:use-module (srfi srfi-1) | ||
39 | #:use-module (srfi srfi-9) | ||
40 | #:use-module (srfi srfi-26) | ||
41 | #:use-module (ice-9 match) | ||
42 | #:export (gnunet-configuration | ||
43 | gnunet-configuration? | ||
44 | gnunet-service | ||
45 | gnunet-service-type)) | ||
46 | |||
47 | ;;; | ||
48 | ;;; Commentary: | ||
49 | ;;; gnunet (GNUnet) related services, mainly gnunet itself. | ||
50 | ;;; | ||
51 | |||
52 | ;; GENTOO OpenRC: | ||
53 | DONE: depends on "net". | ||
54 | DONE: PIDFILE=/run/gnunet/arm-service.pid | ||
55 | SUID_ROOT_HELPERS=exit, nat-server, nat-client, transport-bluetooth, transport-wlan, vpn | ||
56 | |||
57 | /var/lib/gnunet/.local/share/gnunet/gnunet.conf must be chmod 600 and chown gnunet:gnunet | ||
58 | /var/lib/gnunet/.cache/gnunet must exist. | ||
59 | /usr/lib/gnunet/libexec/gnunet-helper-SUID_ROOT_HELPERS must be s+u (--> suid) | ||
60 | |||
61 | /usr/lib/gnunet/libexec/gnunet-helper-dns must be: chown root:gnunetdns and chmod 4750 | ||
62 | /usr/lib/gnunet/libexec/gnunet-service-dns must be: chown gnunet:gnunetdns and chmod 2750 | ||
63 | |||
64 | directory with PID file must then be chowned by gnunet:gnunet | ||
65 | |||
66 | user gnunet startet dann /usr/lib/gnunet/libexec/gnunet-service-arm -d | ||
67 | |||
68 | stop process hat: | ||
69 | start-stop-daemon --stop --signal QUIT --pidfile ${PIDFILE} | ||
70 | sleep 1 | ||
71 | killall -u gnunet | ||
72 | sleep 1 | ||
73 | rm -rf /tmp/gnunet-gnunet-runtime >/dev/null 2>&1 | ||
74 | rm -rf /tmp/gnunet-system-runtime >/dev/null 2>&1 | ||
75 | |||
76 | /etc/nsswitch.conf kriegt den eintrag: | ||
77 | hosts: files gns [NOTFOUND=return] dns | ||
78 | |||
79 | und die dateien die in der source rumliegen bzgl nss müssen noch kopiert werden | ||
80 | UND nss muss sie finden. | ||
81 | |||
82 | |||
83 | |||
84 | (define-record-type* <gnunet-configuration> | ||
85 | gnunet-configuration make-gnunet-configuration | ||
86 | gnunet-configuration? | ||
87 | (package gnunet-configuration-package | ||
88 | (default gnunet)) | ||
89 | (config-file gnunet-configuration-config-file | ||
90 | (default %default-gnunet-config-file))) | ||
91 | |||
92 | ;; TODO: [PATHS] DEFAULTCONFIG = ? | ||
93 | (define %default-gnunet-config-file | ||
94 | (plain-file "gnunet.conf" " | ||
95 | [PATHS] | ||
96 | SERVICEHOME = /var/lib/gnunet | ||
97 | GNUNET_CONFIG_HOME = /var/lib/gnunet | ||
98 | |||
99 | [arm] | ||
100 | SYSTEM_ONLY = YES | ||
101 | USER_ONLY = NO | ||
102 | |||
103 | [nat] | ||
104 | BEHIND_NAT = YES | ||
105 | ENABLE_UPNP = NO | ||
106 | USE_LOCALADDR = NO | ||
107 | DISABLEV6 = YES | ||
108 | |||
109 | [hostlist] | ||
110 | OPTIONS = -b -e | ||
111 | ")) | ||
112 | |||
113 | (define gnunet-shepherd-service | ||
114 | (match-lambda | ||
115 | (($ <gnunet-configuration> package config-file) | ||
116 | (list (shepherd-service | ||
117 | (provision '(gnunet)) | ||
118 | ;; do we require networking? arm will try to reconnect until a connection | ||
119 | ;; exists (again), but we might also set up vpn and not succeed at service | ||
120 | ;; boot time as well as the general certificate issue we have especially on | ||
121 | ;; Guix-on-GuixSD systems. | ||
122 | (requirement '(loopback)) | ||
123 | (documentation "Run the GNUnet service.") | ||
124 | (start | ||
125 | (let ((gnunet | ||
126 | (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) | ||
127 | #~(make-forkexec-constructor | ||
128 | (list #$gnunet "-c" #$config-file) | ||
129 | #:log-file "/var/log/gnunet.log" | ||
130 | #:pid-file "/var/run/gnunet/arm-service.pid"))) | ||
131 | (stop | ||
132 | #~(make-kill-destructor))))))) | ||
133 | |||
134 | (define %gnunet-accounts | ||
135 | (list (user-group | ||
136 | (name "gnunetdns") | ||
137 | (system? #t)) | ||
138 | (user-group | ||
139 | (name "gnunet") | ||
140 | (system? #t)) | ||
141 | (user-account | ||
142 | (name "gnunet") | ||
143 | (group "gnunet") | ||
144 | (system? #t) | ||
145 | (comment "GNUnet system user") | ||
146 | (home-directory "/var/lib/gnunet") | ||
147 | (shell #~(string-append #$shadow "/sbin/nologin"))))) | ||
148 | |||
149 | ;; TODO: setuids. | ||
150 | ;; TODO: certificate issues -- gnunet should honor CURL_CA_BUNDLE! | ||
151 | (define gnunet-activation | ||
152 | (match-lambda | ||
153 | (($ <gnunet-configuration> package config-file) | ||
154 | (let ((gnunet | ||
155 | (file-append package "/lib/gnunet/libexec/gnunet-service-arm"))) | ||
156 | #~(begin | ||
157 | ;; Create the .config + .cache for gnunet user | ||
158 | (mkdir-p "/var/lib/gnunet/.config/gnunet") | ||
159 | (mkdir-p "/var/lib/gnunet/.cache/gnunet")))))) | ||
160 | |||
161 | (define gnunet-service-type | ||
162 | (service-type | ||
163 | (name 'gnunet) | ||
164 | (extensions (list (service-extension account-service-type | ||
165 | (const %gnunet-accounts)) | ||
166 | (service-extension activation-service-type | ||
167 | gnunet-activation) | ||
168 | (service-extension profile-service-type | ||
169 | (compose list gnunet-configuration-package)) | ||
170 | (service-extension shepherd-root-service-type | ||
171 | gnunet-shepherd-service))))) | ||
172 | |||
173 | ;;; gnunet.scm ends here | ||
diff --git a/contrib/services/shepherd/ng0_wip/janneke-os-modified.scm b/contrib/services/shepherd/ng0_wip/janneke-os-modified.scm deleted file mode 100644 index d75d14598..000000000 --- a/contrib/services/shepherd/ng0_wip/janneke-os-modified.scm +++ /dev/null | |||
@@ -1,62 +0,0 @@ | |||
1 | (use-modules (gnu)) | ||
2 | (use-service-modules | ||
3 | ;; admin | ||
4 | base | ||
5 | mcron | ||
6 | networking | ||
7 | ssh) | ||
8 | |||
9 | (use-package-modules | ||
10 | admin | ||
11 | ssh | ||
12 | version-control | ||
13 | gnunet) | ||
14 | |||
15 | (define %user (getenv "USER")) | ||
16 | |||
17 | (define os | ||
18 | (operating-system | ||
19 | (host-name "os") | ||
20 | (timezone "Europe/Amsterdam") | ||
21 | (locale "en_US.UTF-8") | ||
22 | |||
23 | (bootloader | ||
24 | (grub-configuration | ||
25 | (device "/dev/sda"))) | ||
26 | |||
27 | (file-systems | ||
28 | (cons* (file-system (mount-point "/") | ||
29 | (device "/dev/sda1") | ||
30 | (type "ext4")) | ||
31 | %base-file-systems)) | ||
32 | |||
33 | (groups | ||
34 | (cons* (user-group (name %user)) | ||
35 | %base-groups)) | ||
36 | |||
37 | (users | ||
38 | (cons* (user-account (name %user) | ||
39 | (group %user) | ||
40 | (password (crypt "" "xx")) | ||
41 | (uid 1000) | ||
42 | (supplementary-groups '("wheel" "gnunet")) | ||
43 | (home-directory (string-append "/home/" %user))) | ||
44 | %base-user-accounts)) | ||
45 | |||
46 | (packages | ||
47 | (cons* | ||
48 | git | ||
49 | openssh | ||
50 | gnunet | ||
51 | %base-packages)) | ||
52 | |||
53 | (services | ||
54 | (cons* | ||
55 | (dhcp-client-service) | ||
56 | (lsh-service #:port-number 2222 | ||
57 | #:allow-empty-passwords? #t | ||
58 | #:root-login? #t) | ||
59 | (gnunet-service) | ||
60 | %base-services | ||
61 | )))) | ||
62 | os | ||
diff --git a/contrib/timeout_watchdog.c b/contrib/timeout_watchdog.c deleted file mode 100644 index 70e840d55..000000000 --- a/contrib/timeout_watchdog.c +++ /dev/null | |||
@@ -1,116 +0,0 @@ | |||
1 | /* | ||
2 | This file is part of GNUnet | ||
3 | Copyright (C) 2010 GNUnet e.V. | ||
4 | |||
5 | GNUnet is free software: you can redistribute it and/or modify it | ||
6 | under the terms of the GNU Affero General Public License as published | ||
7 | by the Free Software Foundation, either version 3 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | GNUnet is distributed in the hope that it will be useful, but | ||
11 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | Affero General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU Affero General Public License | ||
16 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
17 | */ | ||
18 | |||
19 | /** | ||
20 | * @file contrib/timeout_watchdog.c | ||
21 | * @brief small tool starting a child process, waiting that it terminates or killing it after a given timeout period | ||
22 | * @author Matthias Wachs | ||
23 | */ | ||
24 | |||
25 | #include <sys/types.h> | ||
26 | #include <sys/wait.h> | ||
27 | #include <signal.h> | ||
28 | #include <stdio.h> | ||
29 | #include <stdlib.h> | ||
30 | #include <unistd.h> | ||
31 | |||
32 | static pid_t child; | ||
33 | |||
34 | |||
35 | static void | ||
36 | sigchld_handler (int val) | ||
37 | { | ||
38 | int status = 0; | ||
39 | int ret = 0; | ||
40 | |||
41 | (void) val; | ||
42 | waitpid (child, &status, 0); | ||
43 | if (WIFEXITED (status) != 0) | ||
44 | { | ||
45 | ret = WEXITSTATUS (status); | ||
46 | printf ("Test process exited with result %u\n", ret); | ||
47 | } | ||
48 | if (WIFSIGNALED (status) != 0) | ||
49 | { | ||
50 | ret = WTERMSIG (status); | ||
51 | printf ("Test process was signaled %u\n", ret); | ||
52 | } | ||
53 | exit (ret); | ||
54 | } | ||
55 | |||
56 | |||
57 | static void | ||
58 | sigint_handler (int val) | ||
59 | { | ||
60 | kill (0, val); | ||
61 | exit (val); | ||
62 | } | ||
63 | |||
64 | |||
65 | int | ||
66 | main (int argc, | ||
67 | char *argv[]) | ||
68 | { | ||
69 | int timeout = 0; | ||
70 | pid_t gpid = 0; | ||
71 | |||
72 | if (argc < 3) | ||
73 | { | ||
74 | printf | ||
75 | ("arg 1: timeout in sec., arg 2: executable, arg<n> arguments\n"); | ||
76 | exit (1); | ||
77 | } | ||
78 | |||
79 | timeout = atoi (argv[1]); | ||
80 | |||
81 | if (timeout == 0) | ||
82 | timeout = 600; | ||
83 | |||
84 | /* with getpgid() it does not compile, but getpgrp is the BSD version and working */ | ||
85 | gpid = getpgrp (); | ||
86 | |||
87 | signal (SIGCHLD, sigchld_handler); | ||
88 | signal (SIGABRT, sigint_handler); | ||
89 | signal (SIGFPE, sigint_handler); | ||
90 | signal (SIGILL, sigint_handler); | ||
91 | signal (SIGINT, sigint_handler); | ||
92 | signal (SIGSEGV, sigint_handler); | ||
93 | signal (SIGTERM, sigint_handler); | ||
94 | |||
95 | child = fork (); | ||
96 | if (child == 0) | ||
97 | { | ||
98 | /* int setpgrp(pid_t pid, pid_t pgid); is not working on this machine */ | ||
99 | //setpgrp (0, pid_t gpid); | ||
100 | if (-1 != gpid) | ||
101 | setpgid (0, gpid); | ||
102 | execvp (argv[2], &argv[2]); | ||
103 | exit (1); | ||
104 | } | ||
105 | if (child > 0) | ||
106 | { | ||
107 | sleep (timeout); | ||
108 | printf ("Child processes were killed after timeout of %u seconds\n", | ||
109 | timeout); | ||
110 | kill (0, SIGTERM); | ||
111 | exit (1); | ||
112 | } | ||
113 | exit (1); | ||
114 | } | ||
115 | |||
116 | /* end of timeout_watchdog.c */ | ||
diff --git a/contrib/timeout_watchdog_w32.c b/contrib/timeout_watchdog_w32.c deleted file mode 100644 index 901eb6207..000000000 --- a/contrib/timeout_watchdog_w32.c +++ /dev/null | |||
@@ -1,191 +0,0 @@ | |||
1 | /* | ||
2 | This file is part of GNUnet | ||
3 | Copyright (C) 2010 GNUnet e.V. | ||
4 | |||
5 | GNUnet is free software: you can redistribute it and/or modify it | ||
6 | under the terms of the GNU Affero General Public License as published | ||
7 | by the Free Software Foundation, either version 3 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | GNUnet is distributed in the hope that it will be useful, but | ||
11 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | Affero General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU Affero General Public License | ||
16 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
17 | */ | ||
18 | |||
19 | /** | ||
20 | * @file contrib/timeout_watchdog_w32.c | ||
21 | * @brief small tool starting a child process, waiting that it terminates or killing it after a given timeout period | ||
22 | * @author LRN | ||
23 | */ | ||
24 | |||
25 | #include <windows.h> | ||
26 | #include <sys/types.h> | ||
27 | #include <stdio.h> | ||
28 | |||
29 | int | ||
30 | main (int argc, char *argv[]) | ||
31 | { | ||
32 | int i; | ||
33 | DWORD wait_result; | ||
34 | wchar_t *commandline; | ||
35 | wchar_t **wargv; | ||
36 | wchar_t *arg; | ||
37 | unsigned int cmdlen; | ||
38 | STARTUPINFOW start; | ||
39 | PROCESS_INFORMATION proc; | ||
40 | |||
41 | wchar_t wpath[MAX_PATH + 1]; | ||
42 | |||
43 | wchar_t *pathbuf; | ||
44 | DWORD pathbuf_len, alloc_len; | ||
45 | wchar_t *ptr; | ||
46 | wchar_t *non_const_filename; | ||
47 | wchar_t *wcmd; | ||
48 | int wargc; | ||
49 | int timeout = 0; | ||
50 | ssize_t wrote; | ||
51 | |||
52 | HANDLE job; | ||
53 | |||
54 | if (argc < 3) | ||
55 | { | ||
56 | printf | ||
57 | ("arg 1: timeout in sec., arg 2: executable, arg<n> arguments\n"); | ||
58 | exit (1); | ||
59 | } | ||
60 | |||
61 | timeout = atoi (argv[1]); | ||
62 | |||
63 | if (timeout == 0) | ||
64 | timeout = 600; | ||
65 | |||
66 | commandline = GetCommandLineW (); | ||
67 | if (commandline == NULL) | ||
68 | { | ||
69 | printf ("Failed to get commandline: %lu\n", GetLastError ()); | ||
70 | exit (2); | ||
71 | } | ||
72 | |||
73 | wargv = CommandLineToArgvW (commandline, &wargc); | ||
74 | if (wargv == NULL || wargc <= 1) | ||
75 | { | ||
76 | printf ("Failed to get parse commandline: %lu\n", GetLastError ()); | ||
77 | exit (3); | ||
78 | } | ||
79 | |||
80 | job = CreateJobObject (NULL, NULL); | ||
81 | if (job == NULL) | ||
82 | { | ||
83 | printf ("Failed to create a job: %lu\n", GetLastError ()); | ||
84 | exit (4); | ||
85 | } | ||
86 | |||
87 | pathbuf_len = GetEnvironmentVariableW (L"PATH", (wchar_t *) &pathbuf, 0); | ||
88 | |||
89 | alloc_len = pathbuf_len + 1; | ||
90 | |||
91 | pathbuf = malloc (alloc_len * sizeof (wchar_t)); | ||
92 | |||
93 | ptr = pathbuf; | ||
94 | |||
95 | alloc_len = GetEnvironmentVariableW (L"PATH", ptr, pathbuf_len); | ||
96 | |||
97 | cmdlen = wcslen (wargv[2]); | ||
98 | if (cmdlen < 5 || wcscmp (&wargv[2][cmdlen - 4], L".exe") != 0) | ||
99 | { | ||
100 | non_const_filename = malloc (sizeof (wchar_t) * (cmdlen + 5)); | ||
101 | swprintf (non_const_filename, cmdlen + 5, L"%S.exe", wargv[2]); | ||
102 | } | ||
103 | else | ||
104 | { | ||
105 | non_const_filename = wcsdup (wargv[2]); | ||
106 | } | ||
107 | |||
108 | /* Check that this is the full path. If it isn't, search. */ | ||
109 | if (non_const_filename[1] == L':') | ||
110 | swprintf (wpath, sizeof (wpath) / sizeof (wchar_t), L"%S", non_const_filename); | ||
111 | else if (!SearchPathW | ||
112 | (pathbuf, non_const_filename, NULL, sizeof (wpath) / sizeof (wchar_t), | ||
113 | wpath, NULL)) | ||
114 | { | ||
115 | printf ("Failed to get find executable: %lu\n", GetLastError ()); | ||
116 | exit (5); | ||
117 | } | ||
118 | free (pathbuf); | ||
119 | free (non_const_filename); | ||
120 | |||
121 | cmdlen = wcslen (wpath) + 4; | ||
122 | i = 3; | ||
123 | while (NULL != (arg = wargv[i++])) | ||
124 | cmdlen += wcslen (arg) + 4; | ||
125 | |||
126 | wcmd = malloc (sizeof (wchar_t) * (cmdlen + 1)); | ||
127 | wrote = 0; | ||
128 | i = 2; | ||
129 | while (NULL != (arg = wargv[i++])) | ||
130 | { | ||
131 | /* This is to escape trailing slash */ | ||
132 | wchar_t arg_lastchar = arg[wcslen (arg) - 1]; | ||
133 | if (wrote == 0) | ||
134 | { | ||
135 | wrote += swprintf (&wcmd[wrote], cmdlen + 1 - wrote, L"\"%S%S\" ", wpath, | ||
136 | arg_lastchar == L'\\' ? L"\\" : L""); | ||
137 | } | ||
138 | else | ||
139 | { | ||
140 | if (wcschr (arg, L' ') != NULL) | ||
141 | wrote += swprintf (&wcmd[wrote], cmdlen + 1 - wrote, L"\"%S%S\"%S", arg, | ||
142 | arg_lastchar == L'\\' ? L"\\" : L"", i == wargc ? L"" : L" "); | ||
143 | else | ||
144 | wrote += swprintf (&wcmd[wrote], cmdlen + 1 - wrote, L"%S%S%S", arg, | ||
145 | arg_lastchar == L'\\' ? L"\\" : L"", i == wargc ? L"" : L" "); | ||
146 | } | ||
147 | } | ||
148 | |||
149 | LocalFree (wargv); | ||
150 | |||
151 | memset (&start, 0, sizeof (start)); | ||
152 | start.cb = sizeof (start); | ||
153 | |||
154 | if (!CreateProcessW (wpath, wcmd, NULL, NULL, TRUE, CREATE_SUSPENDED, | ||
155 | NULL, NULL, &start, &proc)) | ||
156 | { | ||
157 | wprintf (L"Failed to get spawn process `%S' with arguments `%S': %lu\n", wpath, wcmd, GetLastError ()); | ||
158 | exit (6); | ||
159 | } | ||
160 | |||
161 | AssignProcessToJobObject (job, proc.hProcess); | ||
162 | |||
163 | ResumeThread (proc.hThread); | ||
164 | CloseHandle (proc.hThread); | ||
165 | |||
166 | free (wcmd); | ||
167 | |||
168 | wait_result = WaitForSingleObject (proc.hProcess, timeout * 1000); | ||
169 | if (wait_result == WAIT_OBJECT_0) | ||
170 | { | ||
171 | DWORD status; | ||
172 | wait_result = GetExitCodeProcess (proc.hProcess, &status); | ||
173 | CloseHandle (proc.hProcess); | ||
174 | if (wait_result != 0) | ||
175 | { | ||
176 | printf ("Test process exited with result %lu\n", status); | ||
177 | TerminateJobObject (job, status); | ||
178 | exit (status); | ||
179 | } | ||
180 | printf ("Test process exited (failed to obtain exit status)\n"); | ||
181 | TerminateJobObject (job, 0); | ||
182 | exit (0); | ||
183 | } | ||
184 | printf ("Child processes were killed after timeout of %u seconds\n", | ||
185 | timeout); | ||
186 | TerminateJobObject (job, 1); | ||
187 | CloseHandle (proc.hProcess); | ||
188 | exit (1); | ||
189 | } | ||
190 | |||
191 | /* end of timeout_watchdog_w32.c */ | ||