mirror of
https://github.com/ocaml-multicore/eio.git
synced 2025-07-31 00:01:26 -04:00
Compare commits
5 Commits
b68d396787
...
0776a7d60a
Author | SHA1 | Date | |
---|---|---|---|
|
0776a7d60a | ||
|
4a91a679e1 | ||
|
d9a7e20a2b | ||
|
41e6e46cf4 | ||
|
80dd943f80 |
71
README.md
71
README.md
@ -220,70 +220,30 @@ Calling an operation that performs an effect (such as `yield`) can switch to a d
|
||||
When OCaml's tracing is turned on, Eio writes events about many actions,
|
||||
such as creating fibers or resolving promises.
|
||||
|
||||
[examples/trace](./examples/trace/) shows how to consume the events manually:
|
||||
You can use [eio-trace][] to capture a trace and display it in a window.
|
||||
For example, this is a trace of the counting example above:
|
||||
|
||||
<!-- $MDX skip -->
|
||||
```sh
|
||||
$ dune exec -- ./examples/trace/main.exe
|
||||
+tracer: starting
|
||||
30926487700447:ring 0: create fiber 0
|
||||
30926487702032:ring 0: running fiber 0
|
||||
30926487705057:ring 0: create switch 1
|
||||
30926487707264:ring 0: create fiber 2
|
||||
30926487707512:ring 0: running fiber 2
|
||||
30926487720213:ring 0: log "tracer: starting"
|
||||
+server: starting
|
||||
+client: connecting socket...
|
||||
+server: got connection from client
|
||||
+server: read "Hello" from socket
|
||||
30926487769298:ring 0: running fiber 0
|
||||
30926487769877:ring 0: create fiber 3
|
||||
30926487770083:ring 0: running fiber 3
|
||||
30926487771198:ring 0: create switch 4
|
||||
30926487807888:ring 0: create switch 5
|
||||
30926487808329:ring 0: create fiber 6
|
||||
30926487808555:ring 0: running fiber 6
|
||||
30926487812219:ring 0: log "server: starting"
|
||||
30926487818883:ring 0: running fiber 3
|
||||
30926487819091:ring 0: create fiber 7
|
||||
30926487819155:ring 0: running fiber 7
|
||||
30926487822428:ring 0: log "client: connecting socket..."
|
||||
30926487901604:ring 0: running fiber 3
|
||||
30926487904947:ring 0: running fiber 0
|
||||
30926487907318:ring 0: running fiber 6
|
||||
30926487917202:ring 0: log "server: got connection from client"
|
||||
30926487929993:ring 0: running fiber 6
|
||||
30926487941403:ring 0: running fiber 7
|
||||
30926487948000:ring 0: running fiber 7
|
||||
30926487971898:ring 0: resolve 7
|
||||
30926487974810:ring 0: running fiber 6
|
||||
30926487975215:ring 0: running fiber 6
|
||||
30926487977869:ring 0: running fiber 6
|
||||
30926487984514:ring 0: log "server: read \"Hello\" from socket"
|
||||
30926487990785:ring 0: resolve 6
|
||||
30926487991752:ring 0: running fiber 3
|
||||
30926488022310:ring 0: resolve 3
|
||||
30926497839725:ring 0: running fiber 2
|
||||
+tracer: stopping
|
||||
```
|
||||
dune build ./examples
|
||||
eio-trace run -- ./_build/default/examples/both/main.exe
|
||||
```
|
||||
|
||||
Note that the output from `traceln` appears in the trace as well as on the console.
|
||||
<p align='center'>
|
||||
<img src="./doc/traces/both-posix.svg"/>
|
||||
</p>
|
||||
|
||||
There are various third-party tools that can consume this data
|
||||
The upper horizontal bar is the initial fiber, and the brackets show `Fiber.both` creating a second fiber.
|
||||
The green segments show when each fiber is running.
|
||||
Note that the output from `traceln` appears in the trace as well as on the console.
|
||||
In the eio-trace window, scrolling with the mouse or touchpad will zoom in or out of the diagram.
|
||||
|
||||
There are various third-party tools that can also consume this data
|
||||
(but may currently require patches to support the new system):
|
||||
|
||||
- [Meio][] (Monitoring for Eio) provides an interactive console-based UI for exploring running fibers.
|
||||
- [Olly][] can save Perfetto traces and report statistics.
|
||||
- [mirage-trace-viewer][] renders traces visually.
|
||||
|
||||
For example, this is how mirage-trace-viewer renders the counting example above:
|
||||
|
||||
<p align='center'>
|
||||
<img src="./doc/trace.svg"/>
|
||||
</p>
|
||||
|
||||
This shows the two counting threads as two horizonal lines.
|
||||
The white regions indicate when each thread was running.
|
||||
[examples/trace](./examples/trace/) shows how to consume the events manually.
|
||||
|
||||
## Cancellation
|
||||
|
||||
@ -1893,3 +1853,4 @@ Some background about the effects system can be found in:
|
||||
[Eio.Process]: https://ocaml-multicore.github.io/eio/eio/Eio/Process/index.html
|
||||
[Dev meetings]: https://docs.google.com/document/d/1ZBfbjAkvEkv9ldumpZV5VXrEc_HpPeYjHPW_TiwJe4Q
|
||||
[Olly]: https://github.com/tarides/runtime_events_tools
|
||||
[eio-trace]: https://github.com/ocaml-multicore/eio-trace
|
||||
|
223
doc/trace.svg
223
doc/trace.svg
@ -1,223 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="580pt" height="132pt" viewBox="0 0 580 132" version="1.1">
|
||||
<defs>
|
||||
<g>
|
||||
<symbol overflow="visible" id="glyph0-0">
|
||||
<path style="stroke:none;" d="M 0.59375 2.125 L 0.59375 -8.46875 L 6.59375 -8.46875 L 6.59375 2.125 Z M 1.265625 1.453125 L 5.9375 1.453125 L 5.9375 -7.78125 L 1.265625 -7.78125 Z M 1.265625 1.453125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-1">
|
||||
<path style="stroke:none;" d="M 1.171875 -8.75 L 6.703125 -8.75 L 6.703125 -7.75 L 2.359375 -7.75 L 2.359375 -5.15625 L 6.53125 -5.15625 L 6.53125 -4.171875 L 2.359375 -4.171875 L 2.359375 -1 L 6.8125 -1 L 6.8125 0 L 1.171875 0 Z M 1.171875 -8.75 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-2">
|
||||
<path style="stroke:none;" d="M 4.109375 -3.296875 C 3.242188 -3.296875 2.640625 -3.195312 2.296875 -3 C 1.960938 -2.800781 1.796875 -2.460938 1.796875 -1.984375 C 1.796875 -1.597656 1.921875 -1.289062 2.171875 -1.0625 C 2.429688 -0.84375 2.773438 -0.734375 3.203125 -0.734375 C 3.804688 -0.734375 4.285156 -0.941406 4.640625 -1.359375 C 5.003906 -1.785156 5.1875 -2.351562 5.1875 -3.0625 L 5.1875 -3.296875 Z M 6.265625 -3.75 L 6.265625 0 L 5.1875 0 L 5.1875 -1 C 4.9375 -0.601562 4.628906 -0.304688 4.265625 -0.109375 C 3.898438 0.078125 3.453125 0.171875 2.921875 0.171875 C 2.242188 0.171875 1.707031 -0.015625 1.3125 -0.390625 C 0.914062 -0.773438 0.71875 -1.28125 0.71875 -1.90625 C 0.71875 -2.644531 0.960938 -3.203125 1.453125 -3.578125 C 1.953125 -3.953125 2.691406 -4.140625 3.671875 -4.140625 L 5.1875 -4.140625 L 5.1875 -4.25 C 5.1875 -4.75 5.019531 -5.132812 4.6875 -5.40625 C 4.363281 -5.675781 3.910156 -5.8125 3.328125 -5.8125 C 2.953125 -5.8125 2.582031 -5.765625 2.21875 -5.671875 C 1.863281 -5.578125 1.523438 -5.441406 1.203125 -5.265625 L 1.203125 -6.265625 C 1.597656 -6.421875 1.976562 -6.535156 2.34375 -6.609375 C 2.71875 -6.679688 3.082031 -6.71875 3.4375 -6.71875 C 4.382812 -6.71875 5.09375 -6.472656 5.5625 -5.984375 C 6.03125 -5.492188 6.265625 -4.75 6.265625 -3.75 Z M 6.265625 -3.75 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-3">
|
||||
<path style="stroke:none;" d="M 5.859375 -6.3125 L 5.859375 -5.296875 C 5.546875 -5.472656 5.238281 -5.601562 4.9375 -5.6875 C 4.632812 -5.769531 4.328125 -5.8125 4.015625 -5.8125 C 3.304688 -5.8125 2.757812 -5.585938 2.375 -5.140625 C 1.988281 -4.703125 1.796875 -4.082031 1.796875 -3.28125 C 1.796875 -2.476562 1.988281 -1.851562 2.375 -1.40625 C 2.757812 -0.96875 3.304688 -0.75 4.015625 -0.75 C 4.328125 -0.75 4.632812 -0.789062 4.9375 -0.875 C 5.238281 -0.957031 5.546875 -1.082031 5.859375 -1.25 L 5.859375 -0.25 C 5.554688 -0.113281 5.242188 -0.0078125 4.921875 0.0625 C 4.597656 0.132812 4.253906 0.171875 3.890625 0.171875 C 2.898438 0.171875 2.113281 -0.132812 1.53125 -0.75 C 0.945312 -1.375 0.65625 -2.21875 0.65625 -3.28125 C 0.65625 -4.34375 0.945312 -5.179688 1.53125 -5.796875 C 2.125 -6.410156 2.9375 -6.71875 3.96875 -6.71875 C 4.289062 -6.71875 4.609375 -6.679688 4.921875 -6.609375 C 5.242188 -6.546875 5.554688 -6.445312 5.859375 -6.3125 Z M 5.859375 -6.3125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-4">
|
||||
<path style="stroke:none;" d="M 6.59375 -3.96875 L 6.59375 0 L 5.515625 0 L 5.515625 -3.921875 C 5.515625 -4.546875 5.390625 -5.007812 5.140625 -5.3125 C 4.898438 -5.625 4.539062 -5.78125 4.0625 -5.78125 C 3.476562 -5.78125 3.015625 -5.59375 2.671875 -5.21875 C 2.335938 -4.851562 2.171875 -4.347656 2.171875 -3.703125 L 2.171875 0 L 1.09375 0 L 1.09375 -9.125 L 2.171875 -9.125 L 2.171875 -5.546875 C 2.429688 -5.941406 2.734375 -6.234375 3.078125 -6.421875 C 3.429688 -6.617188 3.835938 -6.71875 4.296875 -6.71875 C 5.046875 -6.71875 5.613281 -6.484375 6 -6.015625 C 6.394531 -5.554688 6.59375 -4.875 6.59375 -3.96875 Z M 6.59375 -3.96875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-5">
|
||||
<path style="stroke:none;" d=""/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-6">
|
||||
<path style="stroke:none;" d="M 5.453125 -3.359375 C 5.453125 -4.140625 5.289062 -4.742188 4.96875 -5.171875 C 4.644531 -5.597656 4.191406 -5.8125 3.609375 -5.8125 C 3.035156 -5.8125 2.585938 -5.597656 2.265625 -5.171875 C 1.941406 -4.742188 1.78125 -4.140625 1.78125 -3.359375 C 1.78125 -2.578125 1.941406 -1.972656 2.265625 -1.546875 C 2.585938 -1.117188 3.035156 -0.90625 3.609375 -0.90625 C 4.191406 -0.90625 4.644531 -1.117188 4.96875 -1.546875 C 5.289062 -1.972656 5.453125 -2.578125 5.453125 -3.359375 Z M 6.53125 -0.8125 C 6.53125 0.300781 6.28125 1.128906 5.78125 1.671875 C 5.289062 2.222656 4.53125 2.5 3.5 2.5 C 3.125 2.5 2.765625 2.46875 2.421875 2.40625 C 2.085938 2.351562 1.765625 2.269531 1.453125 2.15625 L 1.453125 1.109375 C 1.765625 1.273438 2.078125 1.398438 2.390625 1.484375 C 2.703125 1.566406 3.015625 1.609375 3.328125 1.609375 C 4.035156 1.609375 4.566406 1.421875 4.921875 1.046875 C 5.273438 0.679688 5.453125 0.125 5.453125 -0.625 L 5.453125 -1.15625 C 5.222656 -0.769531 4.9375 -0.476562 4.59375 -0.28125 C 4.25 -0.09375 3.832031 0 3.34375 0 C 2.539062 0 1.890625 -0.304688 1.390625 -0.921875 C 0.898438 -1.535156 0.65625 -2.347656 0.65625 -3.359375 C 0.65625 -4.367188 0.898438 -5.179688 1.390625 -5.796875 C 1.890625 -6.410156 2.539062 -6.71875 3.34375 -6.71875 C 3.832031 -6.71875 4.25 -6.617188 4.59375 -6.421875 C 4.9375 -6.234375 5.222656 -5.945312 5.453125 -5.5625 L 5.453125 -6.5625 L 6.53125 -6.5625 Z M 6.53125 -0.8125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-7">
|
||||
<path style="stroke:none;" d="M 4.9375 -5.5625 C 4.8125 -5.625 4.675781 -5.671875 4.53125 -5.703125 C 4.394531 -5.742188 4.238281 -5.765625 4.0625 -5.765625 C 3.457031 -5.765625 2.988281 -5.566406 2.65625 -5.171875 C 2.332031 -4.773438 2.171875 -4.203125 2.171875 -3.453125 L 2.171875 0 L 1.09375 0 L 1.09375 -6.5625 L 2.171875 -6.5625 L 2.171875 -5.546875 C 2.398438 -5.941406 2.695312 -6.234375 3.0625 -6.421875 C 3.425781 -6.617188 3.867188 -6.71875 4.390625 -6.71875 C 4.460938 -6.71875 4.539062 -6.710938 4.625 -6.703125 C 4.71875 -6.691406 4.816406 -6.675781 4.921875 -6.65625 Z M 4.9375 -5.5625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-8">
|
||||
<path style="stroke:none;" d="M 1.125 -6.5625 L 2.203125 -6.5625 L 2.203125 0 L 1.125 0 Z M 1.125 -9.125 L 2.203125 -9.125 L 2.203125 -7.75 L 1.125 -7.75 Z M 1.125 -9.125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-9">
|
||||
<path style="stroke:none;" d="M 5.453125 -5.5625 L 5.453125 -9.125 L 6.53125 -9.125 L 6.53125 0 L 5.453125 0 L 5.453125 -0.984375 C 5.222656 -0.597656 4.9375 -0.304688 4.59375 -0.109375 C 4.25 0.078125 3.832031 0.171875 3.34375 0.171875 C 2.550781 0.171875 1.90625 -0.144531 1.40625 -0.78125 C 0.90625 -1.414062 0.65625 -2.25 0.65625 -3.28125 C 0.65625 -4.3125 0.90625 -5.140625 1.40625 -5.765625 C 1.90625 -6.398438 2.550781 -6.71875 3.34375 -6.71875 C 3.832031 -6.71875 4.25 -6.625 4.59375 -6.4375 C 4.9375 -6.25 5.222656 -5.957031 5.453125 -5.5625 Z M 1.78125 -3.28125 C 1.78125 -2.488281 1.941406 -1.863281 2.265625 -1.40625 C 2.585938 -0.957031 3.035156 -0.734375 3.609375 -0.734375 C 4.179688 -0.734375 4.628906 -0.957031 4.953125 -1.40625 C 5.285156 -1.863281 5.453125 -2.488281 5.453125 -3.28125 C 5.453125 -4.070312 5.285156 -4.691406 4.953125 -5.140625 C 4.628906 -5.585938 4.179688 -5.8125 3.609375 -5.8125 C 3.035156 -5.8125 2.585938 -5.585938 2.265625 -5.140625 C 1.941406 -4.691406 1.78125 -4.070312 1.78125 -3.28125 Z M 1.78125 -3.28125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-10">
|
||||
<path style="stroke:none;" d="M 0.359375 -6.5625 L 1.5 -6.5625 L 3.546875 -1.0625 L 5.609375 -6.5625 L 6.75 -6.5625 L 4.28125 0 L 2.8125 0 Z M 0.359375 -6.5625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-11">
|
||||
<path style="stroke:none;" d="M 5.3125 -6.375 L 5.3125 -5.34375 C 5.007812 -5.5 4.691406 -5.613281 4.359375 -5.6875 C 4.035156 -5.769531 3.695312 -5.8125 3.34375 -5.8125 C 2.8125 -5.8125 2.410156 -5.726562 2.140625 -5.5625 C 1.867188 -5.40625 1.734375 -5.160156 1.734375 -4.828125 C 1.734375 -4.578125 1.828125 -4.378906 2.015625 -4.234375 C 2.210938 -4.097656 2.601562 -3.96875 3.1875 -3.84375 L 3.546875 -3.75 C 4.316406 -3.59375 4.863281 -3.363281 5.1875 -3.0625 C 5.507812 -2.757812 5.671875 -2.34375 5.671875 -1.8125 C 5.671875 -1.195312 5.425781 -0.710938 4.9375 -0.359375 C 4.457031 -0.00390625 3.796875 0.171875 2.953125 0.171875 C 2.597656 0.171875 2.226562 0.132812 1.84375 0.0625 C 1.46875 0 1.070312 -0.0976562 0.65625 -0.234375 L 0.65625 -1.359375 C 1.050781 -1.148438 1.441406 -0.992188 1.828125 -0.890625 C 2.210938 -0.785156 2.597656 -0.734375 2.984375 -0.734375 C 3.484375 -0.734375 3.867188 -0.816406 4.140625 -0.984375 C 4.421875 -1.160156 4.5625 -1.410156 4.5625 -1.734375 C 4.5625 -2.023438 4.460938 -2.25 4.265625 -2.40625 C 4.066406 -2.5625 3.632812 -2.710938 2.96875 -2.859375 L 2.59375 -2.9375 C 1.925781 -3.082031 1.441406 -3.300781 1.140625 -3.59375 C 0.847656 -3.882812 0.703125 -4.28125 0.703125 -4.78125 C 0.703125 -5.40625 0.921875 -5.882812 1.359375 -6.21875 C 1.796875 -6.550781 2.414062 -6.71875 3.21875 -6.71875 C 3.613281 -6.71875 3.988281 -6.6875 4.34375 -6.625 C 4.695312 -6.570312 5.019531 -6.488281 5.3125 -6.375 Z M 5.3125 -6.375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-12">
|
||||
<path style="stroke:none;" d="M 3.671875 -5.8125 C 3.097656 -5.8125 2.640625 -5.582031 2.296875 -5.125 C 1.960938 -4.675781 1.796875 -4.0625 1.796875 -3.28125 C 1.796875 -2.488281 1.960938 -1.867188 2.296875 -1.421875 C 2.628906 -0.972656 3.085938 -0.75 3.671875 -0.75 C 4.242188 -0.75 4.695312 -0.972656 5.03125 -1.421875 C 5.375 -1.878906 5.546875 -2.5 5.546875 -3.28125 C 5.546875 -4.050781 5.375 -4.664062 5.03125 -5.125 C 4.695312 -5.582031 4.242188 -5.8125 3.671875 -5.8125 Z M 3.671875 -6.71875 C 4.609375 -6.71875 5.34375 -6.410156 5.875 -5.796875 C 6.414062 -5.191406 6.6875 -4.351562 6.6875 -3.28125 C 6.6875 -2.207031 6.414062 -1.363281 5.875 -0.75 C 5.34375 -0.132812 4.609375 0.171875 3.671875 0.171875 C 2.734375 0.171875 1.992188 -0.132812 1.453125 -0.75 C 0.921875 -1.363281 0.65625 -2.207031 0.65625 -3.28125 C 0.65625 -4.351562 0.921875 -5.191406 1.453125 -5.796875 C 1.992188 -6.410156 2.734375 -6.71875 3.671875 -6.71875 Z M 3.671875 -6.71875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-13">
|
||||
<path style="stroke:none;" d="M 6.59375 -3.96875 L 6.59375 0 L 5.515625 0 L 5.515625 -3.921875 C 5.515625 -4.546875 5.390625 -5.007812 5.140625 -5.3125 C 4.898438 -5.625 4.539062 -5.78125 4.0625 -5.78125 C 3.476562 -5.78125 3.015625 -5.59375 2.671875 -5.21875 C 2.335938 -4.851562 2.171875 -4.347656 2.171875 -3.703125 L 2.171875 0 L 1.09375 0 L 1.09375 -6.5625 L 2.171875 -6.5625 L 2.171875 -5.546875 C 2.429688 -5.941406 2.734375 -6.234375 3.078125 -6.421875 C 3.429688 -6.617188 3.835938 -6.71875 4.296875 -6.71875 C 5.046875 -6.71875 5.613281 -6.484375 6 -6.015625 C 6.394531 -5.554688 6.59375 -4.875 6.59375 -3.96875 Z M 6.59375 -3.96875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-14">
|
||||
<path style="stroke:none;" d="M 1.40625 -1.484375 L 2.640625 -1.484375 L 2.640625 0 L 1.40625 0 Z M 1.40625 -6.203125 L 2.640625 -6.203125 L 2.640625 -4.71875 L 1.40625 -4.71875 Z M 1.40625 -6.203125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-15">
|
||||
<path style="stroke:none;" d="M 1.484375 -1 L 3.421875 -1 L 3.421875 -7.671875 L 1.3125 -7.25 L 1.3125 -8.328125 L 3.40625 -8.75 L 4.59375 -8.75 L 4.59375 -1 L 6.53125 -1 L 6.53125 0 L 1.484375 0 Z M 1.484375 -1 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-16">
|
||||
<path style="stroke:none;" d="M 3.8125 -7.96875 C 3.207031 -7.96875 2.75 -7.664062 2.4375 -7.0625 C 2.132812 -6.46875 1.984375 -5.566406 1.984375 -4.359375 C 1.984375 -3.160156 2.132812 -2.257812 2.4375 -1.65625 C 2.75 -1.0625 3.207031 -0.765625 3.8125 -0.765625 C 4.425781 -0.765625 4.882812 -1.0625 5.1875 -1.65625 C 5.5 -2.257812 5.65625 -3.160156 5.65625 -4.359375 C 5.65625 -5.566406 5.5 -6.46875 5.1875 -7.0625 C 4.882812 -7.664062 4.425781 -7.96875 3.8125 -7.96875 Z M 3.8125 -8.90625 C 4.789062 -8.90625 5.539062 -8.515625 6.0625 -7.734375 C 6.582031 -6.960938 6.84375 -5.835938 6.84375 -4.359375 C 6.84375 -2.890625 6.582031 -1.765625 6.0625 -0.984375 C 5.539062 -0.210938 4.789062 0.171875 3.8125 0.171875 C 2.832031 0.171875 2.082031 -0.210938 1.5625 -0.984375 C 1.050781 -1.765625 0.796875 -2.890625 0.796875 -4.359375 C 0.796875 -5.835938 1.050781 -6.960938 1.5625 -7.734375 C 2.082031 -8.515625 2.832031 -8.90625 3.8125 -8.90625 Z M 3.8125 -8.90625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-17">
|
||||
<path style="stroke:none;" d="M 1.015625 -2.59375 L 1.015625 -6.5625 L 2.09375 -6.5625 L 2.09375 -2.625 C 2.09375 -2.007812 2.210938 -1.546875 2.453125 -1.234375 C 2.703125 -0.921875 3.066406 -0.765625 3.546875 -0.765625 C 4.128906 -0.765625 4.585938 -0.945312 4.921875 -1.3125 C 5.265625 -1.6875 5.4375 -2.195312 5.4375 -2.84375 L 5.4375 -6.5625 L 6.515625 -6.5625 L 6.515625 0 L 5.4375 0 L 5.4375 -1.015625 C 5.175781 -0.609375 4.875 -0.304688 4.53125 -0.109375 C 4.1875 0.078125 3.785156 0.171875 3.328125 0.171875 C 2.566406 0.171875 1.988281 -0.0625 1.59375 -0.53125 C 1.207031 -1 1.015625 -1.6875 1.015625 -2.59375 Z M 3.734375 -6.71875 Z M 3.734375 -6.71875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-18">
|
||||
<path style="stroke:none;" d="M 3.859375 0.609375 C 3.554688 1.390625 3.257812 1.898438 2.96875 2.140625 C 2.675781 2.378906 2.289062 2.5 1.8125 2.5 L 0.953125 2.5 L 0.953125 1.59375 L 1.578125 1.59375 C 1.878906 1.59375 2.109375 1.519531 2.265625 1.375 C 2.429688 1.238281 2.613281 0.910156 2.8125 0.390625 L 3.015625 -0.109375 L 0.359375 -6.5625 L 1.5 -6.5625 L 3.546875 -1.4375 L 5.609375 -6.5625 L 6.75 -6.5625 Z M 3.859375 0.609375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-19">
|
||||
<path style="stroke:none;" d="M 1.265625 -5.453125 L 8.78125 -5.453125 L 8.78125 -4.46875 L 1.265625 -4.46875 Z M 1.265625 -3.0625 L 8.78125 -3.0625 L 8.78125 -2.0625 L 1.265625 -2.0625 Z M 1.265625 -3.0625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-20">
|
||||
<path style="stroke:none;" d="M 2.296875 -1 L 6.4375 -1 L 6.4375 0 L 0.875 0 L 0.875 -1 C 1.320312 -1.457031 1.929688 -2.078125 2.703125 -2.859375 C 3.484375 -3.648438 3.972656 -4.160156 4.171875 -4.390625 C 4.554688 -4.804688 4.820312 -5.160156 4.96875 -5.453125 C 5.125 -5.753906 5.203125 -6.046875 5.203125 -6.328125 C 5.203125 -6.796875 5.035156 -7.175781 4.703125 -7.46875 C 4.378906 -7.757812 3.957031 -7.90625 3.4375 -7.90625 C 3.0625 -7.90625 2.664062 -7.84375 2.25 -7.71875 C 1.84375 -7.59375 1.40625 -7.394531 0.9375 -7.125 L 0.9375 -8.328125 C 1.414062 -8.515625 1.859375 -8.65625 2.265625 -8.75 C 2.679688 -8.851562 3.0625 -8.90625 3.40625 -8.90625 C 4.3125 -8.90625 5.035156 -8.675781 5.578125 -8.21875 C 6.117188 -7.769531 6.390625 -7.164062 6.390625 -6.40625 C 6.390625 -6.050781 6.320312 -5.710938 6.1875 -5.390625 C 6.050781 -5.066406 5.804688 -4.6875 5.453125 -4.25 C 5.347656 -4.132812 5.035156 -3.804688 4.515625 -3.265625 C 3.992188 -2.722656 3.253906 -1.96875 2.296875 -1 Z M 2.296875 -1 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-21">
|
||||
<path style="stroke:none;" d="M 4.875 -4.71875 C 5.4375 -4.59375 5.875 -4.335938 6.1875 -3.953125 C 6.507812 -3.578125 6.671875 -3.109375 6.671875 -2.546875 C 6.671875 -1.679688 6.375 -1.007812 5.78125 -0.53125 C 5.1875 -0.0625 4.34375 0.171875 3.25 0.171875 C 2.882812 0.171875 2.503906 0.132812 2.109375 0.0625 C 1.722656 -0.0078125 1.328125 -0.117188 0.921875 -0.265625 L 0.921875 -1.40625 C 1.242188 -1.21875 1.597656 -1.070312 1.984375 -0.96875 C 2.378906 -0.875 2.789062 -0.828125 3.21875 -0.828125 C 3.957031 -0.828125 4.519531 -0.972656 4.90625 -1.265625 C 5.300781 -1.554688 5.5 -1.984375 5.5 -2.546875 C 5.5 -3.054688 5.316406 -3.457031 4.953125 -3.75 C 4.585938 -4.039062 4.085938 -4.1875 3.453125 -4.1875 L 2.421875 -4.1875 L 2.421875 -5.15625 L 3.5 -5.15625 C 4.070312 -5.15625 4.515625 -5.269531 4.828125 -5.5 C 5.140625 -5.738281 5.296875 -6.078125 5.296875 -6.515625 C 5.296875 -6.960938 5.132812 -7.304688 4.8125 -7.546875 C 4.5 -7.785156 4.046875 -7.90625 3.453125 -7.90625 C 3.117188 -7.90625 2.765625 -7.867188 2.390625 -7.796875 C 2.023438 -7.734375 1.617188 -7.628906 1.171875 -7.484375 L 1.171875 -8.53125 C 1.628906 -8.65625 2.050781 -8.75 2.4375 -8.8125 C 2.832031 -8.875 3.203125 -8.90625 3.546875 -8.90625 C 4.453125 -8.90625 5.164062 -8.703125 5.6875 -8.296875 C 6.207031 -7.890625 6.46875 -7.335938 6.46875 -6.640625 C 6.46875 -6.148438 6.328125 -5.738281 6.046875 -5.40625 C 5.773438 -5.070312 5.382812 -4.84375 4.875 -4.71875 Z M 4.875 -4.71875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-22">
|
||||
<path style="stroke:none;" d="M 6.59375 -6.5625 L 4.21875 -3.375 L 6.703125 0 L 5.4375 0 L 3.53125 -2.578125 L 1.625 0 L 0.34375 0 L 2.890625 -3.4375 L 0.5625 -6.5625 L 1.828125 -6.5625 L 3.578125 -4.21875 L 5.3125 -6.5625 Z M 6.59375 -6.5625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-23">
|
||||
<path style="stroke:none;" d="M 2.171875 -0.984375 L 2.171875 2.5 L 1.09375 2.5 L 1.09375 -6.5625 L 2.171875 -6.5625 L 2.171875 -5.5625 C 2.398438 -5.957031 2.6875 -6.25 3.03125 -6.4375 C 3.375 -6.625 3.785156 -6.71875 4.265625 -6.71875 C 5.066406 -6.71875 5.71875 -6.398438 6.21875 -5.765625 C 6.71875 -5.140625 6.96875 -4.3125 6.96875 -3.28125 C 6.96875 -2.25 6.71875 -1.414062 6.21875 -0.78125 C 5.71875 -0.144531 5.066406 0.171875 4.265625 0.171875 C 3.785156 0.171875 3.375 0.078125 3.03125 -0.109375 C 2.6875 -0.304688 2.398438 -0.597656 2.171875 -0.984375 Z M 5.84375 -3.28125 C 5.84375 -4.070312 5.675781 -4.691406 5.34375 -5.140625 C 5.019531 -5.585938 4.578125 -5.8125 4.015625 -5.8125 C 3.441406 -5.8125 2.988281 -5.585938 2.65625 -5.140625 C 2.332031 -4.691406 2.171875 -4.070312 2.171875 -3.28125 C 2.171875 -2.488281 2.332031 -1.863281 2.65625 -1.40625 C 2.988281 -0.957031 3.441406 -0.734375 4.015625 -0.734375 C 4.578125 -0.734375 5.019531 -0.957031 5.34375 -1.40625 C 5.675781 -1.863281 5.84375 -2.488281 5.84375 -3.28125 Z M 5.84375 -3.28125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-24">
|
||||
<path style="stroke:none;" d="M 6.75 -3.546875 L 6.75 -3.03125 L 1.78125 -3.03125 C 1.832031 -2.28125 2.054688 -1.710938 2.453125 -1.328125 C 2.859375 -0.941406 3.414062 -0.75 4.125 -0.75 C 4.539062 -0.75 4.941406 -0.796875 5.328125 -0.890625 C 5.722656 -0.992188 6.113281 -1.148438 6.5 -1.359375 L 6.5 -0.328125 C 6.101562 -0.171875 5.703125 -0.0507812 5.296875 0.03125 C 4.890625 0.125 4.476562 0.171875 4.0625 0.171875 C 3.019531 0.171875 2.191406 -0.128906 1.578125 -0.734375 C 0.960938 -1.347656 0.65625 -2.175781 0.65625 -3.21875 C 0.65625 -4.289062 0.945312 -5.140625 1.53125 -5.765625 C 2.113281 -6.398438 2.894531 -6.71875 3.875 -6.71875 C 4.757812 -6.71875 5.457031 -6.429688 5.96875 -5.859375 C 6.488281 -5.296875 6.75 -4.523438 6.75 -3.546875 Z M 5.671875 -3.875 C 5.660156 -4.457031 5.492188 -4.925781 5.171875 -5.28125 C 4.847656 -5.632812 4.421875 -5.8125 3.890625 -5.8125 C 3.285156 -5.8125 2.800781 -5.640625 2.4375 -5.296875 C 2.082031 -4.953125 1.878906 -4.472656 1.828125 -3.859375 Z M 5.671875 -3.875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-25">
|
||||
<path style="stroke:none;" d="M 2.203125 -8.421875 L 2.203125 -6.5625 L 4.421875 -6.5625 L 4.421875 -5.71875 L 2.203125 -5.71875 L 2.203125 -2.15625 C 2.203125 -1.625 2.273438 -1.28125 2.421875 -1.125 C 2.566406 -0.976562 2.863281 -0.90625 3.3125 -0.90625 L 4.421875 -0.90625 L 4.421875 0 L 3.3125 0 C 2.476562 0 1.898438 -0.15625 1.578125 -0.46875 C 1.265625 -0.78125 1.109375 -1.34375 1.109375 -2.15625 L 1.109375 -5.71875 L 0.328125 -5.71875 L 0.328125 -6.5625 L 1.109375 -6.5625 L 1.109375 -8.421875 Z M 2.203125 -8.421875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-26">
|
||||
<path style="stroke:none;" d="M 1.09375 -9.125 L 2.171875 -9.125 L 2.171875 -3.734375 L 5.390625 -6.5625 L 6.765625 -6.5625 L 3.28125 -3.5 L 6.921875 0 L 5.515625 0 L 2.171875 -3.203125 L 2.171875 0 L 1.09375 0 Z M 1.09375 -9.125 "/>
|
||||
</symbol>
|
||||
</g>
|
||||
<clipPath id="clip1">
|
||||
<path d="M 1 0 L 579 0 L 579 132 L 1 132 Z M 1 0 "/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g id="surface845">
|
||||
<g clip-path="url(#clip1)" clip-rule="nonzero">
|
||||
<rect x="0" y="0" width="580" height="132" style="fill:rgb(90%,90%,90%);fill-opacity:1;stroke:none;"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2.59375 0 L 2.59375 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 34.976562 0 L 34.976562 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.363281 0 L 67.363281 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.75 0 L 99.75 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 132.132812 0 L 132.132812 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 164.519531 0 L 164.519531 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.90625 0 L 196.90625 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 229.289062 0 L 229.289062 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 261.675781 0 L 261.675781 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 294.0625 0 L 294.0625 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 326.445312 0 L 326.445312 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 358.832031 0 L 358.832031 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 391.21875 0 L 391.21875 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423.601562 0 L 423.601562 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 455.988281 0 L 455.988281 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 488.371094 0 L 488.371094 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 520.757812 0 L 520.757812 132 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 553.144531 0 L 553.144531 132 "/>
|
||||
<g style="fill:rgb(40%,40%,40%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="4" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-2" x="11.582031" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-3" x="18.935547" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-4" x="25.533203" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-5" x="33.138672" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-6" x="36.953125" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-7" x="44.570312" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-8" x="49.503906" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-9" x="52.837891" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-5" x="60.455078" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-9" x="64.269531" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-8" x="71.886719" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-10" x="75.220703" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-8" x="82.322266" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-11" x="85.65625" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-8" x="91.908203" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-12" x="95.242188" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-13" x="102.583984" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-14" x="110.189453" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-5" x="114.232422" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-15" x="118.046875" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-16" x="125.681641" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-5" x="133.316406" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-17" x="137.130859" y="127.503906"/>
|
||||
<use xlink:href="#glyph0-11" x="144.736328" y="127.503906"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(20%,20%,20%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2.59375 31.183594 L 573.648438 31.183594 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(20%,20%,20%);stroke-opacity:1;stroke-miterlimit:10;" d="M 38.8125 31.183594 L 38.8125 102 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(20%,20%,20%);fill-opacity:1;" d="M 573.648438 31.183594 L 567.648438 27.183594 L 567.648438 35.183594 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(20%,20%,20%);stroke-opacity:1;stroke-miterlimit:10;" d="M 38.8125 102 L 557.929688 102 "/>
|
||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 565.921875 31.183594 L 570.410156 31.183594 "/>
|
||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 480.792969 31.183594 L 552.542969 31.183594 "/>
|
||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 322.886719 31.183594 L 402.945312 31.183594 "/>
|
||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 176.828125 31.183594 L 247.347656 31.183594 "/>
|
||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2.59375 31.183594 L 46.933594 31.183594 "/>
|
||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 552.542969 102 L 557.929688 102 "/>
|
||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.945312 102 L 480.792969 102 "/>
|
||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 247.347656 102 L 322.886719 102 "/>
|
||||
<path style="fill:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 46.933594 102 L 176.828125 102 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(0%,0%,100%);stroke-opacity:0.99792;stroke-miterlimit:10;" d="M 557.929688 102 L 570.410156 41.183594 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,100%);fill-opacity:0.99792;" d="M 570.410156 31.183594 L 574.410156 41.183594 L 566.410156 41.183594 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="209.296875" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-5" x="216.398438" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-19" x="220.212891" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-5" x="230.267578" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-15" x="234.082031" y="28.183594"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 225.507812 28.183594 L 225.507812 34.183594 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="351.765625" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-5" x="358.867188" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-19" x="362.681641" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-5" x="372.736328" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-20" x="376.550781" y="28.183594"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 367.976562 28.183594 L 367.976562 34.183594 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="509.097656" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-5" x="516.199219" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-19" x="520.013672" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-5" x="530.068359" y="28.183594"/>
|
||||
<use xlink:href="#glyph0-21" x="533.882812" y="28.183594"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 525.308594 28.183594 L 525.308594 34.183594 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-22" x="101.585938" y="99"/>
|
||||
<use xlink:href="#glyph0-5" x="108.6875" y="99"/>
|
||||
<use xlink:href="#glyph0-19" x="112.501953" y="99"/>
|
||||
<use xlink:href="#glyph0-5" x="122.556641" y="99"/>
|
||||
<use xlink:href="#glyph0-15" x="126.371094" y="99"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 117.792969 99 L 117.792969 105 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-22" x="274.625" y="99"/>
|
||||
<use xlink:href="#glyph0-5" x="281.726562" y="99"/>
|
||||
<use xlink:href="#glyph0-19" x="285.541016" y="99"/>
|
||||
<use xlink:href="#glyph0-5" x="295.595703" y="99"/>
|
||||
<use xlink:href="#glyph0-20" x="299.410156" y="99"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.835938 99 L 290.835938 105 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-22" x="433.574219" y="99"/>
|
||||
<use xlink:href="#glyph0-5" x="440.675781" y="99"/>
|
||||
<use xlink:href="#glyph0-19" x="444.490234" y="99"/>
|
||||
<use xlink:href="#glyph0-5" x="454.544922" y="99"/>
|
||||
<use xlink:href="#glyph0-21" x="458.359375" y="99"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 449.78125 99 L 449.78125 105 "/>
|
||||
<g style="fill:rgb(50%,50%,50%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-23" x="4.59375" y="41.183594"/>
|
||||
<use xlink:href="#glyph0-7" x="12.210938" y="41.183594"/>
|
||||
<use xlink:href="#glyph0-24" x="17.144531" y="41.183594"/>
|
||||
<use xlink:href="#glyph0-24" x="24.527344" y="41.183594"/>
|
||||
<use xlink:href="#glyph0-22" x="31.910156" y="41.183594"/>
|
||||
<use xlink:href="#glyph0-8" x="39.011719" y="41.183594"/>
|
||||
<use xlink:href="#glyph0-11" x="42.345703" y="41.183594"/>
|
||||
<use xlink:href="#glyph0-25" x="48.597656" y="41.183594"/>
|
||||
<use xlink:href="#glyph0-8" x="53.302734" y="41.183594"/>
|
||||
<use xlink:href="#glyph0-13" x="56.636719" y="41.183594"/>
|
||||
<use xlink:href="#glyph0-6" x="64.242188" y="41.183594"/>
|
||||
</g>
|
||||
<g style="fill:rgb(50%,50%,50%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-25" x="40.8125" y="112"/>
|
||||
<use xlink:href="#glyph0-2" x="45.517578" y="112"/>
|
||||
<use xlink:href="#glyph0-11" x="52.871094" y="112"/>
|
||||
<use xlink:href="#glyph0-26" x="59.123047" y="112"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 31 KiB |
2
doc/traces/Makefile
Normal file
2
doc/traces/Makefile
Normal file
@ -0,0 +1,2 @@
|
||||
all:
|
||||
eio-trace render -f both-posix.fxt both-posix.svg
|
BIN
doc/traces/both-posix.fxt
Normal file
BIN
doc/traces/both-posix.fxt
Normal file
Binary file not shown.
372
doc/traces/both-posix.svg
Normal file
372
doc/traces/both-posix.svg
Normal file
@ -0,0 +1,372 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1280pt" height="120pt" viewBox="0 0 1280 120" version="1.1">
|
||||
<defs>
|
||||
<g>
|
||||
<symbol overflow="visible" id="glyph0-0">
|
||||
<path style="stroke:none;" d="M 0.5 1.765625 L 0.5 -7.046875 L 5.5 -7.046875 L 5.5 1.765625 Z M 1.0625 1.21875 L 4.9375 1.21875 L 4.9375 -6.484375 L 1.0625 -6.484375 Z M 1.0625 1.21875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-1">
|
||||
<path style="stroke:none;" d="M 0.984375 -7.296875 L 5.59375 -7.296875 L 5.59375 -6.453125 L 1.96875 -6.453125 L 1.96875 -4.296875 L 5.4375 -4.296875 L 5.4375 -3.46875 L 1.96875 -3.46875 L 1.96875 -0.828125 L 5.671875 -0.828125 L 5.671875 0 L 0.984375 0 Z M 0.984375 -7.296875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-2">
|
||||
<path style="stroke:none;" d="M 3.421875 -2.75 C 2.703125 -2.75 2.203125 -2.664062 1.921875 -2.5 C 1.640625 -2.332031 1.5 -2.050781 1.5 -1.65625 C 1.5 -1.332031 1.601562 -1.078125 1.8125 -0.890625 C 2.019531 -0.703125 2.304688 -0.609375 2.671875 -0.609375 C 3.171875 -0.609375 3.570312 -0.785156 3.875 -1.140625 C 4.175781 -1.492188 4.328125 -1.960938 4.328125 -2.546875 L 4.328125 -2.75 Z M 5.21875 -3.125 L 5.21875 0 L 4.328125 0 L 4.328125 -0.828125 C 4.117188 -0.492188 3.859375 -0.25 3.546875 -0.09375 C 3.242188 0.0625 2.875 0.140625 2.4375 0.140625 C 1.875 0.140625 1.425781 -0.015625 1.09375 -0.328125 C 0.757812 -0.640625 0.59375 -1.0625 0.59375 -1.59375 C 0.59375 -2.207031 0.800781 -2.671875 1.21875 -2.984375 C 1.632812 -3.296875 2.25 -3.453125 3.0625 -3.453125 L 4.328125 -3.453125 L 4.328125 -3.546875 C 4.328125 -3.953125 4.1875 -4.269531 3.90625 -4.5 C 3.632812 -4.726562 3.253906 -4.84375 2.765625 -4.84375 C 2.453125 -4.84375 2.144531 -4.800781 1.84375 -4.71875 C 1.550781 -4.644531 1.269531 -4.535156 1 -4.390625 L 1 -5.21875 C 1.332031 -5.34375 1.648438 -5.4375 1.953125 -5.5 C 2.265625 -5.5625 2.566406 -5.59375 2.859375 -5.59375 C 3.648438 -5.59375 4.238281 -5.390625 4.625 -4.984375 C 5.019531 -4.578125 5.21875 -3.957031 5.21875 -3.125 Z M 5.21875 -3.125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-3">
|
||||
<path style="stroke:none;" d="M 4.875 -5.265625 L 4.875 -4.421875 C 4.625 -4.554688 4.367188 -4.660156 4.109375 -4.734375 C 3.859375 -4.804688 3.601562 -4.84375 3.34375 -4.84375 C 2.757812 -4.84375 2.304688 -4.65625 1.984375 -4.28125 C 1.660156 -3.914062 1.5 -3.398438 1.5 -2.734375 C 1.5 -2.066406 1.660156 -1.546875 1.984375 -1.171875 C 2.304688 -0.804688 2.757812 -0.625 3.34375 -0.625 C 3.601562 -0.625 3.859375 -0.65625 4.109375 -0.71875 C 4.367188 -0.789062 4.625 -0.898438 4.875 -1.046875 L 4.875 -0.203125 C 4.625 -0.0859375 4.363281 -0.00390625 4.09375 0.046875 C 3.832031 0.109375 3.550781 0.140625 3.25 0.140625 C 2.414062 0.140625 1.753906 -0.113281 1.265625 -0.625 C 0.785156 -1.144531 0.546875 -1.847656 0.546875 -2.734375 C 0.546875 -3.617188 0.789062 -4.316406 1.28125 -4.828125 C 1.769531 -5.335938 2.441406 -5.59375 3.296875 -5.59375 C 3.578125 -5.59375 3.847656 -5.566406 4.109375 -5.515625 C 4.367188 -5.460938 4.625 -5.378906 4.875 -5.265625 Z M 4.875 -5.265625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-4">
|
||||
<path style="stroke:none;" d="M 5.484375 -3.296875 L 5.484375 0 L 4.59375 0 L 4.59375 -3.265625 C 4.59375 -3.785156 4.488281 -4.171875 4.28125 -4.421875 C 4.082031 -4.679688 3.78125 -4.8125 3.375 -4.8125 C 2.894531 -4.8125 2.515625 -4.65625 2.234375 -4.34375 C 1.953125 -4.039062 1.8125 -3.625 1.8125 -3.09375 L 1.8125 0 L 0.90625 0 L 0.90625 -7.59375 L 1.8125 -7.59375 L 1.8125 -4.625 C 2.03125 -4.945312 2.285156 -5.1875 2.578125 -5.34375 C 2.867188 -5.507812 3.203125 -5.59375 3.578125 -5.59375 C 4.203125 -5.59375 4.675781 -5.398438 5 -5.015625 C 5.320312 -4.628906 5.484375 -4.054688 5.484375 -3.296875 Z M 5.484375 -3.296875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-5">
|
||||
<path style="stroke:none;" d=""/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-6">
|
||||
<path style="stroke:none;" d="M 4.546875 -2.796875 C 4.546875 -3.453125 4.410156 -3.957031 4.140625 -4.3125 C 3.867188 -4.664062 3.492188 -4.84375 3.015625 -4.84375 C 2.523438 -4.84375 2.144531 -4.664062 1.875 -4.3125 C 1.613281 -3.957031 1.484375 -3.453125 1.484375 -2.796875 C 1.484375 -2.148438 1.613281 -1.644531 1.875 -1.28125 C 2.144531 -0.925781 2.523438 -0.75 3.015625 -0.75 C 3.492188 -0.75 3.867188 -0.925781 4.140625 -1.28125 C 4.410156 -1.644531 4.546875 -2.148438 4.546875 -2.796875 Z M 5.4375 -0.671875 C 5.4375 0.253906 5.226562 0.941406 4.8125 1.390625 C 4.40625 1.847656 3.773438 2.078125 2.921875 2.078125 C 2.609375 2.078125 2.3125 2.050781 2.03125 2 C 1.75 1.957031 1.476562 1.890625 1.21875 1.796875 L 1.21875 0.921875 C 1.476562 1.066406 1.734375 1.171875 1.984375 1.234375 C 2.242188 1.304688 2.507812 1.34375 2.78125 1.34375 C 3.363281 1.34375 3.800781 1.1875 4.09375 0.875 C 4.394531 0.570312 4.546875 0.109375 4.546875 -0.515625 L 4.546875 -0.96875 C 4.359375 -0.644531 4.117188 -0.398438 3.828125 -0.234375 C 3.535156 -0.078125 3.1875 0 2.78125 0 C 2.113281 0 1.570312 -0.253906 1.15625 -0.765625 C 0.75 -1.273438 0.546875 -1.953125 0.546875 -2.796875 C 0.546875 -3.640625 0.75 -4.316406 1.15625 -4.828125 C 1.570312 -5.335938 2.113281 -5.59375 2.78125 -5.59375 C 3.1875 -5.59375 3.535156 -5.515625 3.828125 -5.359375 C 4.117188 -5.203125 4.359375 -4.960938 4.546875 -4.640625 L 4.546875 -5.46875 L 5.4375 -5.46875 Z M 5.4375 -0.671875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-7">
|
||||
<path style="stroke:none;" d="M 4.109375 -4.625 C 4.003906 -4.6875 3.894531 -4.726562 3.78125 -4.75 C 3.664062 -4.78125 3.535156 -4.796875 3.390625 -4.796875 C 2.878906 -4.796875 2.488281 -4.628906 2.21875 -4.296875 C 1.945312 -3.972656 1.8125 -3.5 1.8125 -2.875 L 1.8125 0 L 0.90625 0 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.625 C 2 -4.957031 2.242188 -5.203125 2.546875 -5.359375 C 2.847656 -5.515625 3.21875 -5.59375 3.65625 -5.59375 C 3.71875 -5.59375 3.785156 -5.585938 3.859375 -5.578125 C 3.929688 -5.578125 4.015625 -5.566406 4.109375 -5.546875 Z M 4.109375 -4.625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-8">
|
||||
<path style="stroke:none;" d="M 0.9375 -5.46875 L 1.84375 -5.46875 L 1.84375 0 L 0.9375 0 Z M 0.9375 -7.59375 L 1.84375 -7.59375 L 1.84375 -6.453125 L 0.9375 -6.453125 Z M 0.9375 -7.59375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-9">
|
||||
<path style="stroke:none;" d="M 4.546875 -4.640625 L 4.546875 -7.59375 L 5.4375 -7.59375 L 5.4375 0 L 4.546875 0 L 4.546875 -0.828125 C 4.359375 -0.492188 4.117188 -0.25 3.828125 -0.09375 C 3.535156 0.0625 3.1875 0.140625 2.78125 0.140625 C 2.125 0.140625 1.585938 -0.117188 1.171875 -0.640625 C 0.753906 -1.171875 0.546875 -1.867188 0.546875 -2.734375 C 0.546875 -3.585938 0.753906 -4.273438 1.171875 -4.796875 C 1.585938 -5.328125 2.125 -5.59375 2.78125 -5.59375 C 3.1875 -5.59375 3.535156 -5.515625 3.828125 -5.359375 C 4.117188 -5.203125 4.359375 -4.960938 4.546875 -4.640625 Z M 1.484375 -2.734375 C 1.484375 -2.066406 1.617188 -1.546875 1.890625 -1.171875 C 2.160156 -0.796875 2.535156 -0.609375 3.015625 -0.609375 C 3.484375 -0.609375 3.851562 -0.796875 4.125 -1.171875 C 4.40625 -1.546875 4.546875 -2.066406 4.546875 -2.734375 C 4.546875 -3.390625 4.40625 -3.90625 4.125 -4.28125 C 3.851562 -4.65625 3.484375 -4.84375 3.015625 -4.84375 C 2.535156 -4.84375 2.160156 -4.65625 1.890625 -4.28125 C 1.617188 -3.90625 1.484375 -3.390625 1.484375 -2.734375 Z M 1.484375 -2.734375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-10">
|
||||
<path style="stroke:none;" d="M 0.296875 -5.46875 L 1.25 -5.46875 L 2.953125 -0.875 L 4.671875 -5.46875 L 5.625 -5.46875 L 3.5625 0 L 2.34375 0 Z M 0.296875 -5.46875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-11">
|
||||
<path style="stroke:none;" d="M 4.421875 -5.3125 L 4.421875 -4.453125 C 4.171875 -4.585938 3.910156 -4.6875 3.640625 -4.75 C 3.367188 -4.8125 3.082031 -4.84375 2.78125 -4.84375 C 2.34375 -4.84375 2.007812 -4.773438 1.78125 -4.640625 C 1.5625 -4.503906 1.453125 -4.300781 1.453125 -4.03125 C 1.453125 -3.820312 1.53125 -3.65625 1.6875 -3.53125 C 1.84375 -3.414062 2.164062 -3.304688 2.65625 -3.203125 L 2.953125 -3.125 C 3.597656 -2.988281 4.050781 -2.796875 4.3125 -2.546875 C 4.582031 -2.296875 4.71875 -1.953125 4.71875 -1.515625 C 4.71875 -1.003906 4.515625 -0.597656 4.109375 -0.296875 C 3.710938 -0.00390625 3.164062 0.140625 2.46875 0.140625 C 2.164062 0.140625 1.851562 0.109375 1.53125 0.046875 C 1.21875 -0.00390625 0.890625 -0.0859375 0.546875 -0.203125 L 0.546875 -1.125 C 0.878906 -0.957031 1.203125 -0.828125 1.515625 -0.734375 C 1.835938 -0.648438 2.160156 -0.609375 2.484375 -0.609375 C 2.898438 -0.609375 3.222656 -0.679688 3.453125 -0.828125 C 3.679688 -0.972656 3.796875 -1.175781 3.796875 -1.4375 C 3.796875 -1.6875 3.710938 -1.875 3.546875 -2 C 3.390625 -2.132812 3.03125 -2.257812 2.46875 -2.375 L 2.15625 -2.453125 C 1.601562 -2.566406 1.203125 -2.742188 0.953125 -2.984375 C 0.703125 -3.234375 0.578125 -3.566406 0.578125 -3.984375 C 0.578125 -4.503906 0.757812 -4.898438 1.125 -5.171875 C 1.488281 -5.453125 2.007812 -5.59375 2.6875 -5.59375 C 3.007812 -5.59375 3.316406 -5.566406 3.609375 -5.515625 C 3.910156 -5.472656 4.179688 -5.40625 4.421875 -5.3125 Z M 4.421875 -5.3125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-12">
|
||||
<path style="stroke:none;" d="M 3.0625 -4.84375 C 2.582031 -4.84375 2.203125 -4.65625 1.921875 -4.28125 C 1.640625 -3.90625 1.5 -3.390625 1.5 -2.734375 C 1.5 -2.078125 1.632812 -1.5625 1.90625 -1.1875 C 2.1875 -0.8125 2.570312 -0.625 3.0625 -0.625 C 3.539062 -0.625 3.921875 -0.8125 4.203125 -1.1875 C 4.484375 -1.5625 4.625 -2.078125 4.625 -2.734375 C 4.625 -3.378906 4.484375 -3.890625 4.203125 -4.265625 C 3.921875 -4.648438 3.539062 -4.84375 3.0625 -4.84375 Z M 3.0625 -5.59375 C 3.84375 -5.59375 4.457031 -5.335938 4.90625 -4.828125 C 5.351562 -4.328125 5.578125 -3.628906 5.578125 -2.734375 C 5.578125 -1.835938 5.351562 -1.132812 4.90625 -0.625 C 4.457031 -0.113281 3.84375 0.140625 3.0625 0.140625 C 2.28125 0.140625 1.664062 -0.113281 1.21875 -0.625 C 0.769531 -1.132812 0.546875 -1.835938 0.546875 -2.734375 C 0.546875 -3.628906 0.769531 -4.328125 1.21875 -4.828125 C 1.664062 -5.335938 2.28125 -5.59375 3.0625 -5.59375 Z M 3.0625 -5.59375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-13">
|
||||
<path style="stroke:none;" d="M 5.484375 -3.296875 L 5.484375 0 L 4.59375 0 L 4.59375 -3.265625 C 4.59375 -3.785156 4.488281 -4.171875 4.28125 -4.421875 C 4.082031 -4.679688 3.78125 -4.8125 3.375 -4.8125 C 2.894531 -4.8125 2.515625 -4.65625 2.234375 -4.34375 C 1.953125 -4.039062 1.8125 -3.625 1.8125 -3.09375 L 1.8125 0 L 0.90625 0 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.625 C 2.03125 -4.945312 2.285156 -5.1875 2.578125 -5.34375 C 2.867188 -5.507812 3.203125 -5.59375 3.578125 -5.59375 C 4.203125 -5.59375 4.675781 -5.398438 5 -5.015625 C 5.320312 -4.628906 5.484375 -4.054688 5.484375 -3.296875 Z M 5.484375 -3.296875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-14">
|
||||
<path style="stroke:none;" d="M 1.171875 -1.234375 L 2.203125 -1.234375 L 2.203125 0 L 1.171875 0 Z M 1.171875 -5.171875 L 2.203125 -5.171875 L 2.203125 -3.9375 L 1.171875 -3.9375 Z M 1.171875 -5.171875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-15">
|
||||
<path style="stroke:none;" d="M 1.234375 -0.828125 L 2.859375 -0.828125 L 2.859375 -6.390625 L 1.09375 -6.046875 L 1.09375 -6.9375 L 2.84375 -7.296875 L 3.828125 -7.296875 L 3.828125 -0.828125 L 5.4375 -0.828125 L 5.4375 0 L 1.234375 0 Z M 1.234375 -0.828125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-16">
|
||||
<path style="stroke:none;" d="M 3.171875 -6.640625 C 2.671875 -6.640625 2.289062 -6.390625 2.03125 -5.890625 C 1.78125 -5.390625 1.65625 -4.640625 1.65625 -3.640625 C 1.65625 -2.640625 1.78125 -1.890625 2.03125 -1.390625 C 2.289062 -0.890625 2.671875 -0.640625 3.171875 -0.640625 C 3.691406 -0.640625 4.078125 -0.890625 4.328125 -1.390625 C 4.585938 -1.890625 4.71875 -2.640625 4.71875 -3.640625 C 4.71875 -4.640625 4.585938 -5.390625 4.328125 -5.890625 C 4.078125 -6.390625 3.691406 -6.640625 3.171875 -6.640625 Z M 3.171875 -7.421875 C 3.992188 -7.421875 4.617188 -7.097656 5.046875 -6.453125 C 5.484375 -5.804688 5.703125 -4.867188 5.703125 -3.640625 C 5.703125 -2.410156 5.484375 -1.472656 5.046875 -0.828125 C 4.617188 -0.179688 3.992188 0.140625 3.171875 0.140625 C 2.359375 0.140625 1.734375 -0.179688 1.296875 -0.828125 C 0.867188 -1.472656 0.65625 -2.410156 0.65625 -3.640625 C 0.65625 -4.867188 0.867188 -5.804688 1.296875 -6.453125 C 1.734375 -7.097656 2.359375 -7.421875 3.171875 -7.421875 Z M 3.171875 -7.421875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-17">
|
||||
<path style="stroke:none;" d="M 0.84375 -2.15625 L 0.84375 -5.46875 L 1.75 -5.46875 L 1.75 -2.1875 C 1.75 -1.675781 1.847656 -1.289062 2.046875 -1.03125 C 2.253906 -0.769531 2.554688 -0.640625 2.953125 -0.640625 C 3.441406 -0.640625 3.828125 -0.789062 4.109375 -1.09375 C 4.390625 -1.40625 4.53125 -1.832031 4.53125 -2.375 L 4.53125 -5.46875 L 5.4375 -5.46875 L 5.4375 0 L 4.53125 0 L 4.53125 -0.84375 C 4.3125 -0.507812 4.054688 -0.257812 3.765625 -0.09375 C 3.484375 0.0625 3.148438 0.140625 2.765625 0.140625 C 2.140625 0.140625 1.660156 -0.0507812 1.328125 -0.4375 C 1.003906 -0.832031 0.84375 -1.40625 0.84375 -2.15625 Z M 3.109375 -5.59375 Z M 3.109375 -5.59375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-0">
|
||||
<path style="stroke:none;" d="M 0.59375 2.125 L 0.59375 -8.46875 L 6.59375 -8.46875 L 6.59375 2.125 Z M 1.265625 1.453125 L 5.9375 1.453125 L 5.9375 -7.78125 L 1.265625 -7.78125 Z M 1.265625 1.453125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-1">
|
||||
<path style="stroke:none;" d="M 2.203125 -8.421875 L 2.203125 -6.5625 L 4.421875 -6.5625 L 4.421875 -5.71875 L 2.203125 -5.71875 L 2.203125 -2.15625 C 2.203125 -1.625 2.273438 -1.28125 2.421875 -1.125 C 2.566406 -0.976562 2.863281 -0.90625 3.3125 -0.90625 L 4.421875 -0.90625 L 4.421875 0 L 3.3125 0 C 2.476562 0 1.898438 -0.15625 1.578125 -0.46875 C 1.265625 -0.78125 1.109375 -1.34375 1.109375 -2.15625 L 1.109375 -5.71875 L 0.328125 -5.71875 L 0.328125 -6.5625 L 1.109375 -6.5625 L 1.109375 -8.421875 Z M 2.203125 -8.421875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-2">
|
||||
<path style="stroke:none;" d="M 4.9375 -5.5625 C 4.8125 -5.625 4.675781 -5.671875 4.53125 -5.703125 C 4.394531 -5.742188 4.238281 -5.765625 4.0625 -5.765625 C 3.457031 -5.765625 2.988281 -5.566406 2.65625 -5.171875 C 2.332031 -4.773438 2.171875 -4.203125 2.171875 -3.453125 L 2.171875 0 L 1.09375 0 L 1.09375 -6.5625 L 2.171875 -6.5625 L 2.171875 -5.546875 C 2.398438 -5.941406 2.695312 -6.234375 3.0625 -6.421875 C 3.425781 -6.617188 3.867188 -6.71875 4.390625 -6.71875 C 4.460938 -6.71875 4.539062 -6.710938 4.625 -6.703125 C 4.71875 -6.691406 4.816406 -6.675781 4.921875 -6.65625 Z M 4.9375 -5.5625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-3">
|
||||
<path style="stroke:none;" d="M 4.109375 -3.296875 C 3.242188 -3.296875 2.640625 -3.195312 2.296875 -3 C 1.960938 -2.800781 1.796875 -2.460938 1.796875 -1.984375 C 1.796875 -1.597656 1.921875 -1.289062 2.171875 -1.0625 C 2.429688 -0.84375 2.773438 -0.734375 3.203125 -0.734375 C 3.804688 -0.734375 4.285156 -0.941406 4.640625 -1.359375 C 5.003906 -1.785156 5.1875 -2.351562 5.1875 -3.0625 L 5.1875 -3.296875 Z M 6.265625 -3.75 L 6.265625 0 L 5.1875 0 L 5.1875 -1 C 4.9375 -0.601562 4.628906 -0.304688 4.265625 -0.109375 C 3.898438 0.078125 3.453125 0.171875 2.921875 0.171875 C 2.242188 0.171875 1.707031 -0.015625 1.3125 -0.390625 C 0.914062 -0.773438 0.71875 -1.28125 0.71875 -1.90625 C 0.71875 -2.644531 0.960938 -3.203125 1.453125 -3.578125 C 1.953125 -3.953125 2.691406 -4.140625 3.671875 -4.140625 L 5.1875 -4.140625 L 5.1875 -4.25 C 5.1875 -4.75 5.019531 -5.132812 4.6875 -5.40625 C 4.363281 -5.675781 3.910156 -5.8125 3.328125 -5.8125 C 2.953125 -5.8125 2.582031 -5.765625 2.21875 -5.671875 C 1.863281 -5.578125 1.523438 -5.441406 1.203125 -5.265625 L 1.203125 -6.265625 C 1.597656 -6.421875 1.976562 -6.535156 2.34375 -6.609375 C 2.71875 -6.679688 3.082031 -6.71875 3.4375 -6.71875 C 4.382812 -6.71875 5.09375 -6.472656 5.5625 -5.984375 C 6.03125 -5.492188 6.265625 -4.75 6.265625 -3.75 Z M 6.265625 -3.75 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-4">
|
||||
<path style="stroke:none;" d="M 5.859375 -6.3125 L 5.859375 -5.296875 C 5.546875 -5.472656 5.238281 -5.601562 4.9375 -5.6875 C 4.632812 -5.769531 4.328125 -5.8125 4.015625 -5.8125 C 3.304688 -5.8125 2.757812 -5.585938 2.375 -5.140625 C 1.988281 -4.703125 1.796875 -4.082031 1.796875 -3.28125 C 1.796875 -2.476562 1.988281 -1.851562 2.375 -1.40625 C 2.757812 -0.96875 3.304688 -0.75 4.015625 -0.75 C 4.328125 -0.75 4.632812 -0.789062 4.9375 -0.875 C 5.238281 -0.957031 5.546875 -1.082031 5.859375 -1.25 L 5.859375 -0.25 C 5.554688 -0.113281 5.242188 -0.0078125 4.921875 0.0625 C 4.597656 0.132812 4.253906 0.171875 3.890625 0.171875 C 2.898438 0.171875 2.113281 -0.132812 1.53125 -0.75 C 0.945312 -1.375 0.65625 -2.21875 0.65625 -3.28125 C 0.65625 -4.34375 0.945312 -5.179688 1.53125 -5.796875 C 2.125 -6.410156 2.9375 -6.71875 3.96875 -6.71875 C 4.289062 -6.71875 4.609375 -6.679688 4.921875 -6.609375 C 5.242188 -6.546875 5.554688 -6.445312 5.859375 -6.3125 Z M 5.859375 -6.3125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-5">
|
||||
<path style="stroke:none;" d="M 6.75 -3.546875 L 6.75 -3.03125 L 1.78125 -3.03125 C 1.832031 -2.28125 2.054688 -1.710938 2.453125 -1.328125 C 2.859375 -0.941406 3.414062 -0.75 4.125 -0.75 C 4.539062 -0.75 4.941406 -0.796875 5.328125 -0.890625 C 5.722656 -0.992188 6.113281 -1.148438 6.5 -1.359375 L 6.5 -0.328125 C 6.101562 -0.171875 5.703125 -0.0507812 5.296875 0.03125 C 4.890625 0.125 4.476562 0.171875 4.0625 0.171875 C 3.019531 0.171875 2.191406 -0.128906 1.578125 -0.734375 C 0.960938 -1.347656 0.65625 -2.175781 0.65625 -3.21875 C 0.65625 -4.289062 0.945312 -5.140625 1.53125 -5.765625 C 2.113281 -6.398438 2.894531 -6.71875 3.875 -6.71875 C 4.757812 -6.71875 5.457031 -6.429688 5.96875 -5.859375 C 6.488281 -5.296875 6.75 -4.523438 6.75 -3.546875 Z M 5.671875 -3.875 C 5.660156 -4.457031 5.492188 -4.925781 5.171875 -5.28125 C 4.847656 -5.632812 4.421875 -5.8125 3.890625 -5.8125 C 3.285156 -5.8125 2.800781 -5.640625 2.4375 -5.296875 C 2.082031 -4.953125 1.878906 -4.472656 1.828125 -3.859375 Z M 5.671875 -3.875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-6">
|
||||
<path style="stroke:none;" d="M 1.125 -9.125 L 2.203125 -9.125 L 2.203125 0 L 1.125 0 Z M 1.125 -9.125 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-7">
|
||||
<path style="stroke:none;" d="M 6.59375 -3.96875 L 6.59375 0 L 5.515625 0 L 5.515625 -3.921875 C 5.515625 -4.546875 5.390625 -5.007812 5.140625 -5.3125 C 4.898438 -5.625 4.539062 -5.78125 4.0625 -5.78125 C 3.476562 -5.78125 3.015625 -5.59375 2.671875 -5.21875 C 2.335938 -4.851562 2.171875 -4.347656 2.171875 -3.703125 L 2.171875 0 L 1.09375 0 L 1.09375 -6.5625 L 2.171875 -6.5625 L 2.171875 -5.546875 C 2.429688 -5.941406 2.734375 -6.234375 3.078125 -6.421875 C 3.429688 -6.617188 3.835938 -6.71875 4.296875 -6.71875 C 5.046875 -6.71875 5.613281 -6.484375 6 -6.015625 C 6.394531 -5.554688 6.59375 -4.875 6.59375 -3.96875 Z M 6.59375 -3.96875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-8">
|
||||
<path style="stroke:none;" d="M 3.671875 -5.8125 C 3.097656 -5.8125 2.640625 -5.582031 2.296875 -5.125 C 1.960938 -4.675781 1.796875 -4.0625 1.796875 -3.28125 C 1.796875 -2.488281 1.960938 -1.867188 2.296875 -1.421875 C 2.628906 -0.972656 3.085938 -0.75 3.671875 -0.75 C 4.242188 -0.75 4.695312 -0.972656 5.03125 -1.421875 C 5.375 -1.878906 5.546875 -2.5 5.546875 -3.28125 C 5.546875 -4.050781 5.375 -4.664062 5.03125 -5.125 C 4.695312 -5.582031 4.242188 -5.8125 3.671875 -5.8125 Z M 3.671875 -6.71875 C 4.609375 -6.71875 5.34375 -6.410156 5.875 -5.796875 C 6.414062 -5.191406 6.6875 -4.351562 6.6875 -3.28125 C 6.6875 -2.207031 6.414062 -1.363281 5.875 -0.75 C 5.34375 -0.132812 4.609375 0.171875 3.671875 0.171875 C 2.734375 0.171875 1.992188 -0.132812 1.453125 -0.75 C 0.921875 -1.363281 0.65625 -2.207031 0.65625 -3.28125 C 0.65625 -4.351562 0.921875 -5.191406 1.453125 -5.796875 C 1.992188 -6.410156 2.734375 -6.71875 3.671875 -6.71875 Z M 3.671875 -6.71875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph1-9">
|
||||
<path style="stroke:none;" d="M 5.3125 -6.375 L 5.3125 -5.34375 C 5.007812 -5.5 4.691406 -5.613281 4.359375 -5.6875 C 4.035156 -5.769531 3.695312 -5.8125 3.34375 -5.8125 C 2.8125 -5.8125 2.410156 -5.726562 2.140625 -5.5625 C 1.867188 -5.40625 1.734375 -5.160156 1.734375 -4.828125 C 1.734375 -4.578125 1.828125 -4.378906 2.015625 -4.234375 C 2.210938 -4.097656 2.601562 -3.96875 3.1875 -3.84375 L 3.546875 -3.75 C 4.316406 -3.59375 4.863281 -3.363281 5.1875 -3.0625 C 5.507812 -2.757812 5.671875 -2.34375 5.671875 -1.8125 C 5.671875 -1.195312 5.425781 -0.710938 4.9375 -0.359375 C 4.457031 -0.00390625 3.796875 0.171875 2.953125 0.171875 C 2.597656 0.171875 2.226562 0.132812 1.84375 0.0625 C 1.46875 0 1.070312 -0.0976562 0.65625 -0.234375 L 0.65625 -1.359375 C 1.050781 -1.148438 1.441406 -0.992188 1.828125 -0.890625 C 2.210938 -0.785156 2.597656 -0.734375 2.984375 -0.734375 C 3.484375 -0.734375 3.867188 -0.816406 4.140625 -0.984375 C 4.421875 -1.160156 4.5625 -1.410156 4.5625 -1.734375 C 4.5625 -2.023438 4.460938 -2.25 4.265625 -2.40625 C 4.066406 -2.5625 3.632812 -2.710938 2.96875 -2.859375 L 2.59375 -2.9375 C 1.925781 -3.082031 1.441406 -3.300781 1.140625 -3.59375 C 0.847656 -3.882812 0.703125 -4.28125 0.703125 -4.78125 C 0.703125 -5.40625 0.921875 -5.882812 1.359375 -6.21875 C 1.796875 -6.550781 2.414062 -6.71875 3.21875 -6.71875 C 3.613281 -6.71875 3.988281 -6.6875 4.34375 -6.625 C 4.695312 -6.570312 5.019531 -6.488281 5.3125 -6.375 Z M 5.3125 -6.375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-0">
|
||||
<path style="stroke:none;" d="M 0.40625 1.421875 L 0.40625 -5.640625 L 4.40625 -5.640625 L 4.40625 1.421875 Z M 0.84375 0.96875 L 3.953125 0.96875 L 3.953125 -5.1875 L 0.84375 -5.1875 Z M 0.84375 0.96875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-1">
|
||||
<path style="stroke:none;" d="M 4.390625 -4.375 L 2.8125 -2.25 L 4.46875 0 L 3.625 0 L 2.359375 -1.71875 L 1.078125 0 L 0.234375 0 L 1.9375 -2.296875 L 0.375 -4.375 L 1.21875 -4.375 L 2.390625 -2.8125 L 3.546875 -4.375 Z M 4.390625 -4.375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-2">
|
||||
<path style="stroke:none;" d=""/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-3">
|
||||
<path style="stroke:none;" d="M 0.84375 -3.640625 L 5.859375 -3.640625 L 5.859375 -2.984375 L 0.84375 -2.984375 Z M 0.84375 -2.046875 L 5.859375 -2.046875 L 5.859375 -1.375 L 0.84375 -1.375 Z M 0.84375 -2.046875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-4">
|
||||
<path style="stroke:none;" d="M 1 -0.671875 L 2.28125 -0.671875 L 2.28125 -5.109375 L 0.875 -4.828125 L 0.875 -5.546875 L 2.28125 -5.828125 L 3.0625 -5.828125 L 3.0625 -0.671875 L 4.359375 -0.671875 L 4.359375 0 L 1 0 Z M 1 -0.671875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-5">
|
||||
<path style="stroke:none;" d="M 1.53125 -0.671875 L 4.296875 -0.671875 L 4.296875 0 L 0.59375 0 L 0.59375 -0.671875 C 0.882812 -0.972656 1.289062 -1.382812 1.8125 -1.90625 C 2.332031 -2.4375 2.65625 -2.773438 2.78125 -2.921875 C 3.039062 -3.203125 3.21875 -3.441406 3.3125 -3.640625 C 3.414062 -3.835938 3.46875 -4.03125 3.46875 -4.21875 C 3.46875 -4.53125 3.359375 -4.785156 3.140625 -4.984375 C 2.921875 -5.179688 2.640625 -5.28125 2.296875 -5.28125 C 2.046875 -5.28125 1.78125 -5.234375 1.5 -5.140625 C 1.226562 -5.054688 0.9375 -4.925781 0.625 -4.75 L 0.625 -5.546875 C 0.945312 -5.679688 1.242188 -5.78125 1.515625 -5.84375 C 1.796875 -5.90625 2.050781 -5.9375 2.28125 -5.9375 C 2.882812 -5.9375 3.363281 -5.785156 3.71875 -5.484375 C 4.082031 -5.179688 4.265625 -4.78125 4.265625 -4.28125 C 4.265625 -4.039062 4.21875 -3.8125 4.125 -3.59375 C 4.03125 -3.375 3.867188 -3.117188 3.640625 -2.828125 C 3.566406 -2.753906 3.351562 -2.535156 3 -2.171875 C 2.65625 -1.816406 2.164062 -1.316406 1.53125 -0.671875 Z M 1.53125 -0.671875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-6">
|
||||
<path style="stroke:none;" d="M 3.25 -3.140625 C 3.625 -3.066406 3.914062 -2.898438 4.125 -2.640625 C 4.34375 -2.390625 4.453125 -2.078125 4.453125 -1.703125 C 4.453125 -1.117188 4.253906 -0.671875 3.859375 -0.359375 C 3.460938 -0.046875 2.898438 0.109375 2.171875 0.109375 C 1.921875 0.109375 1.664062 0.0820312 1.40625 0.03125 C 1.15625 -0.0078125 0.890625 -0.078125 0.609375 -0.171875 L 0.609375 -0.9375 C 0.828125 -0.8125 1.066406 -0.710938 1.328125 -0.640625 C 1.585938 -0.578125 1.859375 -0.546875 2.140625 -0.546875 C 2.640625 -0.546875 3.019531 -0.644531 3.28125 -0.84375 C 3.539062 -1.039062 3.671875 -1.328125 3.671875 -1.703125 C 3.671875 -2.046875 3.546875 -2.3125 3.296875 -2.5 C 3.054688 -2.695312 2.722656 -2.796875 2.296875 -2.796875 L 1.625 -2.796875 L 1.625 -3.4375 L 2.328125 -3.4375 C 2.710938 -3.4375 3.007812 -3.515625 3.21875 -3.671875 C 3.425781 -3.828125 3.53125 -4.050781 3.53125 -4.34375 C 3.53125 -4.644531 3.421875 -4.875 3.203125 -5.03125 C 2.992188 -5.195312 2.691406 -5.28125 2.296875 -5.28125 C 2.078125 -5.28125 1.84375 -5.253906 1.59375 -5.203125 C 1.351562 -5.160156 1.082031 -5.085938 0.78125 -4.984375 L 0.78125 -5.6875 C 1.082031 -5.769531 1.363281 -5.832031 1.625 -5.875 C 1.882812 -5.914062 2.132812 -5.9375 2.375 -5.9375 C 2.96875 -5.9375 3.4375 -5.800781 3.78125 -5.53125 C 4.132812 -5.257812 4.3125 -4.890625 4.3125 -4.421875 C 4.3125 -4.097656 4.21875 -3.828125 4.03125 -3.609375 C 3.851562 -3.390625 3.59375 -3.234375 3.25 -3.140625 Z M 3.25 -3.140625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-7">
|
||||
<path style="stroke:none;" d="M 2.578125 0.40625 C 2.367188 0.925781 2.164062 1.265625 1.96875 1.421875 C 1.78125 1.585938 1.523438 1.671875 1.203125 1.671875 L 0.640625 1.671875 L 0.640625 1.0625 L 1.0625 1.0625 C 1.257812 1.0625 1.410156 1.015625 1.515625 0.921875 C 1.628906 0.828125 1.75 0.609375 1.875 0.265625 L 2.015625 -0.078125 L 0.234375 -4.375 L 1 -4.375 L 2.375 -0.953125 L 3.734375 -4.375 L 4.5 -4.375 Z M 2.578125 0.40625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-8">
|
||||
<path style="stroke:none;" d="M 3.890625 -2.1875 C 3.890625 -2.71875 3.78125 -3.128906 3.5625 -3.421875 C 3.351562 -3.722656 3.054688 -3.875 2.671875 -3.875 C 2.296875 -3.875 2 -3.722656 1.78125 -3.421875 C 1.5625 -3.128906 1.453125 -2.71875 1.453125 -2.1875 C 1.453125 -1.65625 1.5625 -1.238281 1.78125 -0.9375 C 2 -0.632812 2.296875 -0.484375 2.671875 -0.484375 C 3.054688 -0.484375 3.351562 -0.632812 3.5625 -0.9375 C 3.78125 -1.238281 3.890625 -1.65625 3.890625 -2.1875 Z M 1.453125 -3.71875 C 1.597656 -3.976562 1.785156 -4.171875 2.015625 -4.296875 C 2.253906 -4.421875 2.53125 -4.484375 2.84375 -4.484375 C 3.375 -4.484375 3.804688 -4.269531 4.140625 -3.84375 C 4.472656 -3.425781 4.640625 -2.875 4.640625 -2.1875 C 4.640625 -1.5 4.472656 -0.941406 4.140625 -0.515625 C 3.804688 -0.0976562 3.375 0.109375 2.84375 0.109375 C 2.53125 0.109375 2.253906 0.046875 2.015625 -0.078125 C 1.785156 -0.203125 1.597656 -0.394531 1.453125 -0.65625 L 1.453125 0 L 0.734375 0 L 0.734375 -6.078125 L 1.453125 -6.078125 Z M 1.453125 -3.71875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-9">
|
||||
<path style="stroke:none;" d="M 2.453125 -3.875 C 2.066406 -3.875 1.757812 -3.722656 1.53125 -3.421875 C 1.3125 -3.117188 1.203125 -2.707031 1.203125 -2.1875 C 1.203125 -1.664062 1.3125 -1.253906 1.53125 -0.953125 C 1.757812 -0.648438 2.066406 -0.5 2.453125 -0.5 C 2.835938 -0.5 3.140625 -0.648438 3.359375 -0.953125 C 3.585938 -1.253906 3.703125 -1.664062 3.703125 -2.1875 C 3.703125 -2.707031 3.585938 -3.117188 3.359375 -3.421875 C 3.140625 -3.722656 2.835938 -3.875 2.453125 -3.875 Z M 2.453125 -4.484375 C 3.078125 -4.484375 3.566406 -4.28125 3.921875 -3.875 C 4.273438 -3.46875 4.453125 -2.90625 4.453125 -2.1875 C 4.453125 -1.46875 4.273438 -0.90625 3.921875 -0.5 C 3.566406 -0.09375 3.078125 0.109375 2.453125 0.109375 C 1.828125 0.109375 1.332031 -0.09375 0.96875 -0.5 C 0.613281 -0.90625 0.4375 -1.46875 0.4375 -2.1875 C 0.4375 -2.90625 0.613281 -3.46875 0.96875 -3.875 C 1.332031 -4.28125 1.828125 -4.484375 2.453125 -4.484375 Z M 2.453125 -4.484375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-10">
|
||||
<path style="stroke:none;" d="M 1.46875 -5.625 L 1.46875 -4.375 L 2.953125 -4.375 L 2.953125 -3.8125 L 1.46875 -3.8125 L 1.46875 -1.4375 C 1.46875 -1.082031 1.515625 -0.851562 1.609375 -0.75 C 1.710938 -0.65625 1.910156 -0.609375 2.203125 -0.609375 L 2.953125 -0.609375 L 2.953125 0 L 2.203125 0 C 1.648438 0 1.269531 -0.101562 1.0625 -0.3125 C 0.851562 -0.519531 0.75 -0.894531 0.75 -1.4375 L 0.75 -3.8125 L 0.21875 -3.8125 L 0.21875 -4.375 L 0.75 -4.375 L 0.75 -5.625 Z M 1.46875 -5.625 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph2-11">
|
||||
<path style="stroke:none;" d="M 4.390625 -2.640625 L 4.390625 0 L 3.671875 0 L 3.671875 -2.625 C 3.671875 -3.03125 3.585938 -3.335938 3.421875 -3.546875 C 3.265625 -3.753906 3.023438 -3.859375 2.703125 -3.859375 C 2.316406 -3.859375 2.007812 -3.734375 1.78125 -3.484375 C 1.5625 -3.234375 1.453125 -2.894531 1.453125 -2.46875 L 1.453125 0 L 0.734375 0 L 0.734375 -6.078125 L 1.453125 -6.078125 L 1.453125 -3.703125 C 1.617188 -3.960938 1.816406 -4.15625 2.046875 -4.28125 C 2.285156 -4.414062 2.554688 -4.484375 2.859375 -4.484375 C 3.367188 -4.484375 3.75 -4.328125 4 -4.015625 C 4.257812 -3.703125 4.390625 -3.242188 4.390625 -2.640625 Z M 4.390625 -2.640625 "/>
|
||||
</symbol>
|
||||
</g>
|
||||
<clipPath id="clip1">
|
||||
<path d="M 692.644531 48 L 734 48 L 734 59 L 692.644531 59 Z M 692.644531 48 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip2">
|
||||
<path d="M 885.316406 48 L 927 48 L 927 59 L 885.316406 59 Z M 885.316406 48 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip3">
|
||||
<path d="M 1038.214844 48 L 1060.753906 48 L 1060.753906 59 L 1038.214844 59 Z M 1038.214844 48 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip4">
|
||||
<path d="M 819.328125 80 L 861 80 L 861 91 L 819.328125 91 Z M 819.328125 80 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip5">
|
||||
<path d="M 967 80 L 1006.179688 80 L 1006.179688 91 L 967 91 Z M 967 80 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip6">
|
||||
<path d="M 433.214844 70 L 455 70 L 455 76 L 433.214844 76 Z M 433.214844 70 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip7">
|
||||
<path d="M 854.011719 70 L 875 70 L 875 76 L 854.011719 76 Z M 854.011719 70 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip8">
|
||||
<path d="M 993.652344 70 L 1015 70 L 1015 77 L 993.652344 77 Z M 993.652344 70 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip9">
|
||||
<path d="M 738.246094 38 L 760 38 L 760 46 L 738.246094 46 Z M 738.246094 38 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip10">
|
||||
<path d="M 937.078125 38 L 958 38 L 958 46 L 937.078125 46 Z M 937.078125 38 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip11">
|
||||
<path d="M 1047.515625 38 L 1069 38 L 1069 46 L 1047.515625 46 Z M 1047.515625 38 "/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g id="surface2">
|
||||
<rect x="0" y="0" width="1280" height="120" style="fill:rgb(90%,90%,90%);fill-opacity:1;stroke:none;"/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 4 0 L 4 120 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 169.472656 0 L 169.472656 120 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 334.945312 0 L 334.945312 120 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 500.417969 0 L 500.417969 120 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 665.886719 0 L 665.886719 120 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 831.359375 0 L 831.359375 120 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 996.832031 0 L 996.832031 120 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(70%,70%,70%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1162.304688 0 L 1162.304688 120 "/>
|
||||
<g style="fill:rgb(40%,40%,40%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="4" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-2" x="10.318359" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-3" x="16.446289" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-4" x="21.944336" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-5" x="28.282227" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-6" x="31.460938" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-7" x="37.808594" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-8" x="41.919922" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-9" x="44.698242" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-5" x="51.045898" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-9" x="54.224609" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-8" x="60.572266" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-10" x="63.350586" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-8" x="69.268555" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-11" x="72.046875" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-8" x="77.256836" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-12" x="80.035156" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-13" x="86.15332" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-14" x="92.491211" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-5" x="95.860352" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-15" x="99.039062" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-16" x="105.401367" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-5" x="111.763672" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-17" x="114.942383" y="115.921875"/>
|
||||
<use xlink:href="#glyph0-11" x="121.280273" y="115.921875"/>
|
||||
</g>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 10.984375 46 L 19.375 46 L 19.375 60 L 10.984375 60 Z M 10.984375 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 19.371094 46 L 117.976562 46 L 117.976562 60 L 19.371094 60 Z M 19.371094 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,40%,40%);fill-opacity:1;" d="M 117.976562 46 L 657.960938 46 L 657.960938 60 L 117.976562 60 Z M 117.976562 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 657.960938 46 L 690.640625 46 L 690.640625 60 L 657.960938 60 Z M 657.960938 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,90%,50%);fill-opacity:1;" d="M 690.644531 46 L 762.277344 46 L 762.277344 60 L 690.644531 60 Z M 690.644531 46 "/>
|
||||
<g clip-path="url(#clip1)" clip-rule="nonzero">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="692.644531" y="58"/>
|
||||
<use xlink:href="#glyph1-2" x="697.349609" y="58"/>
|
||||
<use xlink:href="#glyph1-3" x="702.283203" y="58"/>
|
||||
<use xlink:href="#glyph1-4" x="709.636719" y="58"/>
|
||||
<use xlink:href="#glyph1-5" x="716.234375" y="58"/>
|
||||
<use xlink:href="#glyph1-6" x="723.617188" y="58"/>
|
||||
<use xlink:href="#glyph1-7" x="726.951172" y="58"/>
|
||||
</g>
|
||||
</g>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 762.277344 46 L 765.703125 46 L 765.703125 60 L 762.277344 60 Z M 762.277344 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,40%,40%);fill-opacity:1;" d="M 765.699219 46 L 874.28125 46 L 874.28125 60 L 765.699219 60 Z M 765.699219 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 874.285156 46 L 883.320312 46 L 883.320312 60 L 874.285156 60 Z M 874.285156 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,90%,50%);fill-opacity:1;" d="M 883.316406 46 L 950.152344 46 L 950.152344 60 L 883.316406 60 Z M 883.316406 46 "/>
|
||||
<g clip-path="url(#clip2)" clip-rule="nonzero">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="885.316406" y="58"/>
|
||||
<use xlink:href="#glyph1-2" x="890.021484" y="58"/>
|
||||
<use xlink:href="#glyph1-3" x="894.955078" y="58"/>
|
||||
<use xlink:href="#glyph1-4" x="902.308594" y="58"/>
|
||||
<use xlink:href="#glyph1-5" x="908.90625" y="58"/>
|
||||
<use xlink:href="#glyph1-6" x="916.289062" y="58"/>
|
||||
<use xlink:href="#glyph1-7" x="919.623047" y="58"/>
|
||||
</g>
|
||||
</g>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 950.152344 46 L 952.253906 46 L 952.253906 60 L 950.152344 60 Z M 950.152344 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,40%,40%);fill-opacity:1;" d="M 952.253906 46 L 1010.515625 46 L 1010.515625 60 L 952.253906 60 Z M 952.253906 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 1010.515625 46 L 1036.214844 46 L 1036.214844 60 L 1010.515625 60 Z M 1010.515625 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,90%,50%);fill-opacity:1;" d="M 1036.214844 46 L 1060.753906 46 L 1060.753906 60 L 1036.214844 60 Z M 1036.214844 46 "/>
|
||||
<g clip-path="url(#clip3)" clip-rule="nonzero">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="1038.214844" y="58"/>
|
||||
<use xlink:href="#glyph1-2" x="1042.919922" y="58"/>
|
||||
<use xlink:href="#glyph1-3" x="1047.853516" y="58"/>
|
||||
<use xlink:href="#glyph1-4" x="1055.207031" y="58"/>
|
||||
<use xlink:href="#glyph1-5" x="1061.804688" y="58"/>
|
||||
<use xlink:href="#glyph1-6" x="1069.1875" y="58"/>
|
||||
<use xlink:href="#glyph1-7" x="1072.521484" y="58"/>
|
||||
</g>
|
||||
</g>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 1060.753906 46 L 1062.9375 46 L 1062.9375 60 L 1060.753906 60 Z M 1060.753906 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,40%,40%);fill-opacity:1;" d="M 1062.9375 46 L 1096.113281 46 L 1096.113281 60 L 1062.9375 60 Z M 1062.9375 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 1096.117188 46 L 1185.753906 46 L 1185.753906 60 L 1096.117188 60 Z M 1096.117188 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,90%,50%);fill-opacity:1;" d="M 1185.75 46 L 1231.652344 46 L 1231.652344 60 L 1185.75 60 Z M 1185.75 46 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-4" x="1187.75" y="58"/>
|
||||
<use xlink:href="#glyph1-6" x="1194.347656" y="58"/>
|
||||
<use xlink:href="#glyph1-8" x="1197.681641" y="58"/>
|
||||
<use xlink:href="#glyph1-9" x="1205.023438" y="58"/>
|
||||
<use xlink:href="#glyph1-5" x="1211.275391" y="58"/>
|
||||
</g>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 1231.652344 46 L 1108.410156 46 L 1108.410156 60 L 1231.652344 60 Z M 1231.652344 46 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 117.976562 78 L 125.953125 78 L 125.953125 92 L 117.976562 92 Z M 117.976562 78 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 125.953125 78 L 273.785156 78 L 273.785156 92 L 125.953125 92 Z M 125.953125 78 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,90%,50%);fill-opacity:1;" d="M 273.785156 78 L 630.226562 78 L 630.226562 92 L 273.785156 92 Z M 273.785156 78 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="275.785156" y="90"/>
|
||||
<use xlink:href="#glyph1-2" x="280.490234" y="90"/>
|
||||
<use xlink:href="#glyph1-3" x="285.423828" y="90"/>
|
||||
<use xlink:href="#glyph1-4" x="292.777344" y="90"/>
|
||||
<use xlink:href="#glyph1-5" x="299.375" y="90"/>
|
||||
<use xlink:href="#glyph1-6" x="306.757812" y="90"/>
|
||||
<use xlink:href="#glyph1-7" x="310.091797" y="90"/>
|
||||
</g>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 630.230469 78 L 643.714844 78 L 643.714844 92 L 630.230469 92 Z M 630.230469 78 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,40%,40%);fill-opacity:1;" d="M 643.714844 78 L 803.261719 78 L 803.261719 92 L 643.714844 92 Z M 643.714844 78 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 803.261719 78 L 817.328125 78 L 817.328125 92 L 803.261719 92 Z M 803.261719 78 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,90%,50%);fill-opacity:1;" d="M 817.328125 78 L 869.75 78 L 869.75 92 L 817.328125 92 Z M 817.328125 78 "/>
|
||||
<g clip-path="url(#clip4)" clip-rule="nonzero">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="819.328125" y="90"/>
|
||||
<use xlink:href="#glyph1-2" x="824.033203" y="90"/>
|
||||
<use xlink:href="#glyph1-3" x="828.966797" y="90"/>
|
||||
<use xlink:href="#glyph1-4" x="836.320312" y="90"/>
|
||||
<use xlink:href="#glyph1-5" x="842.917969" y="90"/>
|
||||
<use xlink:href="#glyph1-6" x="850.300781" y="90"/>
|
||||
<use xlink:href="#glyph1-7" x="853.634766" y="90"/>
|
||||
</g>
|
||||
</g>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 869.75 78 L 871.902344 78 L 871.902344 92 L 869.75 92 Z M 869.75 78 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,40%,40%);fill-opacity:1;" d="M 871.902344 78 L 956.558594 78 L 956.558594 92 L 871.902344 92 Z M 871.902344 78 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 956.554688 78 L 964.960938 78 L 964.960938 92 L 956.554688 92 Z M 956.554688 78 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,90%,50%);fill-opacity:1;" d="M 964.960938 78 L 1006.179688 78 L 1006.179688 92 L 964.960938 92 Z M 964.960938 78 "/>
|
||||
<g clip-path="url(#clip5)" clip-rule="nonzero">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph1-1" x="966.960938" y="90"/>
|
||||
<use xlink:href="#glyph1-2" x="971.666016" y="90"/>
|
||||
<use xlink:href="#glyph1-3" x="976.599609" y="90"/>
|
||||
<use xlink:href="#glyph1-4" x="983.953125" y="90"/>
|
||||
<use xlink:href="#glyph1-5" x="990.550781" y="90"/>
|
||||
<use xlink:href="#glyph1-6" x="997.933594" y="90"/>
|
||||
<use xlink:href="#glyph1-7" x="1001.267578" y="90"/>
|
||||
</g>
|
||||
</g>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 1006.179688 78 L 1008.5625 78 L 1008.5625 92 L 1006.179688 92 Z M 1006.179688 78 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,40%,40%);fill-opacity:1;" d="M 1008.5625 78 L 1083.6875 78 L 1083.6875 92 L 1008.5625 92 Z M 1008.5625 78 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,80%,40%);fill-opacity:1;" d="M 1083.6875 78 L 1096.113281 78 L 1096.113281 92 L 1083.6875 92 Z M 1083.6875 78 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(40%,40%,40%);fill-opacity:1;" d="M 1096.117188 78 L 1093.667969 78 L 1093.667969 92 L 1096.117188 92 Z M 1096.117188 78 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 431.214844 81 L 431.214844 75 "/>
|
||||
<g clip-path="url(#clip6)" clip-rule="nonzero">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="433.214844" y="76"/>
|
||||
<use xlink:href="#glyph2-2" x="437.949219" y="76"/>
|
||||
<use xlink:href="#glyph2-3" x="440.492188" y="76"/>
|
||||
<use xlink:href="#glyph2-2" x="447.195312" y="76"/>
|
||||
<use xlink:href="#glyph2-4" x="449.738281" y="76"/>
|
||||
</g>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 852.011719 81 L 852.011719 75 "/>
|
||||
<g clip-path="url(#clip7)" clip-rule="nonzero">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="854.011719" y="76"/>
|
||||
<use xlink:href="#glyph2-2" x="858.746094" y="76"/>
|
||||
<use xlink:href="#glyph2-3" x="861.289062" y="76"/>
|
||||
<use xlink:href="#glyph2-2" x="867.992188" y="76"/>
|
||||
<use xlink:href="#glyph2-5" x="870.535156" y="76"/>
|
||||
</g>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 991.652344 81 L 991.652344 75 "/>
|
||||
<g clip-path="url(#clip8)" clip-rule="nonzero">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-1" x="993.652344" y="76"/>
|
||||
<use xlink:href="#glyph2-2" x="998.386719" y="76"/>
|
||||
<use xlink:href="#glyph2-3" x="1000.929688" y="76"/>
|
||||
<use xlink:href="#glyph2-2" x="1007.632812" y="76"/>
|
||||
<use xlink:href="#glyph2-6" x="1010.175781" y="76"/>
|
||||
</g>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(40%,80%,40%);stroke-opacity:1;stroke-miterlimit:10;" d="M 117.976562 46 L 117.976562 92 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 736.246094 49 L 736.246094 43 "/>
|
||||
<g clip-path="url(#clip9)" clip-rule="nonzero">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-7" x="738.246094" y="44"/>
|
||||
<use xlink:href="#glyph2-2" x="742.980469" y="44"/>
|
||||
<use xlink:href="#glyph2-3" x="745.523438" y="44"/>
|
||||
<use xlink:href="#glyph2-2" x="752.226562" y="44"/>
|
||||
<use xlink:href="#glyph2-4" x="754.769531" y="44"/>
|
||||
</g>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 935.078125 49 L 935.078125 43 "/>
|
||||
<g clip-path="url(#clip10)" clip-rule="nonzero">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-7" x="937.078125" y="44"/>
|
||||
<use xlink:href="#glyph2-2" x="941.8125" y="44"/>
|
||||
<use xlink:href="#glyph2-3" x="944.355469" y="44"/>
|
||||
<use xlink:href="#glyph2-2" x="951.058594" y="44"/>
|
||||
<use xlink:href="#glyph2-5" x="953.601562" y="44"/>
|
||||
</g>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1045.515625 49 L 1045.515625 43 "/>
|
||||
<g clip-path="url(#clip11)" clip-rule="nonzero">
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-7" x="1047.515625" y="44"/>
|
||||
<use xlink:href="#glyph2-2" x="1052.25" y="44"/>
|
||||
<use xlink:href="#glyph2-3" x="1054.792969" y="44"/>
|
||||
<use xlink:href="#glyph2-2" x="1061.496094" y="44"/>
|
||||
<use xlink:href="#glyph2-6" x="1064.039062" y="44"/>
|
||||
</g>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 78.671875 36 L 74.671875 36 L 74.671875 96 L 78.671875 96 "/>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1101.464844 36 L 1105.464844 36 L 1105.464844 96 L 1101.464844 96 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph2-8" x="76.671875" y="44"/>
|
||||
<use xlink:href="#glyph2-9" x="81.75" y="44"/>
|
||||
<use xlink:href="#glyph2-10" x="86.644531" y="44"/>
|
||||
<use xlink:href="#glyph2-11" x="89.78125" y="44"/>
|
||||
</g>
|
||||
<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(40%,80%,40%);stroke-opacity:1;stroke-miterlimit:10;" d="M 10.984375 46 L 10.984375 60 "/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 46 KiB |
3
examples/both/dune
Normal file
3
examples/both/dune
Normal file
@ -0,0 +1,3 @@
|
||||
(executable
|
||||
(name main)
|
||||
(libraries eio_main))
|
7
examples/both/main.ml
Normal file
7
examples/both/main.ml
Normal file
@ -0,0 +1,7 @@
|
||||
open Eio.Std
|
||||
|
||||
let () =
|
||||
Eio_main.run @@ fun _env ->
|
||||
Fiber.both
|
||||
(fun () -> for x = 1 to 3 do traceln "x = %d" x; Fiber.yield () done)
|
||||
(fun () -> for y = 1 to 3 do traceln "y = %d" y; Fiber.yield () done)
|
@ -8,6 +8,7 @@ let traceln_mutex = Mutex.create ()
|
||||
|
||||
let default_traceln ?__POS__:pos fmt =
|
||||
let k go =
|
||||
Trace.with_span "traceln" @@ fun () ->
|
||||
let b = Buffer.create 512 in
|
||||
let f = Format.formatter_of_buffer b in
|
||||
go f;
|
||||
|
@ -25,3 +25,11 @@ let await t op id =
|
||||
in
|
||||
Trace.get id;
|
||||
x
|
||||
|
||||
let await_protect t op id =
|
||||
let x =
|
||||
Suspend.enter_unchecked op @@ fun _ctx enqueue ->
|
||||
t.wake <- (fun x -> t.wake <- ignore; enqueue x)
|
||||
in
|
||||
Trace.get id;
|
||||
x
|
||||
|
@ -91,7 +91,7 @@ let rec await_idle t =
|
||||
(* Wait for fibers to finish: *)
|
||||
while t.fibers > 0 do
|
||||
Trace.try_get t.cancel.id;
|
||||
Single_waiter.await t.waiter "Switch.await_idle" t.cancel.id
|
||||
Single_waiter.await_protect t.waiter "Switch.await_idle" t.cancel.id
|
||||
done;
|
||||
(* Call on_release handlers: *)
|
||||
let queue = Lwt_dllist.create () in
|
||||
@ -102,15 +102,13 @@ let rec await_idle t =
|
||||
| None -> await_idle t
|
||||
| Some fn ->
|
||||
begin
|
||||
try fn () with
|
||||
try Cancel.protect fn with
|
||||
| ex -> fail t ex
|
||||
end;
|
||||
release ()
|
||||
in
|
||||
release ()
|
||||
|
||||
let await_idle t = Cancel.protect (fun _ -> await_idle t)
|
||||
|
||||
let maybe_raise_exs t =
|
||||
match t.exs with
|
||||
| None -> ()
|
||||
|
@ -50,9 +50,11 @@ val sleep : float -> unit
|
||||
without having to plumb {!Eio.Stdenv.mono_clock} through your code.
|
||||
It can also be used in programs that don't care about tracking determinism. *)
|
||||
|
||||
val run_in_systhread : (unit -> 'a) -> 'a
|
||||
val run_in_systhread : ?label:string -> (unit -> 'a) -> 'a
|
||||
(** [run_in_systhread fn] runs the function [fn] in a newly created system thread (a {! Thread.t}).
|
||||
This allows blocking calls to be made non-blocking. *)
|
||||
This allows blocking calls to be made non-blocking.
|
||||
|
||||
@param label The operation name to use in trace output. *)
|
||||
|
||||
val pipe : Switch.t -> source_ty r * sink_ty r
|
||||
(** [pipe sw] returns a connected pair of flows [src] and [sink]. Data written to [sink]
|
||||
|
@ -51,7 +51,7 @@ let getnameinfo (sockaddr : Eio.Net.Sockaddr.t) =
|
||||
| `Udp _ -> [Unix.NI_DGRAM]
|
||||
in
|
||||
let sockaddr = sockaddr_to_unix sockaddr in
|
||||
Private.run_in_systhread (fun () ->
|
||||
Private.run_in_systhread ~label:"getnameinfo" (fun () ->
|
||||
let Unix.{ni_hostname; ni_service} = Unix.getnameinfo sockaddr options in
|
||||
(ni_hostname, ni_service))
|
||||
|
||||
|
@ -17,12 +17,7 @@ let pipe sw = Effect.perform (Pipe sw)
|
||||
module Rcfd = Rcfd
|
||||
module Fork_action = Fork_action
|
||||
|
||||
let run_in_systhread fn =
|
||||
let f fiber enqueue =
|
||||
match Eio.Private.Fiber_context.get_error fiber with
|
||||
| Some err -> enqueue (Error err)
|
||||
| None ->
|
||||
let _t : Thread.t = Thread.create (fun () -> enqueue (try Ok (fn ()) with exn -> Error exn)) () in
|
||||
()
|
||||
in
|
||||
Effect.perform (Eio.Private.Effects.Suspend f)
|
||||
let run_in_systhread ?(label="systhread") fn =
|
||||
Eio.Private.Suspend.enter label @@ fun _ctx enqueue ->
|
||||
let _t : Thread.t = Thread.create (fun () -> enqueue (try Ok (fn ()) with exn -> Error exn)) () in
|
||||
()
|
||||
|
@ -97,6 +97,9 @@ let get t =
|
||||
put t;
|
||||
None
|
||||
|
||||
let close_fd fd =
|
||||
Eio.Private.Trace.with_span "close" (fun () -> Unix.close fd)
|
||||
|
||||
(* Note: we could simplify this a bit by incrementing [t.ops], as [remove] does.
|
||||
However, that makes dscheck too slow. *)
|
||||
let close t =
|
||||
@ -105,14 +108,14 @@ let close t =
|
||||
(* Another caller closed [t] before us. *)
|
||||
false
|
||||
| Open fd as prev ->
|
||||
let next = Closing (fun () -> Unix.close fd) in
|
||||
let next = Closing (fun () -> close_fd fd) in
|
||||
if Atomic.compare_and_set t.fd prev next then (
|
||||
(* We just transitioned from [open] to [closing/users] or [closing/no-users].
|
||||
We are now the closer. *)
|
||||
if Atomic.get t.ops = 0 && Atomic.compare_and_set t.fd next fully_closed then (
|
||||
(* We were in [closing/no-users] and are now in [closing/closed].
|
||||
We own the FD (and our original callback will never be called). *)
|
||||
Unix.close fd
|
||||
close_fd fd
|
||||
) else (
|
||||
(* The [next] callback remained installed and there is nothing left for us to do:
|
||||
- If [t.ops] was non-zero, another thread will eventually return it to zero and call our callback.
|
||||
|
@ -341,11 +341,11 @@ let lseek fd off cmd =
|
||||
|
||||
let fsync fd =
|
||||
(* todo: https://github.com/ocaml-multicore/ocaml-uring/pull/103 *)
|
||||
Eio_unix.run_in_systhread @@ fun () ->
|
||||
Eio_unix.run_in_systhread ~label:"fsync" @@ fun () ->
|
||||
Fd.use_exn "fsync" fd Unix.fsync
|
||||
|
||||
let ftruncate fd len =
|
||||
Eio_unix.run_in_systhread @@ fun () ->
|
||||
Eio_unix.run_in_systhread ~label:"ftruncate" @@ fun () ->
|
||||
Fd.use_exn "ftruncate" fd @@ fun fd ->
|
||||
Unix.LargeFile.ftruncate fd (Optint.Int63.to_int64 len)
|
||||
|
||||
@ -479,7 +479,7 @@ let read_dir fd =
|
||||
let files = List.filter (function ".." | "." -> false | _ -> true) files in
|
||||
read_all (files @ acc) fd
|
||||
in
|
||||
Eio_unix.run_in_systhread (fun () -> read_all [] fd)
|
||||
Eio_unix.run_in_systhread ~label:"read_dir" (fun () -> read_all [] fd)
|
||||
|
||||
(* https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml *)
|
||||
let getaddrinfo ~service node =
|
||||
@ -494,7 +494,7 @@ let getaddrinfo ~service node =
|
||||
| _ -> None)
|
||||
| _ -> None
|
||||
in
|
||||
Eio_unix.run_in_systhread @@ fun () ->
|
||||
Eio_unix.run_in_systhread ~label:"getaddrinfo" @@ fun () ->
|
||||
Unix.getaddrinfo node service []
|
||||
|> List.filter_map to_eio_sockaddr_t
|
||||
|
||||
|
@ -110,11 +110,14 @@ let enter op fn =
|
||||
Trace.suspend_fiber op;
|
||||
Effect.perform (Enter fn)
|
||||
|
||||
let submit uring =
|
||||
Trace.with_span "submit" (fun () -> Uring.submit uring)
|
||||
|
||||
let rec enqueue_job t fn =
|
||||
match fn () with
|
||||
| Some _ as r -> r
|
||||
| None ->
|
||||
if Uring.submit t.uring > 0 then enqueue_job t fn
|
||||
if submit t.uring > 0 then enqueue_job t fn
|
||||
else None
|
||||
|
||||
(* Cancellations always come from the same domain, so no need to send wake events here. *)
|
||||
@ -219,7 +222,7 @@ let rec schedule ({run_q; sleep_q; mem_q; uring; _} as st) : [`Exit_scheduler] =
|
||||
Lf_queue.push run_q IO; (* Re-inject IO job in the run queue *)
|
||||
handle_complete st ~runnable result
|
||||
| None ->
|
||||
ignore (Uring.submit uring : int);
|
||||
ignore (submit uring : int);
|
||||
let timeout =
|
||||
match next_due with
|
||||
| `Wait_until time ->
|
||||
|
@ -16,7 +16,7 @@ module Trace = Eio.Private.Trace
|
||||
module Fiber_context = Eio.Private.Fiber_context
|
||||
|
||||
(* todo: keeping a pool of workers is probably faster *)
|
||||
let in_worker_thread = Eio_unix.run_in_systhread
|
||||
let in_worker_thread label = Eio_unix.run_in_systhread ~label
|
||||
|
||||
let await_readable op fd =
|
||||
Fd.use_exn "await_readable" fd @@ fun fd ->
|
||||
@ -115,11 +115,11 @@ let getrandom { Cstruct.buffer; off; len } =
|
||||
else
|
||||
loop (n + eio_getrandom buffer (off + n) (len - n))
|
||||
in
|
||||
in_worker_thread @@ fun () ->
|
||||
in_worker_thread "getrandom" @@ fun () ->
|
||||
loop 0
|
||||
|
||||
let realpath path =
|
||||
in_worker_thread @@ fun () ->
|
||||
in_worker_thread "realpath" @@ fun () ->
|
||||
Unix.realpath path
|
||||
|
||||
let read_entries h =
|
||||
@ -132,7 +132,7 @@ let read_entries h =
|
||||
aux []
|
||||
|
||||
let readdir path =
|
||||
in_worker_thread @@ fun () ->
|
||||
in_worker_thread "readdir" @@ fun () ->
|
||||
let h = Unix.opendir path in
|
||||
match read_entries h with
|
||||
| r -> Unix.closedir h; r
|
||||
@ -201,21 +201,21 @@ external eio_openat : Unix.file_descr -> string -> Open_flags.t -> int -> Unix.f
|
||||
let openat ?dirfd ~sw ~mode path flags =
|
||||
with_dirfd "openat" dirfd @@ fun dirfd ->
|
||||
Switch.check sw;
|
||||
in_worker_thread (fun () -> eio_openat dirfd path Open_flags.(flags + cloexec + nonblock) mode)
|
||||
in_worker_thread "openat" (fun () -> eio_openat dirfd path Open_flags.(flags + cloexec + nonblock) mode)
|
||||
|> Fd.of_unix ~sw ~blocking:false ~close_unix:true
|
||||
|
||||
external eio_mkdirat : Unix.file_descr -> string -> Unix.file_perm -> unit = "caml_eio_posix_mkdirat"
|
||||
|
||||
let mkdir ?dirfd ~mode path =
|
||||
with_dirfd "mkdirat" dirfd @@ fun dirfd ->
|
||||
in_worker_thread @@ fun () ->
|
||||
in_worker_thread "mkdir" @@ fun () ->
|
||||
eio_mkdirat dirfd path mode
|
||||
|
||||
external eio_unlinkat : Unix.file_descr -> string -> bool -> unit = "caml_eio_posix_unlinkat"
|
||||
|
||||
let unlink ?dirfd ~dir path =
|
||||
with_dirfd "unlink" dirfd @@ fun dirfd ->
|
||||
in_worker_thread @@ fun () ->
|
||||
in_worker_thread "unlink" @@ fun () ->
|
||||
eio_unlinkat dirfd path dir
|
||||
|
||||
external eio_renameat : Unix.file_descr -> string -> Unix.file_descr -> string -> unit = "caml_eio_posix_renameat"
|
||||
@ -223,7 +223,7 @@ external eio_renameat : Unix.file_descr -> string -> Unix.file_descr -> string -
|
||||
let rename ?old_dir old_path ?new_dir new_path =
|
||||
with_dirfd "rename-old" old_dir @@ fun old_dir ->
|
||||
with_dirfd "rename-new" new_dir @@ fun new_dir ->
|
||||
in_worker_thread @@ fun () ->
|
||||
in_worker_thread "rename" @@ fun () ->
|
||||
eio_renameat old_dir old_path new_dir new_path
|
||||
|
||||
type stat
|
||||
@ -236,7 +236,7 @@ let fstat ~buf fd =
|
||||
eio_fstat buf fd
|
||||
|
||||
let fstatat ~buf ?dirfd ~follow path =
|
||||
in_worker_thread @@ fun () ->
|
||||
in_worker_thread "fstat" @@ fun () ->
|
||||
let flags = if follow then 0 else Config.at_symlink_nofollow in
|
||||
with_dirfd "fstatat" dirfd @@ fun dirfd ->
|
||||
eio_fstatat buf dirfd path flags
|
||||
@ -273,11 +273,11 @@ let lseek fd off cmd =
|
||||
|> Optint.Int63.of_int64
|
||||
|
||||
let fsync fd =
|
||||
Eio_unix.run_in_systhread @@ fun () ->
|
||||
Eio_unix.run_in_systhread ~label:"fsync" @@ fun () ->
|
||||
Fd.use_exn "fsync" fd Unix.fsync
|
||||
|
||||
let ftruncate fd len =
|
||||
Eio_unix.run_in_systhread @@ fun () ->
|
||||
Eio_unix.run_in_systhread ~label:"ftruncate" @@ fun () ->
|
||||
Fd.use_exn "ftruncate" fd @@ fun fd ->
|
||||
Unix.LargeFile.ftruncate fd (Optint.Int63.to_int64 len)
|
||||
|
||||
|
@ -94,7 +94,7 @@ let getaddrinfo ~service node =
|
||||
| _ -> None)
|
||||
| _ -> None
|
||||
in
|
||||
Err.run Eio_unix.run_in_systhread @@ fun () ->
|
||||
Err.run (Eio_unix.run_in_systhread ~label:"getaddrinfo") @@ fun () ->
|
||||
let rec aux () =
|
||||
try
|
||||
Unix.getaddrinfo node service []
|
||||
|
@ -96,7 +96,7 @@ let getaddrinfo ~service node =
|
||||
| _ -> None)
|
||||
| _ -> None
|
||||
in
|
||||
Err.run Eio_unix.run_in_systhread @@ fun () ->
|
||||
Err.run (Eio_unix.run_in_systhread ~label:"getaddrinfo") @@ fun () ->
|
||||
let rec aux () =
|
||||
try
|
||||
Unix.getaddrinfo node service []
|
||||
|
Loading…
x
Reference in New Issue
Block a user