changeset 16:b802c7ffb249

add Slide
author mir3636
date Wed, 17 Jan 2018 13:26:35 +0900
parents 4c7666f60b9b
children 016ee461da2a
files Slide/fig/clang_llvm_structure.pdf Slide/fig/clang_llvm_structure.svg Slide/fig/context.svg Slide/fig/generate_context.graffle Slide/fig/generate_context.svg Slide/prosym.html Slide/prosym.md Slide/slide_map.xmind
diffstat 8 files changed, 1590 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
Binary file Slide/fig/clang_llvm_structure.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Slide/fig/clang_llvm_structure.svg	Wed Jan 17 13:26:35 2018 +0900
@@ -0,0 +1,545 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="790.5pt" height="463.5pt" viewBox="0 0 790.5 463.5" version="1.1">
+<defs>
+<g>
+<symbol overflow="visible" id="glyph0-0">
+<path style="stroke:none;" d="M 0.78125 0 L 0.78125 -17.21875 L 14.4375 -17.21875 L 14.4375 0 Z M 12.28125 -2.15625 L 12.28125 -15.0625 L 2.9375 -15.0625 L 2.9375 -2.15625 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-1">
+<path style="stroke:none;" d="M 1.828125 -17.21875 L 4.15625 -17.21875 L 4.15625 -2.046875 L 12.875 -2.046875 L 12.875 0 L 1.828125 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-2">
+<path style="stroke:none;" d="M 3.1875 -17.21875 L 8.140625 -2.5625 L 13.015625 -17.21875 L 15.640625 -17.21875 L 9.359375 0 L 6.875 0 L 0.609375 -17.21875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-3">
+<path style="stroke:none;" d="M 1.765625 -17.21875 L 5.109375 -17.21875 L 10.0625 -2.65625 L 14.96875 -17.21875 L 18.265625 -17.21875 L 18.265625 0 L 16.0625 0 L 16.0625 -10.15625 C 16.0625 -10.507812 16.066406 -11.09375 16.078125 -11.90625 C 16.097656 -12.71875 16.109375 -13.585938 16.109375 -14.515625 L 11.1875 0 L 8.890625 0 L 3.9375 -14.515625 L 3.9375 -14 C 3.9375 -13.570312 3.945312 -12.925781 3.96875 -12.0625 C 3.988281 -11.195312 4 -10.5625 4 -10.15625 L 4 0 L 1.765625 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-4">
+<path style="stroke:none;" d=""/>
+</symbol>
+<symbol overflow="visible" id="glyph0-5">
+<path style="stroke:none;" d="M 2.359375 -17.21875 L 4.71875 -17.21875 L 4.71875 0 L 2.359375 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-6">
+<path style="stroke:none;" d="M 9.828125 -9.328125 C 10.921875 -9.328125 11.785156 -9.546875 12.421875 -9.984375 C 13.066406 -10.421875 13.390625 -11.210938 13.390625 -12.359375 C 13.390625 -13.578125 12.941406 -14.410156 12.046875 -14.859375 C 11.566406 -15.097656 10.929688 -15.21875 10.140625 -15.21875 L 4.4375 -15.21875 L 4.4375 -9.328125 Z M 2.109375 -17.21875 L 10.078125 -17.21875 C 11.390625 -17.21875 12.472656 -17.023438 13.328125 -16.640625 C 14.941406 -15.910156 15.75 -14.554688 15.75 -12.578125 C 15.75 -11.546875 15.535156 -10.703125 15.109375 -10.046875 C 14.679688 -9.390625 14.085938 -8.863281 13.328125 -8.46875 C 13.992188 -8.1875 14.5 -7.820312 14.84375 -7.375 C 15.1875 -6.9375 15.375 -6.21875 15.40625 -5.21875 L 15.5 -2.90625 C 15.519531 -2.25 15.570312 -1.757812 15.65625 -1.4375 C 15.800781 -0.894531 16.050781 -0.546875 16.40625 -0.390625 L 16.40625 0 L 13.546875 0 C 13.472656 -0.144531 13.410156 -0.332031 13.359375 -0.5625 C 13.316406 -0.800781 13.28125 -1.257812 13.25 -1.9375 L 13.109375 -4.8125 C 13.046875 -5.9375 12.625 -6.6875 11.84375 -7.0625 C 11.40625 -7.28125 10.707031 -7.390625 9.75 -7.390625 L 4.4375 -7.390625 L 4.4375 0 L 2.109375 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-7">
+<path style="stroke:none;" d="M 10.671875 -7.0625 L 8.046875 -14.65625 L 5.28125 -7.0625 Z M 6.828125 -17.21875 L 9.46875 -17.21875 L 15.71875 0 L 13.15625 0 L 11.421875 -5.15625 L 4.609375 -5.15625 L 2.75 0 L 0.359375 0 Z M 8.046875 -17.21875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-8">
+<path style="stroke:none;" d="M 2.796875 -3.9375 C 2.859375 -3.238281 3.035156 -2.703125 3.328125 -2.328125 C 3.859375 -1.640625 4.78125 -1.296875 6.09375 -1.296875 C 6.875 -1.296875 7.5625 -1.46875 8.15625 -1.8125 C 8.75 -2.15625 9.046875 -2.679688 9.046875 -3.390625 C 9.046875 -3.929688 8.804688 -4.34375 8.328125 -4.625 C 8.023438 -4.789062 7.425781 -4.988281 6.53125 -5.21875 L 4.859375 -5.640625 C 3.785156 -5.898438 2.992188 -6.195312 2.484375 -6.53125 C 1.578125 -7.101562 1.125 -7.890625 1.125 -8.890625 C 1.125 -10.078125 1.550781 -11.035156 2.40625 -11.765625 C 3.257812 -12.503906 4.410156 -12.875 5.859375 -12.875 C 7.753906 -12.875 9.117188 -12.320312 9.953125 -11.21875 C 10.472656 -10.507812 10.726562 -9.75 10.71875 -8.9375 L 8.71875 -8.9375 C 8.675781 -9.414062 8.507812 -9.851562 8.21875 -10.25 C 7.726562 -10.800781 6.890625 -11.078125 5.703125 -11.078125 C 4.898438 -11.078125 4.289062 -10.921875 3.875 -10.609375 C 3.46875 -10.304688 3.265625 -9.90625 3.265625 -9.40625 C 3.265625 -8.863281 3.535156 -8.425781 4.078125 -8.09375 C 4.390625 -7.90625 4.851562 -7.734375 5.46875 -7.578125 L 6.859375 -7.25 C 8.367188 -6.875 9.382812 -6.515625 9.90625 -6.171875 C 10.726562 -5.640625 11.140625 -4.796875 11.140625 -3.640625 C 11.140625 -2.515625 10.710938 -1.546875 9.859375 -0.734375 C 9.015625 0.078125 7.722656 0.484375 5.984375 0.484375 C 4.117188 0.484375 2.796875 0.0625 2.015625 -0.78125 C 1.242188 -1.632812 0.832031 -2.6875 0.78125 -3.9375 Z M 5.921875 -12.859375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-9">
+<path style="stroke:none;" d="M 6.78125 -12.828125 C 7.664062 -12.828125 8.523438 -12.617188 9.359375 -12.203125 C 10.203125 -11.785156 10.84375 -11.242188 11.28125 -10.578125 C 11.695312 -9.953125 11.976562 -9.21875 12.125 -8.375 C 12.25 -7.789062 12.3125 -6.867188 12.3125 -5.609375 L 3.109375 -5.609375 C 3.148438 -4.328125 3.453125 -3.300781 4.015625 -2.53125 C 4.578125 -1.769531 5.445312 -1.390625 6.625 -1.390625 C 7.726562 -1.390625 8.609375 -1.75 9.265625 -2.46875 C 9.640625 -2.894531 9.90625 -3.382812 10.0625 -3.9375 L 12.125 -3.9375 C 12.070312 -3.476562 11.890625 -2.960938 11.578125 -2.390625 C 11.273438 -1.828125 10.929688 -1.367188 10.546875 -1.015625 C 9.910156 -0.390625 9.117188 0.0351562 8.171875 0.265625 C 7.660156 0.390625 7.085938 0.453125 6.453125 0.453125 C 4.890625 0.453125 3.5625 -0.113281 2.46875 -1.25 C 1.382812 -2.394531 0.84375 -3.988281 0.84375 -6.03125 C 0.84375 -8.050781 1.390625 -9.6875 2.484375 -10.9375 C 3.578125 -12.195312 5.007812 -12.828125 6.78125 -12.828125 Z M 10.140625 -7.28125 C 10.054688 -8.195312 9.859375 -8.925781 9.546875 -9.46875 C 8.960938 -10.488281 7.992188 -11 6.640625 -11 C 5.671875 -11 4.859375 -10.644531 4.203125 -9.9375 C 3.546875 -9.238281 3.203125 -8.351562 3.171875 -7.28125 Z M 6.578125 -12.859375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-10">
+<path style="stroke:none;" d="M 1.546875 -12.546875 L 3.640625 -12.546875 L 3.640625 -10.765625 C 4.140625 -11.390625 4.59375 -11.84375 5 -12.125 C 5.6875 -12.59375 6.472656 -12.828125 7.359375 -12.828125 C 8.359375 -12.828125 9.164062 -12.582031 9.78125 -12.09375 C 10.125 -11.8125 10.4375 -11.398438 10.71875 -10.859375 C 11.1875 -11.523438 11.734375 -12.019531 12.359375 -12.34375 C 12.992188 -12.664062 13.707031 -12.828125 14.5 -12.828125 C 16.1875 -12.828125 17.332031 -12.21875 17.9375 -11 C 18.269531 -10.34375 18.4375 -9.460938 18.4375 -8.359375 L 18.4375 0 L 16.25 0 L 16.25 -8.71875 C 16.25 -9.550781 16.035156 -10.125 15.609375 -10.4375 C 15.191406 -10.75 14.6875 -10.90625 14.09375 -10.90625 C 13.257812 -10.90625 12.539062 -10.628906 11.9375 -10.078125 C 11.34375 -9.523438 11.046875 -8.597656 11.046875 -7.296875 L 11.046875 0 L 8.90625 0 L 8.90625 -8.1875 C 8.90625 -9.039062 8.804688 -9.664062 8.609375 -10.0625 C 8.285156 -10.644531 7.6875 -10.9375 6.8125 -10.9375 C 6.007812 -10.9375 5.28125 -10.625 4.625 -10 C 3.976562 -9.382812 3.65625 -8.269531 3.65625 -6.65625 L 3.65625 0 L 1.546875 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-11">
+<path style="stroke:none;" d="M 1.390625 -17.28125 L 3.4375 -17.28125 L 3.4375 -11.03125 C 3.894531 -11.632812 4.441406 -12.09375 5.078125 -12.40625 C 5.722656 -12.71875 6.421875 -12.875 7.171875 -12.875 C 8.734375 -12.875 10 -12.335938 10.96875 -11.265625 C 11.945312 -10.191406 12.4375 -8.609375 12.4375 -6.515625 C 12.4375 -4.535156 11.953125 -2.882812 10.984375 -1.5625 C 10.023438 -0.25 8.695312 0.40625 7 0.40625 C 6.039062 0.40625 5.234375 0.171875 4.578125 -0.296875 C 4.191406 -0.566406 3.773438 -1.003906 3.328125 -1.609375 L 3.328125 0 L 1.390625 0 Z M 6.875 -1.46875 C 8.007812 -1.46875 8.859375 -1.921875 9.421875 -2.828125 C 9.992188 -3.734375 10.28125 -4.925781 10.28125 -6.40625 C 10.28125 -7.726562 9.992188 -8.820312 9.421875 -9.6875 C 8.859375 -10.5625 8.023438 -11 6.921875 -11 C 5.960938 -11 5.117188 -10.640625 4.390625 -9.921875 C 3.671875 -9.210938 3.3125 -8.039062 3.3125 -6.40625 C 3.3125 -5.226562 3.460938 -4.273438 3.765625 -3.546875 C 4.316406 -2.160156 5.351562 -1.46875 6.875 -1.46875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-12">
+<path style="stroke:none;" d="M 1.609375 -17.21875 L 3.71875 -17.21875 L 3.71875 0 L 1.609375 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-13">
+<path style="stroke:none;" d="M 9.390625 -12.546875 L 11.71875 -12.546875 C 11.425781 -11.742188 10.765625 -9.910156 9.734375 -7.046875 C 8.972656 -4.890625 8.332031 -3.128906 7.8125 -1.765625 C 6.59375 1.429688 5.734375 3.378906 5.234375 4.078125 C 4.734375 4.785156 3.875 5.140625 2.65625 5.140625 C 2.363281 5.140625 2.132812 5.128906 1.96875 5.109375 C 1.8125 5.085938 1.617188 5.046875 1.390625 4.984375 L 1.390625 3.0625 C 1.753906 3.164062 2.015625 3.226562 2.171875 3.25 C 2.335938 3.269531 2.484375 3.28125 2.609375 3.28125 C 3.003906 3.28125 3.289062 3.210938 3.46875 3.078125 C 3.65625 2.953125 3.8125 2.796875 3.9375 2.609375 C 3.976562 2.546875 4.117188 2.222656 4.359375 1.640625 C 4.597656 1.066406 4.773438 0.640625 4.890625 0.359375 L 0.25 -12.546875 L 2.640625 -12.546875 L 6 -2.328125 Z M 5.984375 -12.859375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-14">
+<path style="stroke:none;" d="M 9.078125 -17.6875 C 11.265625 -17.6875 12.957031 -17.109375 14.15625 -15.953125 C 15.363281 -14.804688 16.03125 -13.503906 16.15625 -12.046875 L 13.890625 -12.046875 C 13.628906 -13.160156 13.113281 -14.039062 12.34375 -14.6875 C 11.570312 -15.332031 10.492188 -15.65625 9.109375 -15.65625 C 7.410156 -15.65625 6.039062 -15.054688 5 -13.859375 C 3.957031 -12.671875 3.4375 -10.847656 3.4375 -8.390625 C 3.4375 -6.378906 3.90625 -4.742188 4.84375 -3.484375 C 5.789062 -2.234375 7.195312 -1.609375 9.0625 -1.609375 C 10.78125 -1.609375 12.085938 -2.269531 12.984375 -3.59375 C 13.460938 -4.28125 13.816406 -5.191406 14.046875 -6.328125 L 16.328125 -6.328125 C 16.117188 -4.515625 15.445312 -2.992188 14.3125 -1.765625 C 12.945312 -0.285156 11.101562 0.453125 8.78125 0.453125 C 6.78125 0.453125 5.097656 -0.15625 3.734375 -1.375 C 1.953125 -2.976562 1.0625 -5.453125 1.0625 -8.796875 C 1.0625 -11.328125 1.734375 -13.40625 3.078125 -15.03125 C 4.523438 -16.800781 6.523438 -17.6875 9.078125 -17.6875 Z M 8.609375 -17.6875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-15">
+<path style="stroke:none;" d="M 6.53125 -1.359375 C 7.925781 -1.359375 8.882812 -1.882812 9.40625 -2.9375 C 9.925781 -4 10.1875 -5.179688 10.1875 -6.484375 C 10.1875 -7.648438 10 -8.601562 9.625 -9.34375 C 9.03125 -10.5 8.003906 -11.078125 6.546875 -11.078125 C 5.265625 -11.078125 4.328125 -10.582031 3.734375 -9.59375 C 3.148438 -8.613281 2.859375 -7.425781 2.859375 -6.03125 C 2.859375 -4.695312 3.148438 -3.582031 3.734375 -2.6875 C 4.328125 -1.800781 5.257812 -1.359375 6.53125 -1.359375 Z M 6.609375 -12.921875 C 8.222656 -12.921875 9.585938 -12.378906 10.703125 -11.296875 C 11.828125 -10.222656 12.390625 -8.640625 12.390625 -6.546875 C 12.390625 -4.515625 11.894531 -2.835938 10.90625 -1.515625 C 9.925781 -0.203125 8.398438 0.453125 6.328125 0.453125 C 4.597656 0.453125 3.222656 -0.128906 2.203125 -1.296875 C 1.191406 -2.460938 0.6875 -4.03125 0.6875 -6 C 0.6875 -8.113281 1.222656 -9.796875 2.296875 -11.046875 C 3.367188 -12.296875 4.804688 -12.921875 6.609375 -12.921875 Z M 6.546875 -12.859375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-16">
+<path style="stroke:none;" d="M 2.890625 -6.125 C 2.890625 -4.78125 3.171875 -3.65625 3.734375 -2.75 C 4.304688 -1.84375 5.222656 -1.390625 6.484375 -1.390625 C 7.460938 -1.390625 8.265625 -1.8125 8.890625 -2.65625 C 9.515625 -3.5 9.828125 -4.703125 9.828125 -6.265625 C 9.828125 -7.859375 9.503906 -9.035156 8.859375 -9.796875 C 8.210938 -10.554688 7.410156 -10.9375 6.453125 -10.9375 C 5.390625 -10.9375 4.53125 -10.53125 3.875 -9.71875 C 3.21875 -8.90625 2.890625 -7.707031 2.890625 -6.125 Z M 6.0625 -12.78125 C 7.019531 -12.78125 7.820312 -12.578125 8.46875 -12.171875 C 8.84375 -11.929688 9.269531 -11.519531 9.75 -10.9375 L 9.75 -17.28125 L 11.78125 -17.28125 L 11.78125 0 L 9.875 0 L 9.875 -1.75 C 9.382812 -0.976562 8.800781 -0.414062 8.125 -0.0625 C 7.457031 0.28125 6.691406 0.453125 5.828125 0.453125 C 4.429688 0.453125 3.21875 -0.132812 2.1875 -1.3125 C 1.164062 -2.488281 0.65625 -4.054688 0.65625 -6.015625 C 0.65625 -7.835938 1.117188 -9.421875 2.046875 -10.765625 C 2.984375 -12.109375 4.320312 -12.78125 6.0625 -12.78125 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-17">
+<path style="stroke:none;" d="M 5.46875 -17.21875 L 7.25 -17.21875 L 1.78125 0 L 0 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-18">
+<path style="stroke:none;" d="M 1.078125 -5.140625 L 1.078125 -7.109375 L 6.1875 -7.109375 L 6.1875 -12.25 L 8.1875 -12.25 L 8.1875 -7.109375 L 13.296875 -7.109375 L 13.296875 -5.140625 L 8.1875 -5.140625 L 8.1875 0 L 6.1875 0 L 6.1875 -5.140625 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-19">
+<path style="stroke:none;" d="M 9.265625 -17.6875 C 12.296875 -17.6875 14.546875 -16.707031 16.015625 -14.75 C 17.148438 -13.226562 17.71875 -11.28125 17.71875 -8.90625 C 17.71875 -6.332031 17.066406 -4.195312 15.765625 -2.5 C 14.234375 -0.5 12.050781 0.5 9.21875 0.5 C 6.5625 0.5 4.476562 -0.375 2.96875 -2.125 C 1.613281 -3.8125 0.9375 -5.941406 0.9375 -8.515625 C 0.9375 -10.847656 1.515625 -12.84375 2.671875 -14.5 C 4.160156 -16.625 6.359375 -17.6875 9.265625 -17.6875 Z M 9.5 -1.578125 C 11.550781 -1.578125 13.035156 -2.3125 13.953125 -3.78125 C 14.867188 -5.257812 15.328125 -6.957031 15.328125 -8.875 C 15.328125 -10.894531 14.796875 -12.519531 13.734375 -13.75 C 12.679688 -14.988281 11.238281 -15.609375 9.40625 -15.609375 C 7.625 -15.609375 6.171875 -14.992188 5.046875 -13.765625 C 3.921875 -12.546875 3.359375 -10.75 3.359375 -8.375 C 3.359375 -6.46875 3.835938 -4.859375 4.796875 -3.546875 C 5.765625 -2.234375 7.332031 -1.578125 9.5 -1.578125 Z M 9.328125 -17.6875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-20">
+<path style="stroke:none;" d="M 3.65625 -14.78125 L 1.546875 -14.78125 L 1.546875 -17.21875 L 3.65625 -17.21875 Z M -0.453125 3.171875 C 0.492188 3.140625 1.0625 3.054688 1.25 2.921875 C 1.445312 2.785156 1.546875 2.359375 1.546875 1.640625 L 1.546875 -12.5 L 3.65625 -12.5 L 3.65625 1.859375 C 3.65625 2.773438 3.507812 3.460938 3.21875 3.921875 C 2.71875 4.679688 1.78125 5.0625 0.40625 5.0625 C 0.3125 5.0625 0.207031 5.054688 0.09375 5.046875 C -0.0195312 5.046875 -0.203125 5.03125 -0.453125 5 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-21">
+<path style="stroke:none;" d="M 1 -7.765625 L 6.875 -7.765625 L 6.875 -5.609375 L 1 -5.609375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-22">
+<path style="stroke:none;" d="M 6.390625 -12.921875 C 7.804688 -12.921875 8.957031 -12.578125 9.84375 -11.890625 C 10.726562 -11.203125 11.257812 -10.015625 11.4375 -8.328125 L 9.390625 -8.328125 C 9.265625 -9.109375 8.976562 -9.753906 8.53125 -10.265625 C 8.082031 -10.773438 7.367188 -11.03125 6.390625 -11.03125 C 5.046875 -11.03125 4.082031 -10.375 3.5 -9.0625 C 3.125 -8.207031 2.9375 -7.15625 2.9375 -5.90625 C 2.9375 -4.644531 3.203125 -3.582031 3.734375 -2.71875 C 4.265625 -1.863281 5.101562 -1.4375 6.25 -1.4375 C 7.125 -1.4375 7.816406 -1.703125 8.328125 -2.234375 C 8.835938 -2.773438 9.191406 -3.507812 9.390625 -4.4375 L 11.4375 -4.4375 C 11.207031 -2.78125 10.625 -1.566406 9.6875 -0.796875 C 8.75 -0.0234375 7.546875 0.359375 6.078125 0.359375 C 4.441406 0.359375 3.132812 -0.238281 2.15625 -1.4375 C 1.175781 -2.632812 0.6875 -4.132812 0.6875 -5.9375 C 0.6875 -8.132812 1.222656 -9.847656 2.296875 -11.078125 C 3.367188 -12.304688 4.734375 -12.921875 6.390625 -12.921875 Z M 6.0625 -12.859375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-23">
+<path style="stroke:none;" d="M 3.171875 -3.34375 C 3.171875 -2.726562 3.390625 -2.242188 3.828125 -1.890625 C 4.273438 -1.546875 4.804688 -1.375 5.421875 -1.375 C 6.160156 -1.375 6.878906 -1.546875 7.578125 -1.890625 C 8.742188 -2.460938 9.328125 -3.394531 9.328125 -4.6875 L 9.328125 -6.390625 C 9.066406 -6.222656 8.734375 -6.082031 8.328125 -5.96875 C 7.921875 -5.863281 7.523438 -5.789062 7.140625 -5.75 L 5.859375 -5.578125 C 5.097656 -5.472656 4.523438 -5.3125 4.140625 -5.09375 C 3.492188 -4.726562 3.171875 -4.144531 3.171875 -3.34375 Z M 8.28125 -7.609375 C 8.757812 -7.671875 9.082031 -7.875 9.25 -8.21875 C 9.34375 -8.40625 9.390625 -8.675781 9.390625 -9.03125 C 9.390625 -9.75 9.132812 -10.269531 8.625 -10.59375 C 8.113281 -10.914062 7.378906 -11.078125 6.421875 -11.078125 C 5.316406 -11.078125 4.535156 -10.78125 4.078125 -10.1875 C 3.816406 -9.851562 3.648438 -9.363281 3.578125 -8.71875 L 1.609375 -8.71875 C 1.648438 -10.269531 2.148438 -11.347656 3.109375 -11.953125 C 4.078125 -12.554688 5.195312 -12.859375 6.46875 -12.859375 C 7.945312 -12.859375 9.144531 -12.578125 10.0625 -12.015625 C 10.976562 -11.453125 11.4375 -10.578125 11.4375 -9.390625 L 11.4375 -2.15625 C 11.4375 -1.9375 11.476562 -1.757812 11.5625 -1.625 C 11.65625 -1.5 11.847656 -1.4375 12.140625 -1.4375 C 12.234375 -1.4375 12.335938 -1.441406 12.453125 -1.453125 C 12.578125 -1.460938 12.703125 -1.476562 12.828125 -1.5 L 12.828125 0.0625 C 12.503906 0.15625 12.253906 0.210938 12.078125 0.234375 C 11.910156 0.253906 11.675781 0.265625 11.375 0.265625 C 10.65625 0.265625 10.128906 0.0078125 9.796875 -0.5 C 9.628906 -0.78125 9.507812 -1.171875 9.4375 -1.671875 C 9.007812 -1.109375 8.390625 -0.617188 7.578125 -0.203125 C 6.773438 0.210938 5.890625 0.421875 4.921875 0.421875 C 3.753906 0.421875 2.800781 0.0664062 2.0625 -0.640625 C 1.332031 -1.347656 0.96875 -2.234375 0.96875 -3.296875 C 0.96875 -4.460938 1.328125 -5.363281 2.046875 -6 C 2.773438 -6.644531 3.726562 -7.039062 4.90625 -7.1875 Z M 6.53125 -12.859375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-24">
+<path style="stroke:none;" d="M 1.546875 -12.546875 L 3.546875 -12.546875 L 3.546875 -10.765625 C 4.140625 -11.503906 4.769531 -12.03125 5.4375 -12.34375 C 6.101562 -12.664062 6.84375 -12.828125 7.65625 -12.828125 C 9.4375 -12.828125 10.640625 -12.207031 11.265625 -10.96875 C 11.609375 -10.289062 11.78125 -9.316406 11.78125 -8.046875 L 11.78125 0 L 9.640625 0 L 9.640625 -7.90625 C 9.640625 -8.675781 9.523438 -9.296875 9.296875 -9.765625 C 8.921875 -10.546875 8.238281 -10.9375 7.25 -10.9375 C 6.75 -10.9375 6.34375 -10.882812 6.03125 -10.78125 C 5.445312 -10.613281 4.9375 -10.269531 4.5 -9.75 C 4.144531 -9.332031 3.914062 -8.90625 3.8125 -8.46875 C 3.707031 -8.03125 3.65625 -7.398438 3.65625 -6.578125 L 3.65625 0 L 1.546875 0 Z M 6.5 -12.859375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-25">
+<path style="stroke:none;" d="M 5.984375 -12.78125 C 6.960938 -12.78125 7.820312 -12.535156 8.5625 -12.046875 C 8.957031 -11.773438 9.363281 -11.378906 9.78125 -10.859375 L 9.78125 -12.4375 L 11.71875 -12.4375 L 11.71875 -1.015625 C 11.71875 0.578125 11.484375 1.832031 11.015625 2.75 C 10.140625 4.457031 8.488281 5.3125 6.0625 5.3125 C 4.707031 5.3125 3.566406 5.007812 2.640625 4.40625 C 1.722656 3.800781 1.210938 2.851562 1.109375 1.5625 L 3.25 1.5625 C 3.351562 2.125 3.554688 2.554688 3.859375 2.859375 C 4.335938 3.328125 5.085938 3.5625 6.109375 3.5625 C 7.722656 3.5625 8.78125 2.992188 9.28125 1.859375 C 9.582031 1.179688 9.71875 -0.0195312 9.6875 -1.75 C 9.269531 -1.101562 8.765625 -0.625 8.171875 -0.3125 C 7.578125 0 6.789062 0.15625 5.8125 0.15625 C 4.457031 0.15625 3.269531 -0.328125 2.25 -1.296875 C 1.226562 -2.265625 0.71875 -3.859375 0.71875 -6.078125 C 0.71875 -8.179688 1.226562 -9.820312 2.25 -11 C 3.28125 -12.1875 4.523438 -12.78125 5.984375 -12.78125 Z M 9.78125 -6.328125 C 9.78125 -7.878906 9.457031 -9.03125 8.8125 -9.78125 C 8.175781 -10.53125 7.359375 -10.90625 6.359375 -10.90625 C 4.878906 -10.90625 3.863281 -10.210938 3.3125 -8.828125 C 3.03125 -8.085938 2.890625 -7.113281 2.890625 -5.90625 C 2.890625 -4.488281 3.175781 -3.410156 3.75 -2.671875 C 4.320312 -1.941406 5.09375 -1.578125 6.0625 -1.578125 C 7.570312 -1.578125 8.640625 -2.257812 9.265625 -3.625 C 9.609375 -4.394531 9.78125 -5.296875 9.78125 -6.328125 Z M 6.21875 -12.859375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-26">
+<path style="stroke:none;" d="M 3.359375 -5.5625 C 3.410156 -4.582031 3.640625 -3.785156 4.046875 -3.171875 C 4.816406 -2.035156 6.179688 -1.46875 8.140625 -1.46875 C 9.015625 -1.46875 9.8125 -1.59375 10.53125 -1.84375 C 11.914062 -2.320312 12.609375 -3.1875 12.609375 -4.4375 C 12.609375 -5.375 12.316406 -6.046875 11.734375 -6.453125 C 11.140625 -6.835938 10.207031 -7.175781 8.9375 -7.46875 L 6.609375 -8 C 5.085938 -8.34375 4.007812 -8.71875 3.375 -9.125 C 2.28125 -9.84375 1.734375 -10.921875 1.734375 -12.359375 C 1.734375 -13.898438 2.269531 -15.164062 3.34375 -16.15625 C 4.414062 -17.15625 5.929688 -17.65625 7.890625 -17.65625 C 9.691406 -17.65625 11.222656 -17.21875 12.484375 -16.34375 C 13.742188 -15.46875 14.375 -14.078125 14.375 -12.171875 L 12.1875 -12.171875 C 12.070312 -13.085938 11.820312 -13.789062 11.4375 -14.28125 C 10.726562 -15.1875 9.519531 -15.640625 7.8125 -15.640625 C 6.4375 -15.640625 5.445312 -15.347656 4.84375 -14.765625 C 4.25 -14.191406 3.953125 -13.519531 3.953125 -12.75 C 3.953125 -11.90625 4.300781 -11.289062 5 -10.90625 C 5.46875 -10.65625 6.515625 -10.34375 8.140625 -9.96875 L 10.546875 -9.40625 C 11.710938 -9.144531 12.613281 -8.785156 13.25 -8.328125 C 14.34375 -7.515625 14.890625 -6.34375 14.890625 -4.8125 C 14.890625 -2.90625 14.191406 -1.539062 12.796875 -0.71875 C 11.410156 0.09375 9.800781 0.5 7.96875 0.5 C 5.832031 0.5 4.15625 -0.046875 2.9375 -1.140625 C 1.726562 -2.222656 1.132812 -3.695312 1.15625 -5.5625 Z M 8.0625 -17.6875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-27">
+<path style="stroke:none;" d="M 14.359375 -17.21875 L 14.359375 -15.171875 L 8.5625 -15.171875 L 8.5625 0 L 6.1875 0 L 6.1875 -15.171875 L 0.390625 -15.171875 L 0.390625 -17.21875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-0">
+<path style="stroke:none;" d="M 0.671875 0 L 0.671875 -15.0625 L 12.640625 -15.0625 L 12.640625 0 Z M 10.75 -1.890625 L 10.75 -13.171875 L 2.5625 -13.171875 L 2.5625 -1.890625 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-1">
+<path style="stroke:none;" d="M 2.9375 -4.859375 C 2.976562 -4.003906 3.175781 -3.3125 3.53125 -2.78125 C 4.207031 -1.78125 5.398438 -1.28125 7.109375 -1.28125 C 7.878906 -1.28125 8.578125 -1.390625 9.203125 -1.609375 C 10.421875 -2.035156 11.03125 -2.796875 11.03125 -3.890625 C 11.03125 -4.703125 10.773438 -5.285156 10.265625 -5.640625 C 9.742188 -5.984375 8.929688 -6.28125 7.828125 -6.53125 L 5.78125 -7 C 4.445312 -7.289062 3.503906 -7.617188 2.953125 -7.984375 C 1.992188 -8.617188 1.515625 -9.5625 1.515625 -10.8125 C 1.515625 -12.164062 1.984375 -13.273438 2.921875 -14.140625 C 3.859375 -15.003906 5.1875 -15.4375 6.90625 -15.4375 C 8.476562 -15.4375 9.816406 -15.054688 10.921875 -14.296875 C 12.023438 -13.535156 12.578125 -12.316406 12.578125 -10.640625 L 10.671875 -10.640625 C 10.566406 -11.453125 10.347656 -12.070312 10.015625 -12.5 C 9.390625 -13.28125 8.332031 -13.671875 6.84375 -13.671875 C 5.632812 -13.671875 4.765625 -13.414062 4.234375 -12.90625 C 3.710938 -12.40625 3.453125 -11.820312 3.453125 -11.15625 C 3.453125 -10.414062 3.757812 -9.875 4.375 -9.53125 C 4.78125 -9.3125 5.691406 -9.039062 7.109375 -8.71875 L 9.234375 -8.234375 C 10.242188 -8.003906 11.03125 -7.6875 11.59375 -7.28125 C 12.539062 -6.570312 13.015625 -5.550781 13.015625 -4.21875 C 13.015625 -2.550781 12.40625 -1.359375 11.1875 -0.640625 C 9.976562 0.078125 8.570312 0.4375 6.96875 0.4375 C 5.09375 0.4375 3.628906 -0.0390625 2.578125 -1 C 1.515625 -1.945312 0.992188 -3.234375 1.015625 -4.859375 Z M 7.0625 -15.46875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-2">
+<path style="stroke:none;" d="M 5.921875 -11.234375 C 6.703125 -11.234375 7.457031 -11.046875 8.1875 -10.671875 C 8.925781 -10.304688 9.484375 -9.835938 9.859375 -9.265625 C 10.234375 -8.703125 10.484375 -8.054688 10.609375 -7.328125 C 10.710938 -6.816406 10.765625 -6.007812 10.765625 -4.90625 L 2.71875 -4.90625 C 2.75 -3.789062 3.007812 -2.894531 3.5 -2.21875 C 4 -1.539062 4.765625 -1.203125 5.796875 -1.203125 C 6.753906 -1.203125 7.519531 -1.519531 8.09375 -2.15625 C 8.425781 -2.53125 8.660156 -2.960938 8.796875 -3.453125 L 10.609375 -3.453125 C 10.566406 -3.046875 10.410156 -2.59375 10.140625 -2.09375 C 9.867188 -1.601562 9.566406 -1.195312 9.234375 -0.875 C 8.671875 -0.332031 7.972656 0.03125 7.140625 0.21875 C 6.703125 0.332031 6.203125 0.390625 5.640625 0.390625 C 4.273438 0.390625 3.113281 -0.101562 2.15625 -1.09375 C 1.207031 -2.09375 0.734375 -3.488281 0.734375 -5.28125 C 0.734375 -7.039062 1.210938 -8.472656 2.171875 -9.578125 C 3.128906 -10.679688 4.378906 -11.234375 5.921875 -11.234375 Z M 8.875 -6.375 C 8.789062 -7.164062 8.613281 -7.800781 8.34375 -8.28125 C 7.84375 -9.175781 7 -9.625 5.8125 -9.625 C 4.96875 -9.625 4.253906 -9.316406 3.671875 -8.703125 C 3.097656 -8.085938 2.796875 -7.3125 2.765625 -6.375 Z M 5.75 -11.25 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-3">
+<path style="stroke:none;" d="M 1.40625 -15.0625 L 3.25 -15.0625 L 3.25 0 L 1.40625 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-4">
+<path style="stroke:none;" d="M 5.59375 -11.296875 C 6.820312 -11.296875 7.820312 -10.992188 8.59375 -10.390625 C 9.375 -9.796875 9.847656 -8.765625 10.015625 -7.296875 L 8.21875 -7.296875 C 8.101562 -7.972656 7.847656 -8.535156 7.453125 -8.984375 C 7.066406 -9.429688 6.445312 -9.65625 5.59375 -9.65625 C 4.414062 -9.65625 3.570312 -9.078125 3.0625 -7.921875 C 2.738281 -7.179688 2.578125 -6.265625 2.578125 -5.171875 C 2.578125 -4.066406 2.804688 -3.140625 3.265625 -2.390625 C 3.734375 -1.640625 4.46875 -1.265625 5.46875 -1.265625 C 6.226562 -1.265625 6.832031 -1.5 7.28125 -1.96875 C 7.726562 -2.4375 8.039062 -3.078125 8.21875 -3.890625 L 10.015625 -3.890625 C 9.804688 -2.429688 9.289062 -1.363281 8.46875 -0.6875 C 7.644531 -0.0195312 6.597656 0.3125 5.328125 0.3125 C 3.890625 0.3125 2.742188 -0.207031 1.890625 -1.25 C 1.035156 -2.300781 0.609375 -3.613281 0.609375 -5.1875 C 0.609375 -7.113281 1.078125 -8.613281 2.015625 -9.6875 C 2.953125 -10.757812 4.144531 -11.296875 5.59375 -11.296875 Z M 5.296875 -11.25 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-5">
+<path style="stroke:none;" d="M 1.71875 -14.046875 L 3.59375 -14.046875 L 3.59375 -10.984375 L 5.34375 -10.984375 L 5.34375 -9.46875 L 3.59375 -9.46875 L 3.59375 -2.3125 C 3.59375 -1.925781 3.722656 -1.664062 3.984375 -1.53125 C 4.117188 -1.457031 4.359375 -1.421875 4.703125 -1.421875 C 4.785156 -1.421875 4.878906 -1.421875 4.984375 -1.421875 C 5.085938 -1.429688 5.207031 -1.441406 5.34375 -1.453125 L 5.34375 0 C 5.132812 0.0625 4.914062 0.101562 4.6875 0.125 C 4.457031 0.15625 4.207031 0.171875 3.9375 0.171875 C 3.070312 0.171875 2.484375 -0.046875 2.171875 -0.484375 C 1.867188 -0.929688 1.71875 -1.503906 1.71875 -2.203125 L 1.71875 -9.46875 L 0.234375 -9.46875 L 0.234375 -10.984375 L 1.71875 -10.984375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-6">
+<path style="stroke:none;" d="M 1.359375 -10.9375 L 3.234375 -10.9375 L 3.234375 0 L 1.359375 0 Z M 1.359375 -15.0625 L 3.234375 -15.0625 L 3.234375 -12.96875 L 1.359375 -12.96875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-7">
+<path style="stroke:none;" d="M 5.71875 -1.1875 C 6.9375 -1.1875 7.769531 -1.648438 8.21875 -2.578125 C 8.675781 -3.503906 8.90625 -4.535156 8.90625 -5.671875 C 8.90625 -6.691406 8.742188 -7.523438 8.421875 -8.171875 C 7.898438 -9.179688 7.003906 -9.6875 5.734375 -9.6875 C 4.609375 -9.6875 3.785156 -9.253906 3.265625 -8.390625 C 2.753906 -7.535156 2.5 -6.5 2.5 -5.28125 C 2.5 -4.113281 2.753906 -3.140625 3.265625 -2.359375 C 3.785156 -1.578125 4.601562 -1.1875 5.71875 -1.1875 Z M 5.78125 -11.296875 C 7.195312 -11.296875 8.394531 -10.820312 9.375 -9.875 C 10.351562 -8.9375 10.84375 -7.550781 10.84375 -5.71875 C 10.84375 -3.945312 10.410156 -2.484375 9.546875 -1.328125 C 8.679688 -0.171875 7.34375 0.40625 5.53125 0.40625 C 4.019531 0.40625 2.820312 -0.101562 1.9375 -1.125 C 1.050781 -2.15625 0.609375 -3.53125 0.609375 -5.25 C 0.609375 -7.09375 1.078125 -8.5625 2.015625 -9.65625 C 2.953125 -10.75 4.207031 -11.296875 5.78125 -11.296875 Z M 5.71875 -11.25 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-8">
+<path style="stroke:none;" d="M 1.359375 -10.984375 L 3.109375 -10.984375 L 3.109375 -9.421875 C 3.628906 -10.066406 4.175781 -10.53125 4.75 -10.8125 C 5.332031 -11.09375 5.984375 -11.234375 6.703125 -11.234375 C 8.253906 -11.234375 9.304688 -10.6875 9.859375 -9.59375 C 10.160156 -9 10.3125 -8.148438 10.3125 -7.046875 L 10.3125 0 L 8.421875 0 L 8.421875 -6.921875 C 8.421875 -7.585938 8.320312 -8.128906 8.125 -8.546875 C 7.800781 -9.222656 7.207031 -9.5625 6.34375 -9.5625 C 5.90625 -9.5625 5.546875 -9.519531 5.265625 -9.4375 C 4.765625 -9.28125 4.320312 -8.976562 3.9375 -8.53125 C 3.625 -8.164062 3.421875 -7.789062 3.328125 -7.40625 C 3.242188 -7.019531 3.203125 -6.46875 3.203125 -5.75 L 3.203125 0 L 1.359375 0 Z M 5.6875 -11.25 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-9">
+<path style="stroke:none;" d="M 7.390625 -1.75 C 8.078125 -1.75 8.640625 -1.816406 9.078125 -1.953125 C 9.878906 -2.222656 10.53125 -2.738281 11.03125 -3.5 C 11.4375 -4.101562 11.726562 -4.878906 11.90625 -5.828125 C 12.007812 -6.398438 12.0625 -6.925781 12.0625 -7.40625 C 12.0625 -9.28125 11.6875 -10.734375 10.9375 -11.765625 C 10.195312 -12.796875 9.003906 -13.3125 7.359375 -13.3125 L 3.75 -13.3125 L 3.75 -1.75 Z M 1.6875 -15.0625 L 7.796875 -15.0625 C 9.867188 -15.0625 11.472656 -14.328125 12.609375 -12.859375 C 13.628906 -11.535156 14.140625 -9.835938 14.140625 -7.765625 C 14.140625 -6.160156 13.835938 -4.710938 13.234375 -3.421875 C 12.179688 -1.140625 10.359375 0 7.765625 0 L 1.6875 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-10">
+<path style="stroke:none;" d="M 9.328125 -6.171875 L 7.046875 -12.828125 L 4.609375 -6.171875 Z M 5.984375 -15.0625 L 8.28125 -15.0625 L 13.75 0 L 11.515625 0 L 9.984375 -4.515625 L 4.03125 -4.515625 L 2.40625 0 L 0.3125 0 Z M 7.03125 -15.0625 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-11">
+<path style="stroke:none;" d="M 8.109375 -15.453125 C 9.523438 -15.453125 10.75 -15.175781 11.78125 -14.625 C 13.28125 -13.84375 14.195312 -12.46875 14.53125 -10.5 L 12.515625 -10.5 C 12.265625 -11.601562 11.753906 -12.40625 10.984375 -12.90625 C 10.210938 -13.40625 9.238281 -13.65625 8.0625 -13.65625 C 6.664062 -13.65625 5.488281 -13.128906 4.53125 -12.078125 C 3.582031 -11.035156 3.109375 -9.476562 3.109375 -7.40625 C 3.109375 -5.625 3.5 -4.171875 4.28125 -3.046875 C 5.070312 -1.921875 6.351562 -1.359375 8.125 -1.359375 C 9.488281 -1.359375 10.613281 -1.75 11.5 -2.53125 C 12.394531 -3.320312 12.851562 -4.601562 12.875 -6.375 L 8.15625 -6.375 L 8.15625 -8.0625 L 14.78125 -8.0625 L 14.78125 0 L 13.46875 0 L 12.96875 -1.9375 C 12.28125 -1.175781 11.671875 -0.648438 11.140625 -0.359375 C 10.242188 0.148438 9.101562 0.40625 7.71875 0.40625 C 5.9375 0.40625 4.40625 -0.171875 3.125 -1.328125 C 1.71875 -2.773438 1.015625 -4.765625 1.015625 -7.296875 C 1.015625 -9.816406 1.695312 -11.820312 3.0625 -13.3125 C 4.363281 -14.738281 6.046875 -15.453125 8.109375 -15.453125 Z M 7.765625 -15.46875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-12">
+<path style="stroke:none;" d="M 2.0625 -15.0625 L 4.125 -15.0625 L 4.125 0 L 2.0625 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-13">
+<path style="stroke:none;" d="M 1.546875 -15.0625 L 4.46875 -15.0625 L 8.796875 -2.328125 L 13.09375 -15.0625 L 15.984375 -15.0625 L 15.984375 0 L 14.046875 0 L 14.046875 -8.890625 C 14.046875 -9.203125 14.050781 -9.710938 14.0625 -10.421875 C 14.082031 -11.128906 14.09375 -11.890625 14.09375 -12.703125 L 9.796875 0 L 7.765625 0 L 3.453125 -12.703125 L 3.453125 -12.25 C 3.453125 -11.875 3.457031 -11.304688 3.46875 -10.546875 C 3.488281 -9.796875 3.5 -9.242188 3.5 -8.890625 L 3.5 0 L 1.546875 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-14">
+<path style="stroke:none;" d="M 2.765625 -2.921875 C 2.765625 -2.390625 2.957031 -1.96875 3.34375 -1.65625 C 3.738281 -1.351562 4.203125 -1.203125 4.734375 -1.203125 C 5.390625 -1.203125 6.019531 -1.351562 6.625 -1.65625 C 7.644531 -2.15625 8.15625 -2.972656 8.15625 -4.109375 L 8.15625 -5.59375 C 7.9375 -5.445312 7.644531 -5.328125 7.28125 -5.234375 C 6.925781 -5.140625 6.582031 -5.070312 6.25 -5.03125 L 5.125 -4.875 C 4.457031 -4.789062 3.957031 -4.648438 3.625 -4.453125 C 3.050781 -4.140625 2.765625 -3.628906 2.765625 -2.921875 Z M 7.234375 -6.65625 C 7.660156 -6.707031 7.945312 -6.882812 8.09375 -7.1875 C 8.175781 -7.351562 8.21875 -7.585938 8.21875 -7.890625 C 8.21875 -8.523438 7.992188 -8.984375 7.546875 -9.265625 C 7.097656 -9.546875 6.457031 -9.6875 5.625 -9.6875 C 4.65625 -9.6875 3.96875 -9.425781 3.5625 -8.90625 C 3.34375 -8.625 3.195312 -8.195312 3.125 -7.625 L 1.40625 -7.625 C 1.4375 -8.976562 1.875 -9.921875 2.71875 -10.453125 C 3.5625 -10.984375 4.539062 -11.25 5.65625 -11.25 C 6.945312 -11.25 8 -11.003906 8.8125 -10.515625 C 9.613281 -10.015625 10.015625 -9.25 10.015625 -8.21875 L 10.015625 -1.890625 C 10.015625 -1.691406 10.050781 -1.535156 10.125 -1.421875 C 10.207031 -1.304688 10.375 -1.25 10.625 -1.25 C 10.707031 -1.25 10.796875 -1.253906 10.890625 -1.265625 C 10.992188 -1.273438 11.109375 -1.289062 11.234375 -1.3125 L 11.234375 0.046875 C 10.941406 0.128906 10.71875 0.179688 10.5625 0.203125 C 10.414062 0.222656 10.210938 0.234375 9.953125 0.234375 C 9.316406 0.234375 8.859375 0.0078125 8.578125 -0.4375 C 8.421875 -0.675781 8.3125 -1.015625 8.25 -1.453125 C 7.875 -0.960938 7.332031 -0.535156 6.625 -0.171875 C 5.925781 0.191406 5.15625 0.375 4.3125 0.375 C 3.289062 0.375 2.457031 0.0664062 1.8125 -0.546875 C 1.164062 -1.171875 0.84375 -1.945312 0.84375 -2.875 C 0.84375 -3.894531 1.160156 -4.6875 1.796875 -5.25 C 2.429688 -5.8125 3.265625 -6.15625 4.296875 -6.28125 Z M 5.71875 -11.25 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-15">
+<path style="stroke:none;" d="M 1.359375 -15.109375 L 3.203125 -15.109375 L 3.203125 -9.5 C 3.640625 -10.050781 4.03125 -10.441406 4.375 -10.671875 C 4.96875 -11.054688 5.710938 -11.25 6.609375 -11.25 C 8.203125 -11.25 9.28125 -10.691406 9.84375 -9.578125 C 10.15625 -8.972656 10.3125 -8.128906 10.3125 -7.046875 L 10.3125 0 L 8.40625 0 L 8.40625 -6.921875 C 8.40625 -7.722656 8.300781 -8.316406 8.09375 -8.703125 C 7.757812 -9.296875 7.132812 -9.59375 6.21875 -9.59375 C 5.445312 -9.59375 4.75 -9.328125 4.125 -8.796875 C 3.507812 -8.273438 3.203125 -7.285156 3.203125 -5.828125 L 3.203125 0 L 1.359375 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-16">
+<path style="stroke:none;" d=""/>
+</symbol>
+<symbol overflow="visible" id="glyph1-17">
+<path style="stroke:none;" d="M 7.953125 -15.46875 C 9.859375 -15.46875 11.335938 -14.960938 12.390625 -13.953125 C 13.441406 -12.953125 14.023438 -11.816406 14.140625 -10.546875 L 12.15625 -10.546875 C 11.925781 -11.515625 11.472656 -12.28125 10.796875 -12.84375 C 10.128906 -13.414062 9.1875 -13.703125 7.96875 -13.703125 C 6.488281 -13.703125 5.289062 -13.179688 4.375 -12.140625 C 3.457031 -11.097656 3 -9.5 3 -7.34375 C 3 -5.582031 3.410156 -4.148438 4.234375 -3.046875 C 5.054688 -1.953125 6.285156 -1.40625 7.921875 -1.40625 C 9.429688 -1.40625 10.578125 -1.984375 11.359375 -3.140625 C 11.773438 -3.742188 12.085938 -4.539062 12.296875 -5.53125 L 14.28125 -5.53125 C 14.101562 -3.945312 13.515625 -2.617188 12.515625 -1.546875 C 11.316406 -0.253906 9.707031 0.390625 7.6875 0.390625 C 5.9375 0.390625 4.460938 -0.140625 3.265625 -1.203125 C 1.703125 -2.597656 0.921875 -4.757812 0.921875 -7.6875 C 0.921875 -9.90625 1.507812 -11.726562 2.6875 -13.15625 C 3.957031 -14.695312 5.710938 -15.46875 7.953125 -15.46875 Z M 7.53125 -15.46875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-18">
+<path style="stroke:none;" d="M 2.515625 -5.359375 C 2.515625 -4.179688 2.765625 -3.195312 3.265625 -2.40625 C 3.765625 -1.613281 4.566406 -1.21875 5.671875 -1.21875 C 6.523438 -1.21875 7.226562 -1.582031 7.78125 -2.3125 C 8.332031 -3.050781 8.609375 -4.109375 8.609375 -5.484375 C 8.609375 -6.867188 8.320312 -7.894531 7.75 -8.5625 C 7.1875 -9.226562 6.488281 -9.5625 5.65625 -9.5625 C 4.71875 -9.5625 3.957031 -9.207031 3.375 -8.5 C 2.800781 -7.789062 2.515625 -6.742188 2.515625 -5.359375 Z M 5.296875 -11.171875 C 6.140625 -11.171875 6.84375 -10.992188 7.40625 -10.640625 C 7.738281 -10.441406 8.113281 -10.082031 8.53125 -9.5625 L 8.53125 -15.109375 L 10.3125 -15.109375 L 10.3125 0 L 8.640625 0 L 8.640625 -1.53125 C 8.210938 -0.851562 7.703125 -0.363281 7.109375 -0.0625 C 6.523438 0.238281 5.851562 0.390625 5.09375 0.390625 C 3.875 0.390625 2.816406 -0.125 1.921875 -1.15625 C 1.023438 -2.1875 0.578125 -3.554688 0.578125 -5.265625 C 0.578125 -6.859375 0.984375 -8.238281 1.796875 -9.40625 C 2.617188 -10.582031 3.785156 -11.171875 5.296875 -11.171875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-19">
+<path style="stroke:none;" d="M 5.984375 -1.234375 C 6.847656 -1.234375 7.566406 -1.59375 8.140625 -2.3125 C 8.710938 -3.039062 9 -4.125 9 -5.5625 C 9 -6.4375 8.867188 -7.1875 8.609375 -7.8125 C 8.128906 -9.019531 7.253906 -9.625 5.984375 -9.625 C 4.710938 -9.625 3.835938 -8.988281 3.359375 -7.71875 C 3.109375 -7.03125 2.984375 -6.160156 2.984375 -5.109375 C 2.984375 -4.253906 3.109375 -3.53125 3.359375 -2.9375 C 3.835938 -1.800781 4.710938 -1.234375 5.984375 -1.234375 Z M 1.203125 -10.9375 L 3 -10.9375 L 3 -9.46875 C 3.375 -9.96875 3.78125 -10.359375 4.21875 -10.640625 C 4.832031 -11.046875 5.5625 -11.25 6.40625 -11.25 C 7.65625 -11.25 8.710938 -10.769531 9.578125 -9.8125 C 10.441406 -8.863281 10.875 -7.503906 10.875 -5.734375 C 10.875 -3.335938 10.25 -1.628906 9 -0.609375 C 8.207031 0.046875 7.285156 0.375 6.234375 0.375 C 5.410156 0.375 4.71875 0.191406 4.15625 -0.171875 C 3.820312 -0.378906 3.457031 -0.734375 3.0625 -1.234375 L 3.0625 4.375 L 1.203125 4.375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-20">
+<path style="stroke:none;" d="M 1.359375 -10.984375 L 3.171875 -10.984375 L 3.171875 -9.421875 C 3.609375 -9.960938 4.007812 -10.359375 4.375 -10.609375 C 4.976562 -11.023438 5.664062 -11.234375 6.4375 -11.234375 C 7.3125 -11.234375 8.015625 -11.015625 8.546875 -10.578125 C 8.847656 -10.335938 9.125 -9.976562 9.375 -9.5 C 9.78125 -10.082031 10.257812 -10.515625 10.8125 -10.796875 C 11.375 -11.085938 12 -11.234375 12.6875 -11.234375 C 14.164062 -11.234375 15.171875 -10.695312 15.703125 -9.625 C 15.984375 -9.050781 16.125 -8.28125 16.125 -7.3125 L 16.125 0 L 14.21875 0 L 14.21875 -7.625 C 14.21875 -8.351562 14.03125 -8.851562 13.65625 -9.125 C 13.289062 -9.40625 12.847656 -9.546875 12.328125 -9.546875 C 11.597656 -9.546875 10.972656 -9.300781 10.453125 -8.8125 C 9.929688 -8.332031 9.671875 -7.523438 9.671875 -6.390625 L 9.671875 0 L 7.796875 0 L 7.796875 -7.171875 C 7.796875 -7.910156 7.707031 -8.453125 7.53125 -8.796875 C 7.25 -9.304688 6.722656 -9.5625 5.953125 -9.5625 C 5.253906 -9.5625 4.617188 -9.289062 4.046875 -8.75 C 3.484375 -8.21875 3.203125 -7.242188 3.203125 -5.828125 L 3.203125 0 L 1.359375 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-21">
+<path style="stroke:none;" d="M 0.53125 -1.453125 L 7.046875 -9.328125 L 1.015625 -9.328125 L 1.015625 -10.984375 L 9.53125 -10.984375 L 9.53125 -9.46875 L 3.0625 -1.65625 L 9.71875 -1.65625 L 9.71875 0 L 0.53125 0 Z M 5.28125 -11.25 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-22">
+<path style="stroke:none;" d="M 2.453125 -3.453125 C 2.503906 -2.828125 2.65625 -2.351562 2.90625 -2.03125 C 3.375 -1.4375 4.179688 -1.140625 5.328125 -1.140625 C 6.015625 -1.140625 6.617188 -1.285156 7.140625 -1.578125 C 7.660156 -1.878906 7.921875 -2.34375 7.921875 -2.96875 C 7.921875 -3.4375 7.710938 -3.796875 7.296875 -4.046875 C 7.023438 -4.191406 6.5 -4.363281 5.71875 -4.5625 L 4.25 -4.9375 C 3.3125 -5.164062 2.617188 -5.425781 2.171875 -5.71875 C 1.378906 -6.207031 0.984375 -6.894531 0.984375 -7.78125 C 0.984375 -8.820312 1.359375 -9.660156 2.109375 -10.296875 C 2.859375 -10.941406 3.863281 -11.265625 5.125 -11.265625 C 6.78125 -11.265625 7.972656 -10.78125 8.703125 -9.8125 C 9.160156 -9.195312 9.382812 -8.535156 9.375 -7.828125 L 7.625 -7.828125 C 7.59375 -8.242188 7.445312 -8.625 7.1875 -8.96875 C 6.757812 -9.445312 6.023438 -9.6875 4.984375 -9.6875 C 4.285156 -9.6875 3.753906 -9.550781 3.390625 -9.28125 C 3.035156 -9.019531 2.859375 -8.671875 2.859375 -8.234375 C 2.859375 -7.753906 3.09375 -7.367188 3.5625 -7.078125 C 3.84375 -6.910156 4.25 -6.765625 4.78125 -6.640625 L 6 -6.34375 C 7.320312 -6.019531 8.210938 -5.707031 8.671875 -5.40625 C 9.378906 -4.9375 9.734375 -4.191406 9.734375 -3.171875 C 9.734375 -2.203125 9.363281 -1.359375 8.625 -0.640625 C 7.882812 0.0664062 6.753906 0.421875 5.234375 0.421875 C 3.609375 0.421875 2.453125 0.0507812 1.765625 -0.6875 C 1.085938 -1.4375 0.722656 -2.359375 0.671875 -3.453125 Z M 5.171875 -11.25 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-23">
+<path style="stroke:none;" d="M 1.796875 -15.0625 L 12.78125 -15.0625 L 12.78125 -13.21875 L 3.78125 -13.21875 L 3.78125 -8.640625 L 12.09375 -8.640625 L 12.09375 -6.90625 L 3.78125 -6.90625 L 3.78125 -1.796875 L 12.9375 -1.796875 L 12.9375 0 L 1.796875 0 Z M 7.359375 -15.0625 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-24">
+<path style="stroke:none;" d="M 1.796875 -15.0625 L 8.578125 -15.0625 C 9.910156 -15.0625 10.988281 -14.679688 11.8125 -13.921875 C 12.632812 -13.171875 13.046875 -12.113281 13.046875 -10.75 C 13.046875 -9.570312 12.675781 -8.546875 11.9375 -7.671875 C 11.207031 -6.804688 10.085938 -6.375 8.578125 -6.375 L 3.828125 -6.375 L 3.828125 0 L 1.796875 0 Z M 10.984375 -10.734375 C 10.984375 -11.835938 10.570312 -12.585938 9.75 -12.984375 C 9.300781 -13.203125 8.679688 -13.3125 7.890625 -13.3125 L 3.828125 -13.3125 L 3.828125 -8.09375 L 7.890625 -8.09375 C 8.804688 -8.09375 9.550781 -8.285156 10.125 -8.671875 C 10.695312 -9.066406 10.984375 -9.753906 10.984375 -10.734375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-25">
+<path style="stroke:none;" d="M 1.40625 -10.984375 L 3.15625 -10.984375 L 3.15625 -9.078125 C 3.300781 -9.453125 3.65625 -9.90625 4.21875 -10.4375 C 4.78125 -10.96875 5.425781 -11.234375 6.15625 -11.234375 C 6.1875 -11.234375 6.242188 -11.226562 6.328125 -11.21875 C 6.410156 -11.207031 6.550781 -11.191406 6.75 -11.171875 L 6.75 -9.234375 C 6.632812 -9.253906 6.53125 -9.265625 6.4375 -9.265625 C 6.351562 -9.273438 6.253906 -9.28125 6.140625 -9.28125 C 5.210938 -9.28125 4.5 -8.976562 4 -8.375 C 3.5 -7.78125 3.25 -7.09375 3.25 -6.3125 L 3.25 0 L 1.40625 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-0">
+<path style="stroke:none;" d="M 0.875 0 L 0.875 -19.359375 L 16.25 -19.359375 L 16.25 0 Z M 13.8125 -2.421875 L 13.8125 -16.9375 L 3.296875 -16.9375 L 3.296875 -2.421875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-1">
+<path style="stroke:none;" d="M 7.1875 -14.53125 C 8.78125 -14.53125 10.070312 -14.140625 11.0625 -13.359375 C 12.0625 -12.585938 12.664062 -11.257812 12.875 -9.375 L 10.5625 -9.375 C 10.414062 -10.238281 10.09375 -10.957031 9.59375 -11.53125 C 9.09375 -12.113281 8.289062 -12.40625 7.1875 -12.40625 C 5.675781 -12.40625 4.59375 -11.664062 3.9375 -10.1875 C 3.519531 -9.226562 3.3125 -8.046875 3.3125 -6.640625 C 3.3125 -5.222656 3.609375 -4.03125 4.203125 -3.0625 C 4.804688 -2.101562 5.75 -1.625 7.03125 -1.625 C 8.007812 -1.625 8.785156 -1.921875 9.359375 -2.515625 C 9.941406 -3.117188 10.34375 -3.945312 10.5625 -5 L 12.875 -5 C 12.601562 -3.125 11.941406 -1.753906 10.890625 -0.890625 C 9.835938 -0.0234375 8.488281 0.40625 6.84375 0.40625 C 5 0.40625 3.523438 -0.265625 2.421875 -1.609375 C 1.328125 -2.960938 0.78125 -4.648438 0.78125 -6.671875 C 0.78125 -9.148438 1.378906 -11.078125 2.578125 -12.453125 C 3.785156 -13.835938 5.320312 -14.53125 7.1875 -14.53125 Z M 6.8125 -14.46875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-2">
+<path style="stroke:none;" d="M 1.8125 -19.359375 L 4.171875 -19.359375 L 4.171875 0 L 1.8125 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-3">
+<path style="stroke:none;" d="M 3.5625 -3.75 C 3.5625 -3.070312 3.8125 -2.535156 4.3125 -2.140625 C 4.8125 -1.742188 5.40625 -1.546875 6.09375 -1.546875 C 6.925781 -1.546875 7.734375 -1.738281 8.515625 -2.125 C 9.835938 -2.757812 10.5 -3.8125 10.5 -5.28125 L 10.5 -7.1875 C 10.207031 -7 9.832031 -6.84375 9.375 -6.71875 C 8.914062 -6.601562 8.46875 -6.515625 8.03125 -6.453125 L 6.59375 -6.28125 C 5.726562 -6.164062 5.082031 -5.984375 4.65625 -5.734375 C 3.925781 -5.316406 3.5625 -4.65625 3.5625 -3.75 Z M 9.3125 -8.5625 C 9.851562 -8.625 10.21875 -8.847656 10.40625 -9.234375 C 10.507812 -9.453125 10.5625 -9.757812 10.5625 -10.15625 C 10.5625 -10.957031 10.269531 -11.539062 9.6875 -11.90625 C 9.113281 -12.269531 8.289062 -12.453125 7.21875 -12.453125 C 5.976562 -12.453125 5.101562 -12.117188 4.59375 -11.453125 C 4.300781 -11.085938 4.109375 -10.539062 4.015625 -9.8125 L 1.8125 -9.8125 C 1.851562 -11.550781 2.414062 -12.757812 3.5 -13.4375 C 4.582031 -14.125 5.84375 -14.46875 7.28125 -14.46875 C 8.9375 -14.46875 10.285156 -14.148438 11.328125 -13.515625 C 12.359375 -12.878906 12.875 -11.894531 12.875 -10.5625 L 12.875 -2.421875 C 12.875 -2.179688 12.921875 -1.984375 13.015625 -1.828125 C 13.117188 -1.679688 13.332031 -1.609375 13.65625 -1.609375 C 13.757812 -1.609375 13.878906 -1.613281 14.015625 -1.625 C 14.148438 -1.632812 14.289062 -1.65625 14.4375 -1.6875 L 14.4375 0.0625 C 14.0625 0.164062 13.773438 0.226562 13.578125 0.25 C 13.390625 0.28125 13.128906 0.296875 12.796875 0.296875 C 11.984375 0.296875 11.390625 0.0078125 11.015625 -0.5625 C 10.828125 -0.875 10.691406 -1.3125 10.609375 -1.875 C 10.128906 -1.238281 9.4375 -0.6875 8.53125 -0.21875 C 7.625 0.238281 6.625 0.46875 5.53125 0.46875 C 4.226562 0.46875 3.160156 0.0703125 2.328125 -0.71875 C 1.492188 -1.507812 1.078125 -2.503906 1.078125 -3.703125 C 1.078125 -5.015625 1.484375 -6.03125 2.296875 -6.75 C 3.117188 -7.46875 4.195312 -7.910156 5.53125 -8.078125 Z M 7.34375 -14.46875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-4">
+<path style="stroke:none;" d="M 1.734375 -14.125 L 4 -14.125 L 4 -12.109375 C 4.664062 -12.941406 5.367188 -13.535156 6.109375 -13.890625 C 6.859375 -14.253906 7.691406 -14.4375 8.609375 -14.4375 C 10.609375 -14.4375 11.960938 -13.738281 12.671875 -12.34375 C 13.054688 -11.570312 13.25 -10.476562 13.25 -9.0625 L 13.25 0 L 10.84375 0 L 10.84375 -8.90625 C 10.84375 -9.757812 10.710938 -10.453125 10.453125 -10.984375 C 10.035156 -11.859375 9.269531 -12.296875 8.15625 -12.296875 C 7.59375 -12.296875 7.132812 -12.238281 6.78125 -12.125 C 6.125 -11.9375 5.550781 -11.550781 5.0625 -10.96875 C 4.664062 -10.5 4.40625 -10.015625 4.28125 -9.515625 C 4.164062 -9.023438 4.109375 -8.316406 4.109375 -7.390625 L 4.109375 0 L 1.734375 0 Z M 7.3125 -14.46875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-5">
+<path style="stroke:none;" d="M 6.71875 -14.375 C 7.832031 -14.375 8.800781 -14.097656 9.625 -13.546875 C 10.070312 -13.242188 10.53125 -12.796875 11 -12.203125 L 11 -13.984375 L 13.1875 -13.984375 L 13.1875 -1.140625 C 13.1875 0.648438 12.921875 2.0625 12.390625 3.09375 C 11.410156 5.007812 9.550781 5.96875 6.8125 5.96875 C 5.289062 5.96875 4.007812 5.625 2.96875 4.9375 C 1.9375 4.257812 1.359375 3.195312 1.234375 1.75 L 3.65625 1.75 C 3.769531 2.382812 4 2.875 4.34375 3.21875 C 4.875 3.75 5.71875 4.015625 6.875 4.015625 C 8.6875 4.015625 9.875 3.367188 10.4375 2.078125 C 10.769531 1.328125 10.925781 -0.0195312 10.90625 -1.96875 C 10.425781 -1.25 9.851562 -0.710938 9.1875 -0.359375 C 8.519531 -0.00390625 7.640625 0.171875 6.546875 0.171875 C 5.015625 0.171875 3.671875 -0.367188 2.515625 -1.453125 C 1.367188 -2.535156 0.796875 -4.332031 0.796875 -6.84375 C 0.796875 -9.207031 1.375 -11.050781 2.53125 -12.375 C 3.6875 -13.707031 5.082031 -14.375 6.71875 -14.375 Z M 11 -7.125 C 11 -8.875 10.632812 -10.171875 9.90625 -11.015625 C 9.1875 -11.859375 8.269531 -12.28125 7.15625 -12.28125 C 5.488281 -12.28125 4.347656 -11.492188 3.734375 -9.921875 C 3.410156 -9.085938 3.25 -7.992188 3.25 -6.640625 C 3.25 -5.054688 3.570312 -3.847656 4.21875 -3.015625 C 4.863281 -2.179688 5.726562 -1.765625 6.8125 -1.765625 C 8.519531 -1.765625 9.722656 -2.535156 10.421875 -4.078125 C 10.804688 -4.941406 11 -5.957031 11 -7.125 Z M 7 -14.46875 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-6">
+<path style="stroke:none;" d="M 2.0625 -19.359375 L 4.6875 -19.359375 L 4.6875 -2.3125 L 14.484375 -2.3125 L 14.484375 0 L 2.0625 0 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-7">
+<path style="stroke:none;" d="M 3.59375 -19.359375 L 9.15625 -2.875 L 14.640625 -19.359375 L 17.59375 -19.359375 L 10.515625 0 L 7.734375 0 L 0.6875 -19.359375 Z "/>
+</symbol>
+<symbol overflow="visible" id="glyph2-8">
+<path style="stroke:none;" d="M 1.984375 -19.359375 L 5.75 -19.359375 L 11.3125 -3 L 16.828125 -19.359375 L 20.546875 -19.359375 L 20.546875 0 L 18.0625 0 L 18.0625 -11.4375 C 18.0625 -11.832031 18.066406 -12.484375 18.078125 -13.390625 C 18.097656 -14.304688 18.109375 -15.285156 18.109375 -16.328125 L 12.59375 0 L 10 0 L 4.4375 -16.328125 L 4.4375 -15.734375 C 4.4375 -15.265625 4.445312 -14.539062 4.46875 -13.5625 C 4.488281 -12.59375 4.5 -11.882812 4.5 -11.4375 L 4.5 0 L 1.984375 0 Z "/>
+</symbol>
+</g>
+<clipPath id="clip1">
+  <path d="M 0 0.5 L 790 0.5 L 790 463.5 L 0 463.5 Z "/>
+</clipPath>
+<image id="image7" width="182" height="114" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAAByCAAAAADb4nR6AAAAAmJLR0QA/4ePzL8AAAQRSURBVHic7Zzbbus2EEXnQlLJ/39sj0nO3n2gbMnxaVH0gVILrgBGLPlheWcokYGGIovF4kboPz54GfzNMf3xTvdjdzHn0OYP+bOeqoiqiuptrIXjh3w3T6/fVEVV1URNVPQW4hRSSBICOZfLS1tV1NTUTE1V71AoFCFJElAKefI+0hZTM3Ozk/jVEAICCEBBHN5PbVVVM3d3d3M1vb7AKUIQACIiQqDUD20xM0+eUkrupi52le4BSQSiR1cRERqe3q8iMVX3lHLOKY3Ar0+bICJ6bz5KNl7ndm0VNfeUcikl5+TJ/PLqJglG7716HV9CVX6krarmKZevbSs55+Smdr12oEdr+WEqQhj5zPuZtqq5p1y2r++tlJyS29VjkoKIqK0mVyEAQGQv7iNtM0+5bN/fX1spObldnbYQEbXUbApEhIfpx5A8xf21lZLS5dqUiKg1u0hEczc77t3ntC2lXMr29b1tJV+vLUTvKbkwWsttjLYfRSKq6uYplW3bvrctJ9eLr9xk9HBTRq/J3ew02l5DUsTUPOWcy7Z9lZLS5dpA76qC1nJy8/Nf/0h7TElSzqVsZds8XV0kJJoLEaWm5PY2Tzpu7qpqPu45qZTiya5Om6EGREvu5vs8aedIW/RZ3p5TStmvTlugIjk8uftQPoROE1dVNVUzc0/u7n51kZgS7j5m0+9T6XT+oO4VrupmN0ibHmY2pkfvM6Sh/T651h2fKvkBjPrKeH99Wh7DTvfyljutgcfacF8jnpxusBj4NyztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmRzae4Mf97a5C51O7L2SpIjwo/Hw3ZM7IdcCkNxl99efPWX7udF7RgYQVz/nSiIAAEHyLes3bZIgAUR0DxNe/Xju6NwLIDCCP069tEdhB6L3aMmdd3jIv/XWo0cE+Nbl+dLms8svem+5qjqufuycROuttt4jEEGc8j7SHm2gve09XClu0cDyqLXW1nu8l8muTYqAiN5aq25C3KRd6PF4PGprPRD4bW3vhV0fboK4S3NWrY9f9dF6BAB+9AKTAHpvNScTRL9PK1z99auOvHl4n9JGRG81maC3epvGw1brH78etUcAn7cbEojezHVY36nNc5R3BPBTmyTCuqkJe71ZU219PB6198Bx6T7SJkJVBNFu18Lcaq0tRlft4Jm2EmO/DKK32zWM9xE2P6dSUIYoibhje37vERG/ubkrxgcR/Z6bIQSIz+u2CDG077n1BHBeFJwmrlAhcc+NPsDTkkHOanffVuVtpfAf3cTmf7Bl0N8fvIyb/BNhsVj8NX8CCe75m8J3N8sAAAAASUVORK5CYII="/>
+<mask id="mask0">
+<use xlink:href="#image7"/>
+</mask>
+<image id="image6" width="182" height="114" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAAByCAIAAABx67zxAAAABmJLR0QA/wD/AP+gvaeTAAAAU0lEQVR4nO3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgz85YAATtvztcAAAAASUVORK5CYII="/>
+<image id="image13" width="182" height="114" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAAByCAAAAADb4nR6AAAAAmJLR0QA/4ePzL8AAAQRSURBVHic7Zzbbus2EEXnQlLJ/39sj0nO3n2gbMnxaVH0gVILrgBGLPlheWcokYGGIovF4kboPz54GfzNMf3xTvdjdzHn0OYP+bOeqoiqiuptrIXjh3w3T6/fVEVV1URNVPQW4hRSSBICOZfLS1tV1NTUTE1V71AoFCFJElAKefI+0hZTM3Ozk/jVEAICCEBBHN5PbVVVM3d3d3M1vb7AKUIQACIiQqDUD20xM0+eUkrupi52le4BSQSiR1cRERqe3q8iMVX3lHLOKY3Ar0+bICJ6bz5KNl7ndm0VNfeUcikl5+TJ/PLqJglG7716HV9CVX6krarmKZevbSs55+Smdr12oEdr+WEqQhj5zPuZtqq5p1y2r++tlJyS29VjkoKIqK0mVyEAQGQv7iNtM0+5bN/fX1spObldnbYQEbXUbApEhIfpx5A8xf21lZLS5dqUiKg1u0hEczc77t3ntC2lXMr29b1tJV+vLUTvKbkwWsttjLYfRSKq6uYplW3bvrctJ9eLr9xk9HBTRq/J3ew02l5DUsTUPOWcy7Z9lZLS5dpA76qC1nJy8/Nf/0h7TElSzqVsZds8XV0kJJoLEaWm5PY2Tzpu7qpqPu45qZTiya5Om6EGREvu5vs8aedIW/RZ3p5TStmvTlugIjk8uftQPoROE1dVNVUzc0/u7n51kZgS7j5m0+9T6XT+oO4VrupmN0ibHmY2pkfvM6Sh/T651h2fKvkBjPrKeH99Wh7DTvfyljutgcfacF8jnpxusBj4NyztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmSztmRzae4Mf97a5C51O7L2SpIjwo/Hw3ZM7IdcCkNxl99efPWX7udF7RgYQVz/nSiIAAEHyLes3bZIgAUR0DxNe/Xju6NwLIDCCP069tEdhB6L3aMmdd3jIv/XWo0cE+Nbl+dLms8svem+5qjqufuycROuttt4jEEGc8j7SHm2gve09XClu0cDyqLXW1nu8l8muTYqAiN5aq25C3KRd6PF4PGprPRD4bW3vhV0fboK4S3NWrY9f9dF6BAB+9AKTAHpvNScTRL9PK1z99auOvHl4n9JGRG81maC3epvGw1brH78etUcAn7cbEojezHVY36nNc5R3BPBTmyTCuqkJe71ZU219PB6198Bx6T7SJkJVBNFu18Lcaq0tRlft4Jm2EmO/DKK32zWM9xE2P6dSUIYoibhje37vERG/ubkrxgcR/Z6bIQSIz+u2CDG077n1BHBeFJwmrlAhcc+NPsDTkkHOanffVuVtpfAf3cTmf7Bl0N8fvIyb/BNhsVj8NX8CCe75m8J3N8sAAAAASUVORK5CYII="/>
+<mask id="mask1">
+<use xlink:href="#image13"/>
+</mask>
+<image id="image12" width="182" height="114" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAAByCAIAAABx67zxAAAABmJLR0QA/wD/AP+gvaeTAAAAU0lEQVR4nO3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgz85YAATtvztcAAAAASUVORK5CYII="/>
+<image id="image19" width="155" height="114" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJsAAAByCAAAAABhQfwaAAAAAmJLR0QA/4ePzL8AAAP6SURBVHic7ZvbbuM4EET7QlLJ/3/sxiS7ah8ox3I8WCwIDD0D8OQpsgEfFFsiBXSLbDYbERH93xd/L/zFNf3xn57XlupxuPGH4dVBVURVRXVxchx/5LNeupqpqpqoiYqus6OQQpIQyHV1v91URU1NzdRUddm6UoQkSUAp5EXukZuYmpmbXeyWQAgIIAAF8ZC7u6mqmrm7u5ur6aKiowhBAIiICIFSX9zEzDx5Sim5m7rYAjMREZIIRI+uIiI03OW+19RU3VPKOac0oluUG0FE9N58lFF8f3a6qai5p5RLKTknT+ZrKo4kGL336nWYqsqP3FTVPOXycRwl55zc1Ba5BXq0lm+mIoSR9+Tuuamae8rl+Pg8SskpuS25GSiIiNpqchUCAETOgnvkZuYpl+Pz8+MoJSe3JbkJEVFLzaZARHiYvtwLl+A+jlJSWuNGiYhas4tENHezx5Z0zc1SyqUcH5/HUfIiNyF6T8mF0Vpuo8x/rKmoqpunVI7j+DyOnFxXPOHI6OGmjF6Tu9mlzL/vBRFT85RzLsfxUUpKa9yA3lUFreXk5tfFeuQ2ttOUcylHOQ5Pi54haC5ElJqS29NG/tizVNV8PIBTKcWTLVpTNSBacjc/N/IfbkNulJznlFL2NfcCVCSHJ3cfXo9fvZyRVNVUzcw9ubv7kjU1Jdx9nM6ej2bp+kU9q07VzVblRg8zG/v38xY+3J4Pa3riK9SM+p2W3mUGj3rXs+Rk+cvMOP+f7wGXH151gpxhu82x3ebYbnNstzm22xzbbY7tNsd2m2O7zbHd5thuc2y3ObbbHNttju02x3abY7vNsd3m2G5zbLc5ttsc222O7TbHdptju82x3ebYbnNstzkebmebPs+++IUO5+wCKSJ8mRF4luFJyAIAkqcR7zJXt7vU2XdOBhBreraJAAAEyafUntxIggQQ0T1MuKbHLCIiAgiMCH/hNootEL1HS+5c1tPYeuvRIwJ8Gq34duO9Vz96b7mqOpb1gvZWW+8RiCAuyT1yG7MXvZ2t3SnW9dDeaq219R7Pq5ru+iIgorfWqpsQK3uPb7fbrbbWA4Ff1ttZbPXmJoilPdu13r7qrfUIAHyZlyEB9N5qTiaIvrjXvX591ZEcH3KX3BDRW00m6K2unRFotf7zdas9Anh99pJA9GauQ235bMUouQjgpxtJhHVTE/b6jpmUervdau+BxyPukRsRqiKI9p5ZnlZrbTGGUp7cqMSYoiR6e88MVB+x8XWvhzJEScTbZsd6j4j4xZ6lGF9E9DfO3AWI1+ebCDHc3jirCFxPkpczElRIvHHGE7ycM59+/4+YjX06Xv7JM8V/yyz2f1/8vax8r9ts/jb+BcGZ+ZtBwoaRAAAAAElFTkSuQmCC"/>
+<mask id="mask2">
+<use xlink:href="#image19"/>
+</mask>
+<image id="image18" width="155" height="114" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJsAAAByCAIAAADLSDSRAAAABmJLR0QA/wD/AP+gvaeTAAAASUlEQVR4nO3BAQEAAACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8GLPhAABRNWUtgAAAABJRU5ErkJggg=="/>
+<image id="image25" width="141" height="114" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAAByCAAAAABL8Q21AAAAAmJLR0QA/4ePzL8AAAPaSURBVGiB7ZvdruM2DIT5Jzvn/R+2a4nk9MKO7eSstkVRBdtCA+QichB+GFGSL0ZEU1P/dfHfHvy3hb8szMTH2GAgnJ8XqHtVZiJmJubx7oAAAkCEG89VlpmYmYVYiImH8gAESlACwI3H7jDCwiIszDxwtkBEAJBIRiLB53TZ9SthEVGRG88gHSyZGZyEPB88aZiZRVRVVUVZeFzzgAAkIiOCgyj5XGAnDYmImpqZqQoryRgWIqKkQEa4+z4DwW80JMyqZqUUs92ecd7sxrg3YQaB5TlXBw0Ti6pZWZalFFMTHdY5ACI9vDXhfccBHebc+kbUyvJY16WUYioso2gSGd5aqypEQCa/zRQzi6qVZX18rctSzFQGtTEIGe6tVmPaV9aJc3kjolaW9evrsS5LMZVx3mR4q8WE9oUlZ0/cdr/TnMe6LGYjadxrMaH05qoXzIs3YlaWZX18retSxtI0U6H0Vps1+ak3rKJmy7quX+taTHnQjpMIbyqU0TbTl8V7djGRsKiVUpZ1fSyL2Tgad2HKaMfapfOMvrzZjykrZVnWZV3Vxs2UGhPCazHdT8Xno+tkYGbRfQu0ZVnUZJQ3KQHEsee/nIiXN8TP1tFiZkXHeSMtolQ7mua2r93eKJhZmEVE1VRVdRRNUKqpigjvLwun7P47PrqHWUXGeUMQZT465qXITvP6MsOHdAxNHH9/K0jH0SD3ITpmcfhr+lHiWe4cH/hO9Q80afqaNH1Nmr4mTV+Tpq9J09ek6WvS9DVp+po0fU2aviZNX5Omr0nT16Tpa9L0NWn6mjR9TZq+Jk1fk6avSdPXpOlr0vQ1afqaNH1Nmr4mTV8XDfbIJI6w7dCqR4lnuXN8z1G8lsehGIRy6A3uorlGE5kJRGYMS2ZGZgCZiXybhBsNgAQyM8I1hDAsDRQRHpGZQL6YdNLssxgZ7tFMFQOTUh7uLdwj42idN5o99HtEW0tl1hyXlPKo1Zt7REbecS5vEpkZ3lo1ZYLFyIRdrVutrXkc3fNKAxDdo63IwenDbdtqa80jkVdu//LmaJq6qVDG6GRm3bZtq8/WeT46+waZ6Ue0NcOHp1br9mOrtblnJr73DTLCW92jrXV8orduP7baPCJ/7k14E+Ud5hNp5+2PrTaP794AyBAXFoLXTyXBt9Octy4GkMFMlNE+lpKvtTa/wZzeMHJP3iG9fewGQdu3QLzfrqBkBDGQ8cnbFR4RuK6enDPFSbSvLP/gzZOIyMxvJwOI9k0x46O3cjIT3/qGiCiZgPzojaXE/ZT63W5z/a433fZvv88twF8PjgCamvr/6U864P55tHfMVgAAAABJRU5ErkJggg=="/>
+<mask id="mask3">
+<use xlink:href="#image25"/>
+</mask>
+<image id="image24" width="141" height="114" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAAByCAIAAADh+MU+AAAABmJLR0QA/wD/AP+gvaeTAAAARklEQVR4nO3BMQEAAADCoPVPbQo/oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlwG80AAB9SjYpwAAAABJRU5ErkJggg=="/>
+<image id="image31" width="141" height="114" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAAByCAAAAABL8Q21AAAAAmJLR0QA/4ePzL8AAAPaSURBVGiB7ZvdruM2DIT5Jzvn/R+2a4nk9MKO7eSstkVRBdtCA+QichB+GFGSL0ZEU1P/dfHfHvy3hb8szMTH2GAgnJ8XqHtVZiJmJubx7oAAAkCEG89VlpmYmYVYiImH8gAESlACwI3H7jDCwiIszDxwtkBEAJBIRiLB53TZ9SthEVGRG88gHSyZGZyEPB88aZiZRVRVVUVZeFzzgAAkIiOCgyj5XGAnDYmImpqZqQoryRgWIqKkQEa4+z4DwW80JMyqZqUUs92ecd7sxrg3YQaB5TlXBw0Ti6pZWZalFFMTHdY5ACI9vDXhfccBHebc+kbUyvJY16WUYioso2gSGd5aqypEQCa/zRQzi6qVZX18rctSzFQGtTEIGe6tVmPaV9aJc3kjolaW9evrsS5LMZVx3mR4q8WE9oUlZ0/cdr/TnMe6LGYjadxrMaH05qoXzIs3YlaWZX18retSxtI0U6H0Vps1+ak3rKJmy7quX+taTHnQjpMIbyqU0TbTl8V7djGRsKiVUpZ1fSyL2Tgad2HKaMfapfOMvrzZjykrZVnWZV3Vxs2UGhPCazHdT8Xno+tkYGbRfQu0ZVnUZJQ3KQHEsee/nIiXN8TP1tFiZkXHeSMtolQ7mua2r93eKJhZmEVE1VRVdRRNUKqpigjvLwun7P47PrqHWUXGeUMQZT465qXITvP6MsOHdAxNHH9/K0jH0SD3ITpmcfhr+lHiWe4cH/hO9Q80afqaNH1Nmr4mTV+Tpq9J09ek6WvS9DVp+po0fU2aviZNX5Omr0nT16Tpa9L0NWn6mjR9TZq+Jk1fk6avSdPXpOlr0vQ1afqaNH1Nmr4mTV8XDfbIJI6w7dCqR4lnuXN8z1G8lsehGIRy6A3uorlGE5kJRGYMS2ZGZgCZiXybhBsNgAQyM8I1hDAsDRQRHpGZQL6YdNLssxgZ7tFMFQOTUh7uLdwj42idN5o99HtEW0tl1hyXlPKo1Zt7REbecS5vEpkZ3lo1ZYLFyIRdrVutrXkc3fNKAxDdo63IwenDbdtqa80jkVdu//LmaJq6qVDG6GRm3bZtq8/WeT46+waZ6Ue0NcOHp1br9mOrtblnJr73DTLCW92jrXV8orduP7baPCJ/7k14E+Ud5hNp5+2PrTaP794AyBAXFoLXTyXBt9Octy4GkMFMlNE+lpKvtTa/wZzeMHJP3iG9fewGQdu3QLzfrqBkBDGQ8cnbFR4RuK6enDPFSbSvLP/gzZOIyMxvJwOI9k0x46O3cjIT3/qGiCiZgPzojaXE/ZT63W5z/a433fZvv88twF8PjgCamvr/6U864P55tHfMVgAAAABJRU5ErkJggg=="/>
+<mask id="mask4">
+<use xlink:href="#image31"/>
+</mask>
+<image id="image30" width="141" height="114" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAAByCAIAAADh+MU+AAAABmJLR0QA/wD/AP+gvaeTAAAARklEQVR4nO3BMQEAAADCoPVPbQo/oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlwG80AAB9SjYpwAAAABJRU5ErkJggg=="/>
+<clipPath id="clip2">
+  <path d="M 29 0.5 L 111 0.5 L 111 33 L 29 33 Z "/>
+</clipPath>
+</defs>
+<g id="surface1">
+<g clip-path="url(#clip1)" clip-rule="nonzero">
+<rect x="0" y="0" width="790.5" height="463.5" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/>
+</g>
+<use xlink:href="#image6" mask="url(#mask0)" transform="matrix(0.997253,0,0,1,270.5,193.5)"/>
+<use xlink:href="#image12" mask="url(#mask1)" transform="matrix(0.997253,0,0,1,162.5,328.5)"/>
+<use xlink:href="#image18" mask="url(#mask2)" transform="matrix(0.996774,0,0,1,419,328.5)"/>
+<use xlink:href="#image24" mask="url(#mask3)" transform="matrix(1,0,0,1,189.5,31.5)"/>
+<use xlink:href="#image30" mask="url(#mask4)" transform="matrix(1,0,0,1,594.5,31.5)"/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 192 204 L 84 204 L 84 285 L 192 285 Z "/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-1" x="92.203125" y="252.75"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-1" x="105.551925" y="252.75"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-2" x="117.129525" y="252.75"/>
+  <use xlink:href="#glyph0-3" x="133.137525" y="252.75"/>
+  <use xlink:href="#glyph0-4" x="153.129525" y="252.75"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-5" x="159.796725" y="252.75"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-6" x="166.463925" y="252.75"/>
+</g>
+<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 180 297 L 224.098958 297 " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 232.098958 297 L 224.098958 294 L 224.098958 300 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 342 270 L 243 270 L 243 324 L 342 324 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="294.802005" y="240"/>
+  <use xlink:href="#glyph1-2" x="308.809005" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-3" x="320.489205" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-2" x="325.155405" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-4" x="336.835605" y="240"/>
+  <use xlink:href="#glyph1-5" x="347.335605" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-6" x="353.169405" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-7" x="357.835605" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-8" x="369.515805" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-9" x="381.196005" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-10" x="396.362205" y="240"/>
+  <use xlink:href="#glyph1-11" x="410.369205" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-12" x="342.656985" y="265.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="348.490785" y="265.5"/>
+  <use xlink:href="#glyph1-2" x="362.497785" y="265.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-3" x="374.177985" y="265.5"/>
+</g>
+<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 270 360 L 171 360 L 171 414 L 270 414 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-13" x="213.06225" y="362.25"/>
+  <use xlink:href="#glyph1-14" x="230.55525" y="362.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-4" x="242.23545" y="362.25"/>
+  <use xlink:href="#glyph1-15" x="252.73545" y="362.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-6" x="264.41565" y="362.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-8" x="269.08185" y="362.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-2" x="280.76205" y="362.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-16" x="292.44225" y="362.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-17" x="227.64843" y="387.75"/>
+  <use xlink:href="#glyph1-7" x="242.81463" y="387.75"/>
+  <use xlink:href="#glyph1-18" x="254.49483" y="387.75"/>
+  <use xlink:href="#glyph1-2" x="266.17503" y="387.75"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-7" x="191.47266" y="413.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-19" x="203.15286" y="413.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-5" x="214.83306" y="413.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-6" x="220.66686" y="413.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-20" x="225.33306" y="413.25"/>
+  <use xlink:href="#glyph1-6" x="242.82606" y="413.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-21" x="247.49226" y="413.25"/>
+  <use xlink:href="#glyph1-14" x="257.99226" y="413.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-5" x="269.67246" y="413.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-6" x="275.50626" y="413.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-7" x="280.17246" y="413.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-8" x="291.85266" y="413.25"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-22" x="303.53286" y="413.25"/>
+</g>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 651 204 L 529.5 204 L 529.5 285 L 651 285 Z "/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-13" x="550.56225" y="240"/>
+  <use xlink:href="#glyph1-14" x="568.05525" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-4" x="579.73545" y="240"/>
+  <use xlink:href="#glyph1-15" x="590.23545" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-6" x="601.91565" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-8" x="606.58185" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-2" x="618.26205" y="240"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-17" x="565.14843" y="265.5"/>
+  <use xlink:href="#glyph1-7" x="580.31463" y="265.5"/>
+  <use xlink:href="#glyph1-18" x="591.99483" y="265.5"/>
+  <use xlink:href="#glyph1-2" x="603.67503" y="265.5"/>
+</g>
+<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 540 189 L 550 189 L 550 244 L 144 244 L 144 269.098958 " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 144 277.098958 L 147 269.098958 L 141 269.098958 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423 360 L 342 360 L 342 414 L 423 414 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-17" x="470.64843" y="375"/>
+  <use xlink:href="#glyph1-7" x="485.81463" y="375"/>
+  <use xlink:href="#glyph1-18" x="497.49483" y="375"/>
+  <use xlink:href="#glyph1-2" x="509.17503" y="375"/>
+  <use xlink:href="#glyph1-16" x="520.85523" y="375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-23" x="453.15528" y="400.5"/>
+  <use xlink:href="#glyph1-20" x="467.16228" y="400.5"/>
+  <use xlink:href="#glyph1-6" x="484.65528" y="400.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-22" x="489.32148" y="400.5"/>
+  <use xlink:href="#glyph1-22" x="499.82148" y="400.5"/>
+  <use xlink:href="#glyph1-6" x="510.32148" y="400.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-7" x="514.98768" y="400.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-8" x="526.66788" y="400.5"/>
+</g>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 772.5 339 L 651 339 L 651 420 L 772.5 420 Z "/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-7" x="659.73633" y="373.5"/>
+  <use xlink:href="#glyph0-8" x="675.74433" y="373.5"/>
+  <use xlink:href="#glyph0-8" x="687.74433" y="373.5"/>
+  <use xlink:href="#glyph0-9" x="699.74433" y="373.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-10" x="713.09313" y="373.5"/>
+  <use xlink:href="#glyph0-11" x="733.08513" y="373.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-12" x="746.43393" y="373.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-13" x="751.76673" y="373.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-14" x="683.0625" y="402"/>
+  <use xlink:href="#glyph0-15" x="700.3953" y="402"/>
+  <use xlink:href="#glyph0-16" x="713.7441" y="402"/>
+  <use xlink:href="#glyph0-9" x="727.0929" y="402"/>
+</g>
+<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 432 387 L 476.098958 387 " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 484.098958 387 L 476.098958 384 L 476.098958 390 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 279 387 L 323.098958 387 " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.098958 387 L 323.098958 384 L 323.098958 390 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 111 42 L 3 42 L 3 123 L 111 123 Z "/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-14" x="22.318365" y="76.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-17" x="39.651165" y="76.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-14" x="46.318365" y="76.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-18" x="63.651165" y="76.5"/>
+  <use xlink:href="#glyph0-18" x="77.667165" y="76.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-19" x="25.66407" y="105"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-11" x="44.33127" y="105"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-20" x="57.68007" y="105"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-21" x="63.01287" y="105"/>
+  <use xlink:href="#glyph0-14" x="71.00487" y="105"/>
+</g>
+<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 126 189 L 170.098958 189 " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.098958 189 L 170.098958 186 L 170.098958 192 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 261 162 L 189 162 L 189 216 L 261 216 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-24" x="228.574215" y="90.75"/>
+  <use xlink:href="#glyph1-14" x="242.581215" y="90.75"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-25" x="254.261415" y="90.75"/>
+  <use xlink:href="#glyph1-22" x="261.254415" y="90.75"/>
+  <use xlink:href="#glyph1-2" x="271.754415" y="90.75"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-25" x="283.434615" y="90.75"/>
+</g>
+<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 270 189 L 314.098958 189 " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 322.098958 189 L 314.098958 186 L 314.098958 192 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 516 42 L 408 42 L 408 123 L 516 123 Z "/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-22" x="433.3125" y="76.5"/>
+  <use xlink:href="#glyph0-12" x="445.3125" y="76.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-23" x="450.6453" y="76.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-24" x="463.9941" y="76.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-25" x="477.3429" y="76.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-7" x="438.662115" y="105"/>
+  <use xlink:href="#glyph0-26" x="454.670115" y="105"/>
+  <use xlink:href="#glyph0-27" x="470.678115" y="105"/>
+</g>
+<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 531 162 L 459 162 L 459 216 L 531 216 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-17" x="619.552005" y="90.75"/>
+  <use xlink:href="#glyph1-7" x="634.718205" y="90.75"/>
+  <use xlink:href="#glyph1-18" x="646.398405" y="90.75"/>
+  <use xlink:href="#glyph1-2" x="658.078605" y="90.75"/>
+  <use xlink:href="#glyph1-11" x="669.758805" y="90.75"/>
+  <use xlink:href="#glyph1-2" x="686.101005" y="90.75"/>
+  <use xlink:href="#glyph1-8" x="697.781205" y="90.75"/>
+</g>
+<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 486 297 L 486 296 L 499 296 L 499 345 L 216 345 L 216 350.098958 " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 216 358.098958 L 219 350.098958 L 213 350.098958 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 396 189 L 440.098958 189 " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 448.098958 189 L 440.098958 186 L 440.098958 192 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 351 297 L 395.098958 297 " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 403.098958 297 L 395.098958 294 L 395.098958 300 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 566 261 L 64 261 C 58.476562 261 54 265.476562 54 271 L 54 431 C 54 436.523438 58.476562 441 64 441 L 566 441 C 571.523437 441 576 436.523438 576 431 L 576 271 C 576 265.476562 571.523437 261 566 261 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 566 144 L 64 144 C 58.476562 144 54 148.476562 54 154 L 54 215 C 54 220.523438 58.476562 225 64 225 L 566 225 C 571.523437 225 576 220.523438 576 215 L 576 154 C 576 148.476562 571.523437 144 566 144 Z " transform="matrix(1.5,0,0,1.5,-77.5,-201)"/>
+<g clip-path="url(#clip2)" clip-rule="nonzero">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 29.25 0 L 111 0 L 111 33 L 29.25 33 Z "/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-1" x="37.85157" y="27"/>
+  <use xlink:href="#glyph2-2" x="51.35157" y="27"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-3" x="57.35097" y="27"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-4" x="72.36837" y="27"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-5" x="87.38577" y="27"/>
+</g>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 23.25 175.5 L 105 175.5 L 105 208.5 L 23.25 208.5 Z "/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-6" x="29.854245" y="202.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-6" x="44.871645" y="202.5"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph2-7" x="57.896445" y="202.5"/>
+  <use xlink:href="#glyph2-8" x="75.905445" y="202.5"/>
+</g>
+</g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Slide/fig/context.svg	Wed Jan 17 13:26:35 2018 +0900
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   viewBox="0 0 522.42188 273.86725"
+   height="273.86725"
+   width="522.42188"
+   xml:space="preserve"
+   version="1.1"
+   id="svg2"><metadata
+     id="metadata8"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+     id="defs6"><clipPath
+       id="clipPath18"
+       clipPathUnits="userSpaceOnUse"><path
+         id="path20"
+         d="m 0,0 417.9375,0 0,219.0938 L 0,219.0938 0,0 Z" /></clipPath></defs><g
+     transform="matrix(1.25,0,0,-1.25,0,273.86725)"
+     id="g10"><g
+       id="g12" /><g
+       id="g14"><g
+         clip-path="url(#clipPath18)"
+         id="g16"><path
+           id="path22"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m -16.03125,226.9688 856.00005,0 0,-739 -856.00005,0 0,739 z" /><path
+           id="path24"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 1.96875,189.1752 180.00005,0 0,-187.20645 -180.00005,0 0,187.20645 z" /><g
+           transform="matrix(1,0,0,-1,-16.03125,226.9688)"
+           id="g26"><path
+             id="path28"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 18,37.79359 180,0 L 198,225 18,225 18,37.79359 Z" /></g><g
+           transform="matrix(1,0,0,-1,91.96875,95.57195)"
+           id="g30"><text
+             id="text32"
+             style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-85,-67.79199)"><tspan
+               id="tspan34"
+               y="0"
+               x="0 8.592 17.488001 26.384001 40.032001 44.48 56.032001 65.216003 74.704002 83.295998 87.744003">enum Code {</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,91.96875,95.57195)"
+           id="g36"><text
+             id="text38"
+             style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-85,-49.34399)"><tspan
+               id="tspan40"
+               y="0"
+               x="0">…</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,91.96875,95.57195)"
+           id="g42"><text
+             id="text44"
+             style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-85,-30.896)"><tspan
+               id="tspan46"
+               y="0"
+               x="0">…</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,91.96875,95.57195)"
+           id="g48"><text
+             id="text50"
+             style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-85,-12.448)"><tspan
+               id="tspan52"
+               y="0"
+               x="0">}</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,91.96875,95.57195)"
+           id="g54"><text
+             id="text56"
+             style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-85,24)"><tspan
+               id="tspan58"
+               y="0"
+               x="0 8.8959999 17.792 21.344 30.528 39.424 43.872002 55.136002 63.728001 68.767998 77.360001 81.807999">union Data {</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,91.96875,95.57195)"
+           id="g60"><text
+             id="text62"
+             style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-85,42.448)"><tspan
+               id="tspan64"
+               y="0"
+               x="0">…</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,91.96875,95.57195)"
+           id="g66"><text
+             id="text68"
+             style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-85,60.896)"><tspan
+               id="tspan70"
+               y="0"
+               x="0">…</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,91.96875,95.57195)"
+           id="g72"><text
+             id="text74"
+             style="font-variant:normal;font-weight:normal;font-size:16px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-85,79.34399)"><tspan
+               id="tspan76"
+               y="0"
+               x="0">}</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,90.1169,203.572)"
+           id="g78"><text
+             id="text80"
+             style="font-variant:normal;font-weight:normal;font-size:15px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-26.5275,5.290001)"><tspan
+               id="tspan82"
+               y="0"
+               x="0 10.83 19.440001 27.780001 32.505001 40.560001 48.330002">Context</tspan></text>
+</g><path
+           id="path84"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 271.9688,118.9688 144,0 0,-54.00005 -144,0 0,54.00005 z" /><g
+           transform="matrix(1,0,0,-1,-16.03125,226.9688)"
+           id="g86"><path
+             id="path88"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 288,108 144,0 0,54 -144,0 0,-54 z" /></g><g
+           transform="matrix(1,0,0,-1,343.9688,91.96875)"
+           id="g90"><text
+             id="text92"
+             style="font-variant:normal;font-weight:normal;font-size:15px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-36.68701,6)"><tspan
+               id="tspan94"
+               y="0"
+               x="0 10.833 19.176001 27.518999 35.862 40.035 51.708 60.050999 68.393997">Code Gear</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,-16.03125,226.9688)"
+           id="g96"><path
+             id="path98"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 198,72 81.8896,57.3227" /></g><path
+           id="path100"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 270.4122,93.05833 -4.8335,7.04537 -3.4407,-4.91537 8.2742,-2.13 z" /><g
+           transform="matrix(1,0,0,-1,-16.03125,226.9688)"
+           id="g102"><path
+             id="path104"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 286.4435,133.9104 -4.8335,-7.0454 -3.4408,4.9154 8.2743,2.13 z" /></g></g></g></g></svg>
\ No newline at end of file
Binary file Slide/fig/generate_context.graffle has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Slide/fig/generate_context.svg	Wed Jan 17 13:26:35 2018 +0900
@@ -0,0 +1,328 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   viewBox="0 0 837.5 532.5"
+   height="532.5"
+   width="837.5"
+   xml:space="preserve"
+   version="1.1"
+   id="svg2"><metadata
+     id="metadata8"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+     id="defs6"><clipPath
+       id="clipPath18"
+       clipPathUnits="userSpaceOnUse"><path
+         id="path20"
+         d="M 0,0 670,0 670,426 0,426 0,0 Z" /></clipPath></defs><g
+     transform="matrix(1.25,0,0,-1.25,0,532.5)"
+     id="g10"><g
+       id="g12" /><g
+       id="g14"><g
+         clip-path="url(#clipPath18)"
+         id="g16"><path
+           id="path22"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m -16,425 856,0 0,-739 -856,0 0,739 z" /><path
+           id="path24"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 11,299 117,0 0,-36 -117,0 0,36 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g26"><path
+             id="path28"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 27,126 117,0 0,36 -117,0 0,-36 z" /></g><g
+           transform="matrix(1,0,0,-1,69.5,281)"
+           id="g30"><text
+             id="text32"
+             style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-14.50781,4)"><tspan
+               id="tspan34"
+               y="0"
+               x="0 7.0079999 10.3416 16.3416 23.016001">~.cbc</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g36"><path
+             id="path38"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 359.9368,151.4437 c 26.751,8.5915 26.751,22.5211 0,31.1126 -26.7509,8.5916 -70.1227,8.5916 -96.8736,0 -26.751,-8.5915 -26.751,-22.5211 0,-31.1126 26.7509,-8.5916 70.1227,-8.5916 96.8736,0" /></g><g
+           transform="matrix(1,0,0,-1,295.5,258)"
+           id="g40"><text
+             id="text42"
+             style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-38.36426,4)"><tspan
+               id="tspan44"
+               y="0"
+               x="0 6.6743999 13.3488 20.023199 26.697599 30.6936 37.368 40.701599 47.375999 54.0504 60.0504 63.383999 70.058403">generate_stub</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g46"><path
+             id="path48"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 144.4954,144.068 93.6997,12.8663" /></g><path
+           id="path50"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 230.1207,266.9775 -7.5175,4.0604 -0.8162,-5.9443 8.3337,1.8839 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g52"><path
+             id="path54"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 246.1207,158.0225 -7.5175,-4.0604 -0.8162,5.9443 8.3337,-1.8839 z" /></g><path
+           id="path56"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 497,374.2028 162,0 L 659,11 l -162,0 0,363.2028 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g58"><path
+             id="path60"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 513,50.79715 162,0 L 675,414 513,414 513,50.79715 Z" /></g><g
+           transform="matrix(1,0,0,-1,576.3333,395.1014)"
+           id="g62"><text
+             id="text64"
+             style="font-variant:normal;font-weight:normal;font-size:15px;font-family:HelveticaNeue;-inkscape-font-specification:HelveticaNeue;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-4.0275,5.290001)"><tspan
+               id="tspan66"
+               y="0"
+               x="0">c</tspan></text>
+</g><path
+           id="path68"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 524,344 108,0 0,-36 -108,0 0,36 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g70"><path
+             id="path72"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 540,81 108,0 0,36 -108,0 0,-36 z" /></g><g
+           transform="matrix(1,0,0,-1,578,326)"
+           id="g74"><text
+             id="text76"
+             style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-8.170898,4)"><tspan
+               id="tspan78"
+               y="0"
+               x="0 7.0079999 10.3416">~.c</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g80"><path
+             id="path82"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="M 362.2257,151.9044 530.032,101.9664" /></g><path
+           id="path84"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 521.6997,325.3154 -8.5234,0.5936 1.7114,-5.7508 6.812,5.1572 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g86"><path
+             id="path88"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 537.6997,99.68455 -8.5234,-0.59353 1.7114,5.75078 6.812,-5.15725 z" /></g><path
+           id="path90"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 11,182 117,0 0,-36 -117,0 0,36 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g92"><path
+             id="path94"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 27,243 117,0 0,36 -117,0 0,-36 z" /></g><g
+           transform="matrix(1,0,0,-1,69.5,164)"
+           id="g96"><text
+             id="text98"
+             style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-24.34863,4)"><tspan
+               id="tspan100"
+               y="0"
+               x="0 6 12.6744 19.348801 22.6824 29.3568 35.3568 38.690399 42.023998">context.h</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g102"><path
+             id="path104"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 359.9368,249.5901 c 26.751,8.7868 26.751,23.033 0,31.8198 -26.7509,8.7868 -70.1227,8.7868 -96.8736,0 -26.751,-8.7868 -26.751,-23.033 0,-31.8198 26.7509,-8.7868 70.1227,-8.7868 96.8736,0" /></g><g
+           transform="matrix(1,0,0,-1,295.5,159.5)"
+           id="g106"><text
+             id="text108"
+             style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-46.36816,4)"><tspan
+               id="tspan110"
+               y="0"
+               x="0 6.6743999 13.3488 20.023199 26.697599 30.6936 37.368 40.701599 47.375999 54.0504 60.0504 66.7248 73.3992 76.732803 83.407204 89.407204">generate_context</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g112"><path
+             id="path114"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="M 540,99 348.0633,238.8576" /></g><path
+           id="path116"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 325.5977,181.4312 8.2324,2.2866 -3.5335,4.8492 -4.6989,-7.1358 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g118"><path
+             id="path120"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 341.5977,243.5688 8.2324,-2.2866 -3.5335,-4.8492 -4.6989,7.1358 z" /></g><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g122"><path
+             id="path124"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 144.4998,261.0134 88.3305,2.3731" /></g><path
+           id="path126"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 224.8274,161.3987 -7.9165,3.2137 -0.1612,-5.9978 8.0777,2.7841 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g128"><path
+             id="path130"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 240.8274,263.6013 -7.9165,-3.2137 -0.1612,5.9978 8.0777,-2.7841 z" /></g><path
+           id="path132"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 524,290 108,0 0,-36 -108,0 0,36 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g134"><path
+             id="path136"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 540,135 108,0 0,36 -108,0 0,-36 z" /></g><g
+           transform="matrix(1,0,0,-1,578,272)"
+           id="g138"><text
+             id="text140"
+             style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-34.35645,4)"><tspan
+               id="tspan142"
+               y="0"
+               x="0 6.6743999 13.3488 20.023199 30.019199 38.6856 45.360001 52.034401 58.708801 62.0424">enumCode.h</tspan></text>
+</g><path
+           id="path144"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 524,236 108,0 0,-36 -108,0 0,36 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g146"><path
+             id="path148"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 540,189 108,0 0,36 -108,0 0,-36 z" /></g><g
+           transform="matrix(1,0,0,-1,578,218)"
+           id="g150"><text
+             id="text152"
+             style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-32.68652,4)"><tspan
+               id="tspan154"
+               y="0"
+               x="0 6.6743999 13.3488 20.023199 30.019199 38.6856 45.360001 48.6936 55.368 58.701599">enumData.h</tspan></text>
+</g><path
+           id="path156"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 524,182 108,0 0,-36 -108,0 0,36 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g158"><path
+             id="path160"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 540,243 108,0 0,36 -108,0 0,-36 z" /></g><g
+           transform="matrix(1,0,0,-1,578,164)"
+           id="g162"><text
+             id="text164"
+             style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-38.02441,4)"><tspan
+               id="tspan166"
+               y="0"
+               x="0 6.6743999 13.3488 16.6824 23.3568 32.690399 39.364799 46.0392 50.035198 53.368801 60.043201 62.709599 66.043198 69.376801">dataGearInit.h</tspan></text>
+</g><path
+           id="path168"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 524,128 108,0 0,-36 -108,0 0,36 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g170"><path
+             id="path172"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 540,297 108,0 0,36 -108,0 0,-36 z" /></g><g
+           transform="matrix(1,0,0,-1,578,110)"
+           id="g174"><text
+             id="text176"
+             style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-39.0293,4)"><tspan
+               id="tspan178"
+               y="0"
+               x="0 6.6743999 12.6744 19.348801 26.023199 32.697601 39.372002 42.705601 51.372002 58.046398 61.380001 68.054398 71.388">TypedefData.h</tspan></text>
+</g><path
+           id="path180"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 524,74 108,0 0,-36 -108,0 0,36 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g182"><path
+             id="path184"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 540,351 108,0 0,36 -108,0 0,-36 z" /></g><g
+           transform="matrix(1,0,0,-1,578,56)"
+           id="g186"><text
+             id="text188"
+             style="font-variant:normal;font-weight:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             transform="translate(-41.35254,4)"><tspan
+               id="tspan190"
+               y="0"
+               x="0 3.3336 10.008 14.004 20.6784 27.3528 30.686399 34.6824 40.6824 47.3568 54.0312 57.364799 64.0392 70.0392 73.372803 76.706398">target-context.c</tspan></text>
+</g><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g192"><path
+             id="path194"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="M 349.972,246.5586 531.1181,157.3729" /></g><path
+           id="path196"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 522.2954,271.1608 -8.5024,-0.8422 2.6503,-5.383 5.8521,6.2252 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g198"><path
+             id="path200"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 538.2954,153.8392 -8.5024,0.8422 2.6503,5.383 5.8521,-6.2252 z" /></g><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g202"><path
+             id="path204"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="M 366.0172,251.5426 530.4093,209.4554" /></g><path
+           id="path206"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 522.1594,217.5288 -8.4941,0.9221 1.4881,-5.8125 7.006,4.8904 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g208"><path
+             id="path210"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 538.1594,207.4712 -8.4941,-0.9221 1.4881,5.8125 7.006,-4.8904 z" /></g><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g212"><path
+             id="path214"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="M 380.3779,264.1435 529.602,261.2048" /></g><path
+           id="path216"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 521.6005,163.9527 -8.0576,2.8419 0.1182,-5.9988 7.9394,3.1569 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g218"><path
+             id="path220"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 537.6005,261.0473 -8.0576,-2.8419 0.1182,5.9988 7.9394,-3.1569 z" /></g><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g222"><path
+             id="path224"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="M 369.1833,277.9959 530.3244,312.904" /></g><path
+           id="path226"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 522.1431,110.4023 -7.1835,4.6257 -1.2703,-5.864 8.4538,1.2383 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g228"><path
+             id="path230"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 538.1431,314.5977 -7.1835,-4.6257 -1.2703,5.864 8.4538,-1.2383 z" /></g><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g232"><path
+             id="path234"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 352.1747,283.9237 178.3518,80.7852" /></g><path
+           id="path236"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 521.8138,56.99024 -6.0495,6.03355 -2.4756,-5.46547 8.5251,-0.56808 z" /><g
+           transform="matrix(1,0,0,-1,-16,425)"
+           id="g238"><path
+             id="path240"
+             style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+             d="m 537.8138,368.0098 -6.0495,-6.0336 -2.4756,5.4655 8.5251,0.5681 z" /></g></g></g></g></svg>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Slide/prosym.html	Wed Jan 17 13:26:35 2018 +0900
@@ -0,0 +1,350 @@
+<!DOCTYPE html>
+<html>
+<head>
+   <meta http-equiv="content-type" content="text/html;charset=utf-8">
+   <title>Code Gear と Data Gear を持つ Gears OS の設計</title>
+
+<meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin16]">
+<meta name="author"    content="Mitsuki Miyagi, Shinji Kono" >
+
+<!-- style sheet links -->
+<link rel="stylesheet" href="s6/themes/projection.css"   media="screen,projection">
+<link rel="stylesheet" href="s6/themes/screen.css"       media="screen">
+<link rel="stylesheet" href="s6/themes/print.css"        media="print">
+<link rel="stylesheet" href="s6/themes/blank.css"        media="screen,projection">
+
+<!-- JS -->
+<script src="s6/js/jquery-1.11.3.min.js"></script>
+<script src="s6/js/jquery.slideshow.js"></script>
+<script src="s6/js/jquery.slideshow.counter.js"></script>
+<script src="s6/js/jquery.slideshow.controls.js"></script>
+<script src="s6/js/jquery.slideshow.footer.js"></script>
+<script src="s6/js/jquery.slideshow.autoplay.js"></script>
+
+<!-- prettify -->
+<link rel="stylesheet" href="scripts/prettify.css">
+<script src="scripts/prettify.js"></script>
+
+<script>
+  $(document).ready( function() {
+    Slideshow.init();
+
+    $('code').each(function(_, el) {
+      if (!el.classList.contains('noprettyprint')) {
+        el.classList.add('prettyprint');
+      }
+    });
+    prettyPrint();
+  } );
+
+  
+</script>
+
+<!-- Better Browser Banner for Microsoft Internet Explorer (IE) -->
+<!--[if IE]>
+<script src="s6/js/jquery.microsoft.js"></script>
+<![endif]-->
+
+
+
+</head>
+<body>
+
+<div class="layout">
+  <div id="header"></div>
+  <div id="footer">
+    <div align="right">
+      <img src="s6/images/logo.svg" width="200px">
+    </div>
+  </div>
+</div>
+
+<div class="presentation">
+
+  <div class='slide cover'>
+    <table width="90%" height="90%" border="0" align="center">
+      <tr>
+        <td>
+          <div align="center">
+            <h1><font color="#808db5">Code Gear と Data Gear を持つ Gears OS の設計</font></h1>
+          </div>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <div align="left">
+            Mitsuki Miyagi, Shinji Kono
+            琉球大学
+            <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;">
+          </div>
+        </td>
+      </tr>
+    </table>
+  </div>
+
+<div class='slide '>
+<!-- === begin markdown block ===
+
+      generated by markdown/1.2.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin16]
+                on 2018-01-16 18:50:54 +0900 with Markdown engine kramdown (1.13.2)
+                  using options {}
+  -->
+
+<!-- _S9SLIDE_ -->
+<h1 id="os-">OS の拡張性と信頼性の両立</h1>
+
+<p>さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。
+時代とともに進歩するハードウェア、サービスに対応して OS 自体が拡張される必要がある。
+その信頼性を保証するには、従来の テストとデバッグでは不十分であり、テストしきれない部分が残ってしまう。
+これに対処するため には、証明を用いる方法とプログラムの可能な実行をすべて数え上げるモデル検査を用いる方法がある。
+検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しくなることに検証をやり直す必要がある。
+このため信頼性と拡張性を両立させることが重要である。
+&lt;!–プログラムからデータを分離して扱うデータベースには、
+プログラム中のデータ構造とRDBの表構造のずれにより、<u>インピーダンスミスマッチ</u>という問題がある。</p>
+
+<p>データベースのレコードをプログラム中のオブジェクトとして使える<u>OR Mapper</u>や、
+データベース自体も、表に特化したKey Value Storeや、Jsonなどの不定形のデータ構造を格納するように機能拡張されてきている。</p>
+
+<p>しかし、プログラム中のデータは複雑な構造をメモリ上に構築しており、これらの方法でもまだギャップがある。–&gt;</p>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="section">メタ計算の重要性</h1>
+<ul lang="Code_Gear">
+  <li>プログラムを記述する際、ノーマルな処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。</li>
+  <li>メタ計算はノーマルな計算から切り離して記述したい。</li>
+  <li>そのためには処理を細かく分割する必要があるが、関数やクラスなどの単位は容易に分割できない。</li>
+  <li>そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。
+# Continuation based C (CbC)</li>
+  <li>Continuation based C (CbC) はこの Code Gear 単位を用いたプログラミング言語として開発している。</li>
+  <li>CbC では Code Gear は __code という型を持つ関数の構文で定義される。</li>
+  <li>Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。</li>
+  <li>goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。</li>
+  <li>この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。</li>
+</ul>
+<pre><code>__code cs0(int a, int b){
+  goto cs1(a+b);
+}
+
+__code cs1(int c){
+  goto cs2(c);
+}
+</code></pre>
+<p># Gears OS
+- Gears OS は Code Gear、 Data Gear の単位を用いて開発されており、CbC で記述されている。
+- 並列実行するための Task を、実行する Code Gear 、実行に必要な Input Data Gear 、Output Data Gear の組で表現する。
+- またGears OS ではメタ計算を Meta Code Gear、Meta Data Gear で表現する。
+- Meta Code Gear はノーマルの Code Gear の直後に遷移され、メタ計算を実行する。
+- Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。</p>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="gears-os-">Gears OS の構成</h1>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="cbc--gears-os-">CbC による Gears OS 記述の問題点</h1>
+<ul>
+  <li>Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。</li>
+  <li>本研究ではこれらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。</li>
+  <li>そのためのプロトタイプとして perl スクリプトを作成した。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="context">Context</h1>
+<ul>
+  <li>Gears OS には Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。</li>
+  <li>Gears OSは必要なCode Gear、Data Gearに参照したい場合、このContext を通す必要がある。</li>
+</ul>
+
+<p><img src="./fig/context.svg" alt="message" width="550" /></p>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="interface">Interface</h1>
+<ul>
+  <li>interface を記述することでデータ構造のapiと Data Gear を結びつけることが出来、呼び出しが容易になった。</li>
+  <li>create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。</li>
+</ul>
+
+<pre lang="impl"><code>Stack* createSingleLinkedStack(struct Context* context) {
+    struct Stack* stack = new Stack();
+    struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack();
+    stack-&gt;stack = (union Data*)singleLinkedStack;
+    singleLinkedStack-&gt;top = NULL;
+    stack-&gt;push = C_pushSingleLinkedStack;
+    stack-&gt;pop  = C_popSingleLinkedStack;
+    stack-&gt;pop2  = C_pop2SingleLinkedStack;
+    stack-&gt;get  = C_getSingleLinkedStack;
+    stack-&gt;get2  = C_get2SingleLinkedStack;
+    stack-&gt;isEmpty = C_isEmptySingleLinkedStack;
+    stack-&gt;clear = C_clearSingleLinkedStack;
+    return stack;
+}
+</code></pre>
+<!-- 
+
+<div style="text-align: center;">
+ <img src="./images/multiComponent.pdf" alt="message" width="600">
+</div>
+
+-->
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="contextstub-code-gear-">Context、stub Code Gear の自動生成</h1>
+<ul>
+  <li>Gears OS ではノーマルレベルの計算の他に Context や stub などのメタ計算を記述する必要がある。</li>
+  <li>現在の CbC で Gears OS を記述すると、このメタ計算の記述も行わなくてはならず、これには多くの労力を要する。</li>
+  <li>この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。</li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="meta-">Meta の生成</h1>
+
+<ul>
+  <li>Code Gear が必要とする Data Gear を取り出す際に Context を通す必要がある。</li>
+  <li>しかし、メタであるContext をノーマルレベルの Code Gear から直接アクセスするのはよろしくない。</li>
+  <li>そこで Context から必要なデータを取り出して Code Gear に接続する、メタレベルの stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。</li>
+</ul>
+
+<pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) {
+    stack-&gt;top = NULL;
+    goto meta(context, next);
+}
+
+__code clearSingleLinkedStack_stub(struct Context* context) {
+        SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack);
+        enum Code next = Gearef(context, Stack)-&gt;next;
+        goto clearSingleLinkedStack(context, stack, next);
+}
+</code></pre>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="stub-code-gear-">stub Code Gear の生成</h1>
+<ul>
+  <li>stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。</li>
+  <li>stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。</li>
+  <li>generate_stub は指定された cbc ファイルの __code型である Code Gear を取得。</li>
+  <li>引数と interface を照らし合わせ、Gearef または GearImpl を決定する。</li>
+  <li>cbc ファイルのから、生成した stub Code Gear を加えて、c ファイルを生成する。</li>
+</ul>
+
+<pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) {
+    stack-&gt;top = NULL;
+    goto meta(context, next);
+}
+
+__code clearSingleLinkedStack_stub(struct Context* context) {
+        SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack);
+        enum Code next = Gearef(context, Stack)-&gt;next;
+        goto clearSingleLinkedStack(context, stack, next);
+}
+</code></pre>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="context-">Context の生成</h1>
+
+<ul>
+  <li>Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。</li>
+  <li>generate_context は context.h から Data Gear、c ファイルから Code Gear を取得。</li>
+  <li>取得した Code/Data Gear の enum の定義は enumCode.h、enumData.h に生成される。</li>
+  <li>Code/Data Gear の名前とポインタの対応は この enum と関数ポインタによって表現される。</li>
+  <li>generate_context は取得した Code/Data Gear から Context の生成を行うコードを生成する。</li>
+  <li>Context には Allocation で生成した Data Gear へのポインタも格納されているが、Data Gear の Allocation を行うコードは dataGearInit.c に生成される。</li>
+  <li>これらを自動生成することで Gears OS の記述量を約半分にすることができます。
+<img src="./fig/generate_context.svg" alt="message" width="800" /></li>
+</ul>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="section-1">比較</h1>
+
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="section-2">今後の課題</h1>
+<ul>
+  <li>本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。</li>
+  <li>これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。</li>
+  <li>今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。</li>
+  <li>また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。</li>
+</ul>
+
+<!--
+# ChildrenとAttribute
+
+# Eitherクラス
+
+# Jungleのサンプルコード
+# Jungleの木の編集
+
+# NodePath
+
+# ノードの追加
+
+# 移動、ルートノードの追加、コミット
+
+# Jungleのサンプルコード
+
+# 検索APIの実装
+
+# 関数findを用いた検索APIのサンプルコード
+
+# JungleでのIndexの実装
+
+# Indexの実装
+
+# Indexの実装
+
+# HTML Rendering Engine
+
+# 構造
+# ContentTree
+# Nodeが持つAttribute
+# LayoutTree
+# LayoutTreeの主な要素
+# useにおけるタグ対応表
+# multiComponent
+# 設計
+# コードとギャップのある格納
+
+# コードとギャップのない格納
+
+# 性能評価
+
+# まとめ
+-->
+<p><a href="プロシン発表時間 セッション4 1/7 8:50 - 10:10"></a></p>
+<!-- === end markdown block === -->
+</div>
+
+
+</div><!-- presentation -->
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Slide/prosym.md	Wed Jan 17 13:26:35 2018 +0900
@@ -0,0 +1,218 @@
+title: Code Gear と Data Gear を持つ Gears OS の設計
+author: Mitsuki Miyagi, Shinji Kono
+profile: 琉球大学
+lang: Japanese
+code-engine: coderay
+
+<!--
+# 研究目的
+
+現代の OS では拡張性と信頼性を両立させることが要求されている。
+<!--信頼性 信頼性を保証するには従来のテストとデバッグでは不十分-->
+<!--信頼性を保証するには証明とモデル検査を用いる方法がある-->
+
+信頼性をノーマルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に Gears OS を設計中である。
+Gears OS は Continuation based C ^\(CbC)によってアプリケーションと OS そのものを記述する。
+
+CbCはノーマルレベルではメタ構造を直接見ることはなく、継続を用いた関数型プログラミングに見える。
+メタレベルから見た Data Gear をノーマルレベルの Code Gear に接続するには stub という Meta Code Gear を用いる。
+stub と Meta はユーザーレベル Code Gear / Data Gear からスクリプトにより作成される。
+
+ノーマルレベルからメタレベルを含んだコードへの変換に必要な情報はプログラムを構成する Code Gear と Data Gear の集まりから得る。
+この集まりを Interface として定義している。
+本研究では、Interfaceを用いたプログラミングと、メタ計算の実例を示す。
+-->
+
+# OS の拡張性と信頼性の両立
+
+さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。
+時代とともに進歩するハードウェア、サービスに対応して OS 自体が拡張される必要がある。
+その信頼性を保証するには、従来の テストとデバッグでは不十分であり、テストしきれない部分が残ってしまう。
+これに対処するため には、証明を用いる方法とプログラムの可能な実行をすべて数え上げるモデル検査を用いる方法がある。
+検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しくなることに検証をやり直す必要がある。
+このため信頼性と拡張性を両立させることが重要である。
+<!--プログラムからデータを分離して扱うデータベースには、
+プログラム中のデータ構造とRDBの表構造のずれにより、<u>インピーダンスミスマッチ</u>という問題がある。
+
+データベースのレコードをプログラム中のオブジェクトとして使える<u>OR Mapper</u>や、
+データベース自体も、表に特化したKey Value Storeや、Jsonなどの不定形のデータ構造を格納するように機能拡張されてきている。
+
+しかし、プログラム中のデータは複雑な構造をメモリ上に構築しており、これらの方法でもまだギャップがある。-->
+
+# メタ計算の重要性
+- プログラムを記述する際、ノーマルな処理の他に、メモリ管理やスレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。これらの計算をメタ計算と呼ぶ。
+- メタ計算はノーマルな計算から切り離して記述したい。
+- そのためには処理を細かく分割する必要があるが、関数やクラスなどの単位は容易に分割できない。
+- そこで当研究室ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を提案している。
+# Continuation based C (CbC) 
+- Continuation based C (CbC) はこの Code Gear 単位を用いたプログラミング言語として開発している。
+- CbC では Code Gear は \_\_code という型を持つ関数の構文で定義される。
+- Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。
+- goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。
+- この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。
+```Code_Gear
+__code cs0(int a, int b){
+  goto cs1(a+b);
+}
+
+__code cs1(int c){
+  goto cs2(c);
+}
+```
+# Gears OS
+- Gears OS は Code Gear、 Data Gear の単位を用いて開発されており、CbC で記述されている。
+- 並列実行するための Task を、実行する Code Gear 、実行に必要な Input Data Gear 、Output Data Gear の組で表現する。
+- またGears OS ではメタ計算を Meta Code Gear、Meta Data Gear で表現する。
+- Meta Code Gear はノーマルの Code Gear の直後に遷移され、メタ計算を実行する。
+- Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。
+
+# Gears OS の構成
+
+# CbC による Gears OS 記述の問題点
+- Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。
+- 本研究ではこれらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。
+- そのためのプロトタイプとして perl スクリプトを作成した。
+
+# Context
+- Gears OS には Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。
+- Gears OSは必要なCode Gear、Data Gearに参照したい場合、このContext を通す必要がある。
+
+<img src="./fig/context.svg" alt="message" width="550" >
+
+# Interface
+- interface を記述することでデータ構造のapiと Data Gear を結びつけることが出来、呼び出しが容易になった。
+- create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。
+
+```impl
+Stack* createSingleLinkedStack(struct Context* context) {
+    struct Stack* stack = new Stack();
+    struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack();
+    stack->stack = (union Data*)singleLinkedStack;
+    singleLinkedStack->top = NULL;
+    stack->push = C_pushSingleLinkedStack;
+    stack->pop  = C_popSingleLinkedStack;
+    stack->pop2  = C_pop2SingleLinkedStack;
+    stack->get  = C_getSingleLinkedStack;
+    stack->get2  = C_get2SingleLinkedStack;
+    stack->isEmpty = C_isEmptySingleLinkedStack;
+    stack->clear = C_clearSingleLinkedStack;
+    return stack;
+}
+```
+<!-- 
+
+<div style="text-align: center;">
+ <img src="./images/multiComponent.pdf" alt="message" width="600">
+</div>
+
+-->
+
+# Context、stub Code Gear の自動生成
+- Gears OS ではノーマルレベルの計算の他に Context や stub などのメタ計算を記述する必要がある。
+- 現在の CbC で Gears OS を記述すると、このメタ計算の記述も行わなくてはならず、これには多くの労力を要する。
+- この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。
+
+# Meta の生成
+
+- Code Gear が必要とする Data Gear を取り出す際に Context を通す必要がある。
+- しかし、メタであるContext をノーマルレベルの Code Gear から直接アクセスするのはよろしくない。
+- そこで Context から必要なデータを取り出して Code Gear に接続する、メタレベルの stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。
+
+```stub
+__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) {
+    stack->top = NULL;
+    goto meta(context, next);
+}
+
+__code clearSingleLinkedStack_stub(struct Context* context) {
+        SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack);
+        enum Code next = Gearef(context, Stack)->next;
+        goto clearSingleLinkedStack(context, stack, next);
+}
+```
+
+# stub Code Gear の生成
+- stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。
+- stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。
+- generate_stub は指定された cbc ファイルの __code型である Code Gear を取得。
+- 引数と interface を照らし合わせ、Gearef または GearImpl を決定する。
+- cbc ファイルのから、生成した stub Code Gear を加えて、c ファイルを生成する。
+
+```stub
+__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) {
+    stack->top = NULL;
+    goto meta(context, next);
+}
+
+__code clearSingleLinkedStack_stub(struct Context* context) {
+        SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack);
+        enum Code next = Gearef(context, Stack)->next;
+        goto clearSingleLinkedStack(context, stack, next);
+}
+```
+
+# Context の生成
+
+- Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。 
+- generate_context は context.h から Data Gear、c ファイルから Code Gear を取得。
+- 取得した Code/Data Gear の enum の定義は enumCode.h、enumData.h に生成される。
+- Code/Data Gear の名前とポインタの対応は この enum と関数ポインタによって表現される。
+- generate_context は取得した Code/Data Gear から Context の生成を行うコードを生成する。
+- Context には Allocation で生成した Data Gear へのポインタも格納されているが、Data Gear の Allocation を行うコードは dataGearInit.c に生成される。
+- これらを自動生成することで Gears OS の記述量を約半分にすることができます。
+<img src="./fig/generate_context.svg" alt="message" width="800" >
+
+# 比較
+
+# 今後の課題
+- 本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。
+- これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。
+- 今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。
+- また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。
+
+
+<!--
+# ChildrenとAttribute
+
+# Eitherクラス
+
+# Jungleのサンプルコード
+# Jungleの木の編集
+
+# NodePath
+
+# ノードの追加
+
+# 移動、ルートノードの追加、コミット
+
+# Jungleのサンプルコード
+
+# 検索APIの実装
+
+# 関数findを用いた検索APIのサンプルコード
+
+# JungleでのIndexの実装
+
+# Indexの実装
+
+# Indexの実装
+
+# HTML Rendering Engine
+
+# 構造
+# ContentTree
+# Nodeが持つAttribute
+# LayoutTree
+# LayoutTreeの主な要素
+# useにおけるタグ対応表
+# multiComponent
+# 設計
+# コードとギャップのある格納
+
+# コードとギャップのない格納
+
+# 性能評価
+
+# まとめ
+-->
+[](プロシン発表時間 セッション4 1/7 8:50 - 10:10)
Binary file Slide/slide_map.xmind has changed