ref: 8d6647548f7d0051221374ad6eb2b6dd32e2a3ed
parent: 255744676c0c4c8fa391d7a03bdd3142d6db0ad2
author: Simon Tatham <anakin@pobox.com>
date: Sun Mar 26 16:05:40 EDT 2023
Loopy / grid.c: new grid type, 'Hats'. The big mathematical news this month is that a polygon has been discovered that will tile the plane but only aperiodically. Penrose tiles achieve this with two tile types; it's been an open question for decades whether you could do it with only one tile. Now someone has announced the discovery of such a thing, so _obviously_ this mathematically exciting tiling ought to be one of the Loopy grid options! The polygon, named a 'hat' by its discoverers, consists of the union of eight cells of the 'Kites' periodic tiling that Loopy already implements. So all the vertex coordinates of the whole tiling are vertices of the Kites grid, which makes handling the coordinates in an exact manner a lot easier than Penrose tilings. What's _harder_ than Penrose tilings is that, although this tiling can be generated by a vaguely similar system of recursive expansion, the expansion is geometrically distorting, which means you can't easily figure out which tiles can be discarded early to save CPU. Instead I've come up with a completely different system for generating a patch of tiling, by using a hierarchical coordinate system to track a location within many levels of the expansion process without ever simulating the process as a whole. I'm really quite pleased with that technique, and am tempted to try switching the Penrose generator over to it too - except that we'd have to keep the old generator around to stop old game ids being invalidated, and also, I think it would be slightly trickier without an underlying fixed grid and without overlaps in the tile expansion system. However, before coming up with that, I got most of the way through implementing the more obvious system of actually doing the expansions. The result worked, but was very slow (because I changed approach rather than try to implement tree-pruning under distortion). But the code was reusable for two other useful purposes: it generated the lookup tables needed for the production code, and it also generated a lot of useful diagrams. So I've committed it anyway as a supporting program, in a new 'aux' source subdirectory, and in aux/doc is a writeup of the coordinate system's concepts, with all those diagrams. (That's the kind of thing I'd normally put in a huge comment at the top of the file, but doing all those diagrams in ASCII art would be beyond miserable.) From a gameplay perspective: the hat polygon has 13 edges, but one of them has a vertex of the Kites tiling in the middle, and sometimes two other tile boundaries meet at that vertex. I've chosen to represent every hat as having degree 14 for Loopy purposes, because if you only included that extra vertex when it was needed, then people would be forever having to check whether this was a 13-hat or a 14-hat and it would be nightmarish to play. Even so, there's a lot of clicking involved to turn all those fiddly individual edges on or off. This grid is noticeably nicer to play in 'autofollow' mode, by setting LOOPY_AUTOFOLLOW in the environment to either 'fixed' or 'adaptive'. I'm tempted to make 'fixed' the default, except that I think it would confuse players of ordinary square Loopy!
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,7 +7,7 @@
add_library(common
combi.c divvy.c drawing.c dsf.c findloop.c grid.c latin.c
- laydomino.c loopgen.c malloc.c matching.c midend.c misc.c penrose.c
+ laydomino.c loopgen.c malloc.c matching.c midend.c misc.c penrose.c hat.c
ps.c random.c sort.c tdq.c tree234.c version.c
${platform_common_sources})
@@ -264,6 +264,7 @@
OBJECTIVE "Reposition the points so that the lines do not cross.")
add_subdirectory(unfinished)
+add_subdirectory(aux)
cliprogram(obfusc obfusc.c)
cliprogram(latincheck latin.c COMPILE_DEFINITIONS STANDALONE_LATIN_TEST)
@@ -270,6 +271,7 @@
cliprogram(matching matching.c COMPILE_DEFINITIONS STANDALONE_MATCHING_TEST)
cliprogram(combi combi.c COMPILE_DEFINITIONS STANDALONE_COMBI_TEST)
cliprogram(divvy divvy.c COMPILE_DEFINITIONS TESTMODE)
+cliprogram(hat-test hat.c COMPILE_DEFINITIONS TEST_HAT)
cliprogram(penrose-test penrose.c COMPILE_DEFINITIONS TEST_PENROSE)
cliprogram(penrose-vector-test penrose.c COMPILE_DEFINITIONS TEST_VECTORS)
cliprogram(sort-test sort.c COMPILE_DEFINITIONS SORT_TEST)
--- /dev/null
+++ b/aux/CMakeLists.txt
@@ -1,0 +1,1 @@
+cliprogram(hatgen hatgen.c COMPILE_DEFINITIONS TEST_HAT)
--- /dev/null
+++ b/aux/doc/arrow.svg
@@ -1,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="110" height="200">
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 10 100 L 100 100 L 70 70 M 100 100 L 70 130" />
+</svg>
--- /dev/null
+++ b/aux/doc/expanded-F.svg
@@ -1,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="336" height="543">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 261.807617
+L 242.000000 244.487106
+L 242.000000 105.923035
+L 212.000000 88.602509
+L 92.000000 157.884583
+L 92.000000 192.525589
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 122.000000 175.205078 L 212.000000 175.205078 L 200.000000 163.205078 M 212.000000 175.205078 L 200.000000 187.205078 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="179.705">0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 365.730652
+L 212.000000 331.089661
+L 92.000000 261.807617
+L 62.000000 279.128113
+L 62.000000 417.692200
+L 92.000000 435.012695
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 92.000000 400.371674 L 137.000000 322.429382 L 120.607696 326.821687 M 137.000000 322.429382 L 141.392305 338.821686 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="352.91">1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 244.487106
+L 302.000000 209.846085
+L 302.000000 71.282043
+L 242.000000 105.923035
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 254.000000 157.884552 L 290.000000 157.884567 L 278.000005 145.884562 M 290.000000 157.884567 L 277.999994 169.884562 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="162.385">2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 331.089661
+L 212.000000 261.807617
+L 92.000000 192.525589
+L 92.000000 261.807617
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 143.000000 277.396088 L 161.000000 246.219162 L 144.607696 250.611469 M 161.000000 246.219162 L 165.392307 262.611466 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="152" y="266.308">3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 62.000000 105.923035
+L 62.000000 140.564056
+L 92.000000 157.884583
+L 212.000000 88.602509
+L 152.000000 53.961517
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="110.423">4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 92.000000 157.884583
+L 62.000000 140.564056
+L 32.000000 157.884583
+L 32.000000 296.448639
+L 92.000000 261.807617
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="62" y="214.346">5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 2.000000 417.692200
+L 32.000000 435.012695
+L 62.000000 417.692200
+L 62.000000 279.128113
+L 2.000000 313.769135
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="32" y="370.231">6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 62.000000 417.692200
+L 32.000000 435.012695
+L 32.000000 469.653717
+L 152.000000 538.935730
+L 152.000000 469.653717
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="474.154">7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 53.961517
+L 332.000000 19.320526
+L 302.000000 2.000000
+L 182.000000 71.282043
+L 242.000000 105.923035
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="58.4615">8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 365.730652
+L 242.000000 383.051178
+L 272.000000 365.730652
+L 272.000000 227.166611
+L 212.000000 261.807617
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="318.269">9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 417.692200
+L 242.000000 383.051178
+L 212.000000 365.730652
+L 92.000000 435.012695
+L 152.000000 469.653717
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="422.192">10</text>
+</svg>
--- /dev/null
+++ b/aux/doc/expanded-H.svg
@@ -1,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="456" height="491">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 122.000000 209.846085
+L 152.000000 227.166611
+L 272.000000 157.884567
+L 272.000000 123.243561
+L 152.000000 53.961517
+L 122.000000 71.282043
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 88.602539 L 197.000000 166.544830 L 201.392305 150.152526 M 197.000000 166.544830 L 180.607696 162.152525 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="145.064">0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 92.000000 365.730682
+L 122.000000 383.051178
+L 242.000000 313.769165
+L 242.000000 279.128143
+L 122.000000 209.846085
+L 92.000000 227.166611
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 122.000000 244.487106 L 167.000000 322.429382 L 171.392304 306.037077 M 167.000000 322.429382 L 150.607695 318.037078 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="152" y="300.949">1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 157.884567
+L 242.000000 175.205093
+L 242.000000 313.769165
+L 272.000000 331.089661
+L 392.000000 261.807617
+L 392.000000 227.166611
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 244.487106 L 272.000000 244.487106 L 284.000000 256.487106 M 272.000000 244.487106 L 284.000000 232.487106 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="248.987">2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 175.205093
+L 152.000000 227.166611
+L 242.000000 279.128143
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 233.000000 190.793549 L 206.000000 237.558914 L 222.392305 233.166610 M 206.000000 237.558914 L 201.607696 221.166609 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="231.667">3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 62.000000 244.487122
+L 122.000000 209.846085
+L 122.000000 71.282043
+L 62.000000 105.923065
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 74.000000 157.884583 L 110.000000 157.884583 L 98.000000 145.884583 M 110.000000 157.884583 L 98.000000 169.884583 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="162.385">4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 88.602539
+L 272.000000 157.884567
+L 392.000000 227.166611
+L 392.000000 157.884567
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 341.000000 142.296112 L 323.000000 173.473022 L 339.392305 169.080719 M 323.000000 173.473022 L 318.607696 157.080717 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="162.385">5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 122.000000 383.051178
+L 182.000000 417.692200
+L 302.000000 348.410156
+L 242.000000 313.769165
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 203.000000 350.142242 L 221.000000 381.319153 L 225.392304 364.926847 M 221.000000 381.319153 L 204.607695 376.926849 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="370.231">6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 53.961517
+L 152.000000 19.320526
+L 122.000000 2.000000
+L 2.000000 71.282043
+L 62.000000 105.923065
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="58.4615">7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 2.000000
+L 152.000000 19.320526
+L 152.000000 53.961517
+L 272.000000 123.243561
+L 272.000000 53.961517
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="58.4615">8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 32.000000 365.730682
+L 62.000000 383.051178
+L 92.000000 365.730682
+L 92.000000 227.166611
+L 32.000000 261.807617
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="62" y="318.269">9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 92.000000 365.730682
+L 62.000000 383.051178
+L 62.000000 417.692200
+L 182.000000 486.974213
+L 182.000000 417.692200
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="422.192">10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 261.807617
+L 422.000000 279.128143
+L 452.000000 261.807617
+L 452.000000 123.243561
+L 392.000000 157.884567
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="214.346">11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 313.769165
+L 422.000000 279.128143
+L 392.000000 261.807617
+L 272.000000 331.089661
+L 332.000000 365.730682
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="318.269">12</text>
+</svg>
--- /dev/null
+++ b/aux/doc/expanded-P.svg
@@ -1,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="366" height="526">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 261.807617
+L 272.000000 244.487137
+L 272.000000 105.923035
+L 242.000000 88.602570
+L 122.000000 157.884583
+L 122.000000 192.525604
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 175.205093 L 242.000000 175.205078 L 229.999999 163.205080 M 242.000000 175.205078 L 230.000002 187.205080 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="179.705">0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 365.730682
+L 242.000000 331.089661
+L 122.000000 261.807617
+L 92.000000 279.128113
+L 92.000000 417.692200
+L 122.000000 435.012726
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 122.000000 400.371704 L 167.000000 322.429382 L 150.607696 326.821691 M 167.000000 322.429382 L 171.392308 338.821686 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="152" y="352.91">1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 32.000000 452.333221
+L 92.000000 417.692200
+L 92.000000 279.128113
+L 32.000000 313.769165
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 44.000000 365.730652 L 80.000000 365.730652 L 68.000000 353.730652 M 80.000000 365.730652 L 68.000000 377.730652 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="62" y="370.231">2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 244.487137
+L 332.000000 209.846115
+L 332.000000 71.282043
+L 272.000000 105.923035
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 284.000000 157.884583 L 320.000000 157.884583 L 308.000000 145.884583 M 320.000000 157.884583 L 308.000000 169.884583 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="162.385">3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 331.089661
+L 242.000000 261.807617
+L 122.000000 192.525604
+L 122.000000 261.807617
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 173.000000 277.396088 L 191.000000 246.219162 L 174.607696 250.611469 M 191.000000 246.219162 L 195.392307 262.611466 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="266.308">4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 92.000000 105.923035
+L 92.000000 140.564087
+L 122.000000 157.884583
+L 242.000000 88.602570
+L 182.000000 53.961517
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="152" y="110.423">5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 122.000000 157.884583
+L 92.000000 140.564087
+L 62.000000 157.884583
+L 62.000000 296.448669
+L 122.000000 261.807617
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="214.346">6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 2.000000 469.653717
+L 2.000000 504.294739
+L 32.000000 521.615234
+L 152.000000 452.333221
+L 92.000000 417.692200
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="62" y="474.154">7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 53.961517
+L 362.000000 19.320526
+L 332.000000 2.000000
+L 212.000000 71.282043
+L 272.000000 105.923035
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="58.4615">8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 365.730682
+L 272.000000 383.051208
+L 302.000000 365.730682
+L 302.000000 227.166611
+L 242.000000 261.807617
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="318.269">9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 417.692200
+L 272.000000 383.051208
+L 242.000000 365.730682
+L 122.000000 435.012726
+L 182.000000 469.653717
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="422.192">10</text>
+</svg>
--- /dev/null
+++ b/aux/doc/expanded-T.svg
@@ -1,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="366" height="388">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 227.166595
+L 242.000000 192.525574
+L 122.000000 123.243546
+L 92.000000 140.564041
+L 92.000000 279.128113
+L 122.000000 296.448639
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 122.000000 261.807617 L 167.000000 183.865326 L 150.607696 188.257631 M 167.000000 183.865326 L 171.392305 200.257630 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="152" y="214.346">0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 32.000000 313.769135
+L 92.000000 279.128113
+L 92.000000 140.564041
+L 32.000000 175.205078
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 44.000000 227.166595 L 80.000000 227.166595 L 68.000000 215.166595 M 80.000000 227.166595 L 68.000000 239.166595 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="62" y="231.667">1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 192.525574
+L 242.000000 123.243546
+L 122.000000 53.961517
+L 122.000000 123.243546
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 173.000000 138.832001 L 191.000000 107.655090 L 174.607695 112.047394 M 191.000000 107.655090 L 195.392304 124.047396 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="127.744">2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 261.807617
+L 242.000000 227.166595
+L 122.000000 296.448639
+L 182.000000 331.089630
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 221.000000 294.716583 L 203.000000 263.539673 L 198.607696 279.931978 M 203.000000 263.539673 L 219.392305 267.931977 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="283.628">3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 122.000000 19.320496
+L 92.000000 2.000000
+L 62.000000 19.320496
+L 62.000000 157.884567
+L 122.000000 123.243546
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="75.782">4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 2.000000 331.089630
+L 2.000000 365.730652
+L 32.000000 383.051147
+L 152.000000 313.769135
+L 92.000000 279.128113
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="62" y="335.59">5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 279.128113
+L 362.000000 261.807617
+L 362.000000 227.166595
+L 242.000000 157.884567
+L 242.000000 227.166595
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="231.667">6</text>
+</svg>
--- /dev/null
+++ b/aux/doc/hat-kites.svg
@@ -1,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="192" height="168">
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 107.923042
+L 184.000000 107.923042
+L 184.000000 73.282028
+L 154.000000 55.961521
+L 124.000000 38.641014
+L 94.000000 55.961521
+L 64.000000 4.000000
+L 4.000000 4.000000
+L 4.000000 38.641014
+L 34.000000 55.961521
+L 4.000000 107.923042
+L 34.000000 159.884567
+L 64.000000 142.564056
+L 94.000000 159.884567
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 107.923042 L 154.000000 55.961521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 107.923042 L 94.000000 55.961521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 4.000000 L 34.000000 55.961521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 107.923042 L 4.000000 107.923042" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 34.000000 55.961521 L 64.000000 73.282028" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 55.961521 L 64.000000 73.282028" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 142.564056 L 64.000000 73.282028" />
+<text style="fill: black; font-family: Sans; font-size: 22px; text-anchor: middle; text-align: center; " x="34" y="27.9205">0</text>
+<text style="fill: black; font-family: Sans; font-size: 22px; text-anchor: middle; text-align: center; " x="64" y="45.241">1</text>
+<text style="fill: black; font-family: Sans; font-size: 22px; text-anchor: middle; text-align: center; " x="34" y="97.2025">2</text>
+<text style="fill: black; font-family: Sans; font-size: 22px; text-anchor: middle; text-align: center; " x="34" y="131.844">3</text>
+<text style="fill: black; font-family: Sans; font-size: 22px; text-anchor: middle; text-align: center; " x="94" y="131.844">4</text>
+<text style="fill: black; font-family: Sans; font-size: 22px; text-anchor: middle; text-align: center; " x="94" y="97.2025">5</text>
+<text style="fill: black; font-family: Sans; font-size: 22px; text-anchor: middle; text-align: center; " x="124" y="79.882">6</text>
+<text style="fill: black; font-family: Sans; font-size: 22px; text-anchor: middle; text-align: center; " x="154" y="97.2025">7</text>
+</svg>
--- /dev/null
+++ b/aux/doc/hatmaps.html
@@ -1,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
+<title>Kitemaps and metamaps for the hat tiling generator</title>
+<style type="text/css">
+ table, tbody, tr, td, th {
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ border-collapse: collapse;
+ }
+ table.noborder, table.noborder tbody, table.noborder td,
+ table.noborder th, table.noborder tr { border: none; }
+ table {
+ margin: 1em;
+ }
+ th, td {
+ padding: 0.5em;
+ }
+</style>
+</head>
+<body>
+ <h1>Kitemaps and metamaps for the hat tiling generator</h1>
+ <p>See <a href="hats.html">hats.html</a> for the full explanation.</p>
+ <p>Here's the full set of kitemaps and metamaps for all the tile
+ types:</p>
+ <table>
+ <tr>
+ <th>Tile name</th>
+ <th>Original tile</th>
+ <th>First-order expansion</th>
+ <th>Kitemap</th>
+ <th>Metamap</th>
+ <tr>
+ <td>H</td>
+ <td><img src="single-H.svg"></td>
+ <td><img src="expanded-H.svg"></td>
+ <td><img src="kitemap-H.svg"></td>
+ <td><img src="metamap-H.svg"></td>
+ </tr>
+ <tr>
+ <td>T</td>
+ <td><img src="single-T.svg"></td>
+ <td><img src="expanded-T.svg"></td>
+ <td><img src="kitemap-T.svg"></td>
+ <td><img src="metamap-T.svg"></td>
+ </tr>
+ <tr>
+ <td>P</td>
+ <td><img src="single-P.svg"></td>
+ <td><img src="expanded-P.svg"></td>
+ <td><img src="kitemap-P.svg"></td>
+ <td><img src="metamap-P.svg"></td>
+ </tr>
+ <tr>
+ <td>F</td>
+ <td><img src="single-F.svg"></td>
+ <td><img src="expanded-F.svg"></td>
+ <td><img src="kitemap-F.svg"></td>
+ <td><img src="metamap-F.svg"></td>
+ </tr>
+ </table>
+</body>
+</html>
--- /dev/null
+++ b/aux/doc/hats-single-F.svg
@@ -1,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="96" height="171">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 47.000000 88.602539
+L 32.000000 62.621773
+L 17.000000 71.282028
+L 17.000000 88.602539
+L 17.000000 105.923042
+L 32.000000 114.583298
+L 17.000000 140.564056
+L 32.000000 166.544815
+L 47.000000 157.884567
+L 47.000000 140.564056
+L 77.000000 140.564056
+L 92.000000 114.583298
+L 77.000000 105.923042
+L 77.000000 88.602539
+z" />
+<text style="fill: black; font-family: Sans; font-size: 20px; text-anchor: middle; text-align: center; " x="62" y="120.583">0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 77.000000 36.641014
+L 92.000000 10.660248
+L 77.000000 2.000000
+L 62.000000 10.660248
+L 47.000000 19.320503
+L 47.000000 36.641014
+L 17.000000 36.641014
+L 2.000000 62.621773
+L 17.000000 71.282028
+L 32.000000 62.621773
+L 47.000000 88.602539
+L 77.000000 88.602539
+L 77.000000 71.282028
+L 92.000000 62.621773
+z" />
+<text style="fill: black; font-family: Sans; font-size: 20px; text-anchor: middle; text-align: center; " x="62" y="68.6218">1</text>
+</svg>
--- /dev/null
+++ b/aux/doc/hats-single-H.svg
@@ -1,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="171" height="188">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 62.000000 157.884567
+L 92.000000 157.884567
+L 92.000000 140.564056
+L 77.000000 131.903809
+L 62.000000 123.243553
+L 47.000000 131.903809
+L 32.000000 105.923050
+L 2.000000 105.923050
+L 2.000000 123.243553
+L 17.000000 131.903809
+L 2.000000 157.884567
+L 17.000000 183.865326
+L 32.000000 175.205078
+L 47.000000 183.865326
+z" />
+<text style="fill: black; font-family: Sans; font-size: 20px; text-anchor: middle; text-align: center; " x="32" y="163.885">0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 92.000000 105.923050
+L 77.000000 131.903809
+L 92.000000 140.564056
+L 107.000000 131.903809
+L 122.000000 123.243553
+L 122.000000 105.923050
+L 152.000000 105.923050
+L 167.000000 79.942284
+L 152.000000 71.282021
+L 137.000000 79.942284
+L 122.000000 53.961525
+L 92.000000 53.961525
+L 92.000000 71.282021
+L 77.000000 79.942284
+z" />
+<text style="fill: black; font-family: Sans; font-size: 20px; text-anchor: middle; text-align: center; " x="107" y="85.9423">1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 62.000000 53.961525
+L 92.000000 53.961525
+L 92.000000 36.641014
+L 77.000000 27.980759
+L 62.000000 19.320511
+L 47.000000 27.980759
+L 32.000000 2.000000
+L 2.000000 2.000000
+L 2.000000 19.320511
+L 17.000000 27.980759
+L 2.000000 53.961525
+L 17.000000 79.942284
+L 32.000000 71.282021
+L 47.000000 79.942284
+z" />
+<text style="fill: black; font-family: Sans; font-size: 20px; text-anchor: middle; text-align: center; " x="32" y="59.9615">2</text>
+<path style="fill: rgba(0,0,0,0.2); stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 47.000000 131.903809
+L 62.000000 123.243553
+L 77.000000 131.903809
+L 92.000000 105.923050
+L 77.000000 79.942284
+L 92.000000 71.282021
+L 92.000000 53.961525
+L 62.000000 53.961525
+L 47.000000 79.942284
+L 32.000000 71.282021
+L 17.000000 79.942284
+L 2.000000 88.602539
+L 2.000000 105.923050
+L 32.000000 105.923050
+z" />
+<text style="fill: black; font-family: Sans; font-size: 20px; text-anchor: middle; text-align: center; " x="62" y="111.923">3</text>
+</svg>
--- /dev/null
+++ b/aux/doc/hats-single-P.svg
@@ -1,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="96" height="171">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 47.000000 88.602547
+L 32.000000 62.621788
+L 17.000000 71.282051
+L 17.000000 88.602547
+L 17.000000 105.923065
+L 32.000000 114.583313
+L 17.000000 140.564087
+L 32.000000 166.544846
+L 47.000000 157.884583
+L 47.000000 140.564087
+L 77.000000 140.564087
+L 92.000000 114.583313
+L 77.000000 105.923065
+L 77.000000 88.602547
+z" />
+<text style="fill: black; font-family: Sans; font-size: 20px; text-anchor: middle; text-align: center; " x="62" y="120.583">0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 77.000000 36.641037
+L 92.000000 10.660263
+L 77.000000 2.000000
+L 62.000000 10.660263
+L 47.000000 19.320526
+L 47.000000 36.641037
+L 17.000000 36.641037
+L 2.000000 62.621788
+L 17.000000 71.282051
+L 32.000000 62.621788
+L 47.000000 88.602547
+L 77.000000 88.602547
+L 77.000000 71.282051
+L 92.000000 62.621788
+z" />
+<text style="fill: black; font-family: Sans; font-size: 20px; text-anchor: middle; text-align: center; " x="62" y="68.6218">1</text>
+</svg>
--- /dev/null
+++ b/aux/doc/hats-single-T.svg
@@ -1,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="81" height="110">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 32.000000 27.980759
+L 17.000000 2.000000
+L 2.000000 10.660263
+L 2.000000 27.980759
+L 2.000000 45.301277
+L 17.000000 53.961529
+L 2.000000 79.942291
+L 17.000000 105.923050
+L 32.000000 97.262802
+L 32.000000 79.942291
+L 62.000000 79.942291
+L 77.000000 53.961529
+L 62.000000 45.301277
+L 62.000000 27.980759
+z" />
+<text style="fill: black; font-family: Sans; font-size: 20px; text-anchor: middle; text-align: center; " x="47" y="59.9615">0</text>
+</svg>
--- /dev/null
+++ b/aux/doc/hats.html
@@ -1,0 +1,258 @@
+<html>
+<head>
+<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
+<title>Generating hat tilings for Loopy</title>
+<style type="text/css">
+ table, tbody, tr, td, th {
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ border-collapse: collapse;
+ }
+ table.noborder, table.noborder tbody, table.noborder td,
+ table.noborder th, table.noborder tr { border: none; }
+ table {
+ margin: 1em;
+ }
+ th, td {
+ padding: 0.5em;
+ }
+</style>
+</head>
+<body>
+ <h1>Generating hat tilings for Loopy</h1>
+ <p>The <a href="https://arxiv.org/abs/2303.10798">original paper</a>
+ describes a method for generating hat tilings from a system of four
+ 'metatiles'. You can start with any one of the four tiles, and then
+ recursively apply a set of expansion rules that turn each tile into
+ a collection of smaller tiles from the same set.</p>
+ <p>This table shows the four tiles, with their one-letter names as
+ given in the paper, and how each one is expanded.</p>
+ <p>All the tiles have a significant orientation. The H, T and P
+ tiles are marked with arrows to indicate the orientation. The F tile
+ is asymmetric, so no arrow is needed.</p>
+ <p>I've assigned each tile in each expansion a number, which Loopy
+ will use for its coordinate system.</p>
+ <table>
+ <tr>
+ <th>Tile name</th>
+ <th>Single tile</th>
+ <th>Expansion</th>
+ <tr>
+ <td>H</td>
+ <td><img src="single-H.svg"></td>
+ <td><img src="expanded-H.svg"></td>
+ </tr>
+ <tr>
+ <td>T</td>
+ <td><img src="single-T.svg"></td>
+ <td><img src="expanded-T.svg"></td>
+ </tr>
+ <tr>
+ <td>P</td>
+ <td><img src="single-P.svg"></td>
+ <td><img src="expanded-P.svg"></td>
+ </tr>
+ <tr>
+ <td>F</td>
+ <td><img src="single-F.svg"></td>
+ <td><img src="expanded-F.svg"></td>
+ </tr>
+ </table>
+ <p><strong>Note that these expansions overlap</strong>. When two
+ adjacent metatiles are expanded, the outer layer of P and F tiles in
+ their expansions must be placed so that they overlap each other. The
+ original paper suggests a set of tiles to remove from these
+ expansions so that each metatile expands to a <em>disjoint</em> set
+ of smaller tiles. In our implementation, however, we prefer to keep
+ the overlap, because our coordinate system will use it.</p>
+ <p>Once you've generated a large enough patch of metatiles for your
+ needs, the final step is to convert it into the actual hat tiles.
+ The expansion of each metatile into hats is shown here. Again, I've
+ assigned numbers to each hat for coordinate-system purposes:</p>
+ <table>
+ <tr>
+ <th>Tile name</th>
+ <th>Conversion into hats</th>
+ <tr>
+ <td>H</td>
+ <td><img src="single-H.svg"></td>
+ <td><img src="hats-single-H.svg"></td>
+ </tr>
+ <tr>
+ <td>T</td>
+ <td><img src="single-T.svg"></td>
+ <td><img src="hats-single-T.svg"></td>
+ </tr>
+ <tr>
+ <td>P</td>
+ <td><img src="single-P.svg"></td>
+ <td><img src="hats-single-P.svg"></td>
+ </tr>
+ <tr>
+ <td>F</td>
+ <td><img src="single-F.svg"></td>
+ <td><img src="hats-single-F.svg"></td>
+ </tr>
+ </table>
+ <p>(The hat in the middle of the H is shaded to indicate that it's
+ one of the rare reflected ones. All the other hats are rotations of
+ each other.)</p>
+ <p>Given all of this, an obvious approach to generating a random
+ patch of hat tiling would be to start with a single metatile,
+ iterate the expansion process a few times until you have a tiled
+ area much larger than you need, and then pick a subrectangle of
+ it at random.</p>
+ <p>Loopy's algorithm for generating Penrose tilings (which admit a
+ similar, though less complicated, expansion system) works in exactly
+ this way.</p>
+ <p>One problem with that algorithm is that it spends a lot of effort
+ on generating huge areas of tiles that aren't actually needed. So
+ you'd prefer to adjust the algorithm so that at every stage of
+ expansion it spots tiles completely outside the target rectangle,
+ and throws them away <em>before</em> spending 5 iterations on
+ exponentially expanding them into huge amounts of detail that will
+ only be thrown away anyway later.</p>
+ <p>That works well for Penrose tilings, because there, the expansion
+ procedure is geometrically precise: coordinates in the expanded
+ tiling are scaled up by an exact factor from coordinates in the
+ original tiling. So at every stage it's easy to know exactly where
+ your target rectangle <em>is</em>, and discard things that don't
+ overlap it.</p>
+ <p>But the metatiles shown here don't have that property. The tiles
+ distort slightly as they expand. The <em>topological</em> properties
+ of the expanded tiling match the original (which expanded tiles
+ connect to each other), but the geometry (precise distances) is
+ different. So it would be harder to implement the pruning for this
+ tiling. The target rectangle might not even be rectangular in every
+ iteration!</p>
+ <p>Instead, I came up with a completely different mechanism, by
+ devising a coordinate system to track our position within multiple
+ layers of tile expansion. This allows us to generate precisely the
+ area of tiling we need, and waste no effort at all on anything
+ outside the target region.</p>
+ <p>We begin by assigning an integer index to each kite making up an
+ individual hat:</p>
+ <img src="hat-kites.svg">
+ <p>(For a reflected hat, these indices work in mirror image, so that
+ for example 5 is still the kite in the middle.)</p>
+ <p>Together with the indices we've assigned to hats within each
+ metatile, and to metatiles in the expansion of another metatile,
+ this gives us a coordinate system that can identify an individual
+ kite in an n-times-expanded metatile. For each large metatile
+ expansion, you can give the index of the smaller metatile selected
+ from its expansion; when we reach the last layer of metatiles and
+ expand them into hats, we can give the index of the hat in that
+ metatile; finally we can index the kite in that hat.</p>
+ <p><strong>But note that a kite can have multiple
+ coordinates</strong>, because of the overlap between the expansions
+ of adjacent metatiles. This will be useful!</p>
+ <p>Our next step is to unambiguously name the four directions in
+ which you can move from one kite to an adjacent kite. The directions
+ should be independent of the orientation of the kite. I've chosen to
+ name them from the viewpoint of someone standing at the pointy end
+ of the kite and looking towards the blunt end:</p>
+ <dl>
+ <dt><strong>Left</strong></dt>
+ <dd>Rotate 60° anticlockwise about the pointy end of the kite. For
+ example, in the above hat, going 'left' from kite 5 takes you to
+ kite 4.</dd>
+ <dt><strong>Right</strong></dt>
+ <dd>Rotate 60° clockwise about the pointy end. From kite 5, this
+ would take you to kite 6.</dd>
+ <dt><strong>Forward left</strong></dt>
+ <dd>Head forwards and slightly left, to the kite sharing the
+ left-hand one of this kite's short edges (as seen from the
+ centre). Equivalently, rotate 120° <em>clockwise</em> about the
+ blunt end. From kite 5, this takes you to kite 2.</dd>
+ <dt><strong>Forward right</strong></dt>
+ <dd>Head forwards and slightly right. Or rotate 120° anticlockwise
+ about the blunt end, if you prefer to think of it that way. From
+ kite 5, this takes you to kite 1.</dd>
+ </dl>
+ <p>The idea is that if we know how to transform the coordinates of a
+ single kite into the coordinates of each of those four adjacent
+ kites, then we can iterate that over a whole area and determine the
+ coordinates of every kite in the whole tiling.</p>
+ <p>Having done that, it's easy to identify each individual kite, by
+ several different methods. For example, you could iterate over edges
+ of the tiling to see whether the kites on each side have coordinates
+ differing only in the kite index; if so, they're part of the same
+ hat, and if not, not. Or a completely different approach (in fact
+ the one Loopy actually uses) would be to trace round the boundary of
+ each hat by starting from its kite #0 and just knowing what shape a
+ hat is.</p>
+ <p>So now we have to come up with an algorithm that lets us
+ transform a kite coordinate by making one of the four permitted
+ moves. To do this, we use two multilevel types of map.</p>
+ <p>The <strong>kitemap</strong> for a given metatile type is made by
+ expanding the metatile once into more metatiles, and then into hats.
+ For example, the T tile:</p>
+ <table class="noborder">
+ <tr>
+ <td><img src="single-T.svg"></td>
+ <td><img src="arrow.svg"></td>
+ <td><img src="expanded-T.svg" height="200px"></td>
+ <td><img src="arrow.svg"></td>
+ <td><img src="kitemap-T.svg" height="500px"></td>
+ </tr>
+ </table>
+ <p>In each kite, we show a three-part coordinate, in little-endian
+ fashion (because that matches the order the coordinates are stored
+ in an array in the code that actually generates the tilings). For
+ example, 7.3.0 means kite 7 in hat 3 of metatile 0 of the
+ expansion.</p>
+ <p>This map can be converted into a lookup table, indexed by those
+ three-part coordinates and also the four move directions, which
+ allows you to look up that (for example) going Left from kite 7.3.0
+ goes to 0.0.0, or going Forward Left from 7.3.0 goes to 3.1.3.</p>
+ <p>But if you're at the very edge of the kitemap, this isn't enough.
+ For example, kite 0.0.4 right at the top can go Left to 1.0.4, but
+ if it wants to go in any of the other three directions, this map
+ doesn't help at all.</p>
+ <p>This is where the overlap between the metatile expansions comes
+ in. If you're in kite 0.0.4, then in particular, you're in the F
+ tile numbered 4 in the expansion of a larger T metatile. And that F
+ tile is <em>also</em> part of the expansion of at least one other
+ second-order metatile – maybe two of them – which means that there
+ are other equivalent coordinates describing the same kite, which
+ will place it in a different kitemap where it <em>isn't</em> right
+ on the edge,</p>
+ <p>In order to find those equivalent coordinates, we create a second
+ map for each metatile type, called the <strong>metamap</strong>.
+ This one arises from expanding the metatile twice into other
+ metatiles, instead of into hats:</p>
+ <table class="noborder">
+ <tr>
+ <td><img src="single-T.svg"></td>
+ <td><img src="arrow.svg"></td>
+ <td><img src="expanded-T.svg" height="200px"></td>
+ <td><img src="arrow.svg"></td>
+ <td><img src="metamap-T.svg" height="500px"></td>
+ </tr>
+ </table>
+ <p>Again, the coordinates are little-end first, so that 7.4 means
+ the 7th smallest-size tile expanded from the 4th medium-sized tile
+ expanded from the original single large tile.</p>
+ <p>Unlike the kitemap, the metamap is not used for <em>moving
+ around</em> the tiling to a different kite. It's used for rewriting
+ the coordinates of the current kite into equivalent forms. So each
+ the small tile in the metamap that's part of the expansion
+ of <em>more than one</em> medium-sized tile has more than one
+ coordinate pair. For example, tile 5.2 is also tile 5.4, and tile
+ 7.0 is also 8.3 <em>and</em> also 4.5 (because it's where three
+ medium-tile expansions meet).</p>
+ <p>Using both of these maps (converted into appropriate lookup
+ tables in the code), you can always eventually find a valid
+ coordinate representation of whichever kite you like adjacent to
+ your current one. If the kitemap corresponding to the current
+ coordinates doesn't tell you the coordinates of the next kite, then
+ you can try rewriting the two least-significant metatile indices
+ (using the metamap corresponding to the type of the next-larger
+ metatile still) and then see if that gives you a new kitemap that
+ works. If even that doesn't work, you can move another level up, and
+ try a metamap rewrite on the 2nd and 3rd smallest metatile levels,
+ or the 3rd and 4th, etc. And eventually, you find something you can
+ do.</p>
+ <p>The full set of kitemaps and metamaps for all the tile
+ types is in <a href="hatmaps.html">hatmaps.html</a>.</p>
+</body>
+</html>
--- /dev/null
+++ b/aux/doc/kitemap-F.svg
@@ -1,0 +1,783 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="732" height="1104">
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 419.692169
+L 544.000000 367.730652
+L 514.000000 350.410156
+L 484.000000 367.730652
+L 454.000000 385.051178
+L 454.000000 419.692169
+L 394.000000 419.692169
+L 364.000000 471.653687
+L 394.000000 488.974213
+L 424.000000 471.653687
+L 454.000000 523.615234
+L 514.000000 523.615234
+L 514.000000 488.974213
+L 544.000000 471.653687
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 419.692169 L 484.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 419.692169 L 454.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 419.692169 L 424.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 419.692169 L 454.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 471.653687 L 454.000000 454.333191" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 419.692169 L 454.000000 454.333191" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 488.974213 L 454.000000 454.333191" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="457.333">0.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="440.013">1.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="491.974">2.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="509.295">3.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="457.333">4.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="440.013">5.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="405.372">6.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="388.051">7.0.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 315.769165
+L 484.000000 367.730652
+L 514.000000 350.410156
+L 514.000000 315.769165
+L 514.000000 281.128113
+L 484.000000 263.807617
+L 514.000000 211.846069
+L 484.000000 159.884521
+L 454.000000 177.205017
+L 454.000000 211.846069
+L 394.000000 211.846069
+L 364.000000 263.807617
+L 394.000000 281.128113
+L 394.000000 315.769165
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 315.769165 L 514.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 315.769165 L 484.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 211.846069 L 454.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 315.769165 L 394.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 211.846069 L 454.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 263.807617 L 454.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 281.128113 L 454.000000 246.487122" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="197.526">0.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="232.167">1.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="232.167">2.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="249.487">3.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="301.449">4.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="284.128">5.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="301.449">6.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="336.09">7.1.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 315.769165
+L 364.000000 263.807617
+L 334.000000 246.487122
+L 304.000000 263.807617
+L 274.000000 281.128113
+L 274.000000 315.769165
+L 214.000000 315.769165
+L 184.000000 367.730652
+L 214.000000 385.051178
+L 244.000000 367.730652
+L 274.000000 419.692169
+L 334.000000 419.692169
+L 334.000000 385.051178
+L 364.000000 367.730652
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 315.769165 L 304.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 315.769165 L 274.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 315.769165 L 244.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 315.769165 L 274.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 367.730652 L 274.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 315.769165 L 274.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 385.051178 L 274.000000 350.410156" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="353.41">0.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="336.09">1.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="388.051">2.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="405.372">3.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="353.41">4.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="336.09">5.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="301.449">6.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="284.128">7.2.0</text>
+<path style="fill: rgba(0,0,0,0.2); stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 419.692169
+L 454.000000 385.051178
+L 484.000000 367.730652
+L 454.000000 315.769165
+L 394.000000 315.769165
+L 394.000000 281.128113
+L 364.000000 263.807617
+L 334.000000 315.769165
+L 364.000000 367.730652
+L 334.000000 385.051178
+L 334.000000 419.692169
+L 334.000000 454.333221
+L 364.000000 471.653687
+L 394.000000 419.692169
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 419.692169 L 334.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 419.692169 L 364.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 315.769165 L 394.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 419.692169 L 454.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 315.769165 L 394.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 367.730652 L 394.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 385.051178 L 394.000000 350.410156" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="301.449">0.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="336.09">1.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="336.09">2.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="353.41">3.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="405.372">4.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="388.051">5.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="405.372">6.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="440.013">7.3.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 627.538269
+L 364.000000 575.576782
+L 334.000000 592.897278
+L 334.000000 627.538269
+L 334.000000 662.179321
+L 364.000000 679.499817
+L 334.000000 731.461304
+L 364.000000 783.422852
+L 394.000000 766.102356
+L 394.000000 731.461304
+L 454.000000 731.461304
+L 484.000000 679.499817
+L 454.000000 662.179321
+L 454.000000 627.538269
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 627.538269 L 334.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 627.538269 L 364.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 731.461304 L 394.000000 731.461304" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 627.538269 L 454.000000 731.461304" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 731.461304 L 394.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 679.499817 L 394.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 662.179321 L 394.000000 696.820312" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="751.782">0.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="717.141">1.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="717.141">2.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="699.82">3.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="647.859">4.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="665.179">5.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="647.859">6.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="613.218">7.0.1</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 627.538269
+L 334.000000 627.538269
+L 334.000000 592.897278
+L 304.000000 575.576782
+L 274.000000 558.256226
+L 244.000000 575.576782
+L 214.000000 523.615234
+L 154.000000 523.615234
+L 154.000000 558.256226
+L 184.000000 575.576782
+L 154.000000 627.538269
+L 184.000000 679.499817
+L 214.000000 662.179321
+L 244.000000 679.499817
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 627.538269 L 304.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 627.538269 L 244.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 523.615234 L 184.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 627.538269 L 154.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 575.576782 L 214.000000 592.897217" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 575.576782 L 214.000000 592.897217" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 662.179321 L 214.000000 592.897217" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="543.936">0.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="561.256">1.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="613.218">2.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="647.859">3.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="647.859">4.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="613.218">5.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="595.897">6.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="613.218">7.1.1</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 731.461304
+L 184.000000 679.499817
+L 154.000000 696.820312
+L 154.000000 731.461304
+L 154.000000 766.102356
+L 184.000000 783.422852
+L 154.000000 835.384399
+L 184.000000 887.345886
+L 214.000000 870.025391
+L 214.000000 835.384399
+L 274.000000 835.384399
+L 304.000000 783.422852
+L 274.000000 766.102356
+L 274.000000 731.461304
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 731.461304 L 154.000000 731.461304" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 731.461304 L 184.000000 783.422852" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 835.384399 L 214.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 731.461304 L 274.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 835.384399 L 214.000000 800.743347" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 783.422852 L 214.000000 800.743347" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 766.102356 L 214.000000 800.743347" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="855.705">0.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="821.064">1.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="821.064">2.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="803.743">3.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="751.782">4.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="769.102">5.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="751.782">6.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="717.141">7.2.1</text>
+<path style="fill: rgba(0,0,0,0.2); stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 679.499817
+L 334.000000 662.179321
+L 334.000000 627.538269
+L 274.000000 627.538269
+L 244.000000 679.499817
+L 214.000000 662.179321
+L 184.000000 679.499817
+L 214.000000 731.461304
+L 274.000000 731.461304
+L 274.000000 766.102356
+L 304.000000 783.422852
+L 334.000000 800.743347
+L 364.000000 783.422852
+L 334.000000 731.461304
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 731.461304 L 304.000000 783.422852" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 731.461304 L 274.000000 731.461304" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 731.461304 L 244.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 731.461304 L 274.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 679.499817 L 274.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 731.461304 L 274.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 662.179321 L 274.000000 696.820312" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="699.82">0.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="717.141">1.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="665.179">2.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="647.859">3.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="699.82">4.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="717.141">5.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="751.782">6.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="769.102">7.3.1</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 315.769165
+L 544.000000 263.807617
+L 514.000000 281.128113
+L 514.000000 315.769165
+L 514.000000 350.410156
+L 544.000000 367.730652
+L 514.000000 419.692169
+L 544.000000 471.653687
+L 574.000000 454.333221
+L 574.000000 419.692169
+L 634.000000 419.692169
+L 664.000000 367.730652
+L 634.000000 350.410156
+L 634.000000 315.769165
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 315.769165 L 514.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 315.769165 L 544.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 419.692169 L 574.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 315.769165 L 634.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 419.692169 L 574.000000 385.051178" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 367.730652 L 574.000000 385.051178" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 350.410156 L 574.000000 385.051178" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="440.013">0.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="405.372">1.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="405.372">2.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="388.051">3.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="336.09">4.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="353.41">5.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="336.09">6.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="301.449">7.0.2</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 211.846069
+L 664.000000 159.884521
+L 634.000000 142.564087
+L 604.000000 159.884521
+L 574.000000 177.205017
+L 574.000000 211.846069
+L 514.000000 211.846069
+L 484.000000 263.807617
+L 514.000000 281.128113
+L 544.000000 263.807617
+L 574.000000 315.769165
+L 634.000000 315.769165
+L 634.000000 281.128113
+L 664.000000 263.807617
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 211.846069 L 604.000000 159.884521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 211.846069 L 574.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 211.846069 L 544.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 211.846069 L 574.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 263.807617 L 574.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 211.846069 L 574.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 281.128113 L 574.000000 246.487122" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="249.487">0.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="232.167">1.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="284.128">2.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="301.449">3.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="249.487">4.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="232.167">5.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="197.526">6.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="180.205">7.1.2</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 523.615234
+L 274.000000 523.615234
+L 274.000000 558.256226
+L 304.000000 575.576782
+L 334.000000 592.897278
+L 364.000000 575.576782
+L 394.000000 627.538269
+L 454.000000 627.538269
+L 454.000000 592.897278
+L 424.000000 575.576782
+L 454.000000 523.615234
+L 424.000000 471.653687
+L 394.000000 488.974213
+L 364.000000 471.653687
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 523.615234 L 304.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 523.615234 L 364.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 627.538269 L 424.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 523.615234 L 454.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 575.576782 L 394.000000 558.256226" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 575.576782 L 394.000000 558.256226" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 488.974213 L 394.000000 558.256226" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="613.218">0.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="595.897">1.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="543.936">2.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="509.295">3.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="509.295">4.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="543.936">5.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="561.256">6.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="543.936">7.0.3</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 419.692169
+L 244.000000 367.730652
+L 214.000000 385.051178
+L 214.000000 419.692169
+L 214.000000 454.333221
+L 244.000000 471.653687
+L 214.000000 523.615234
+L 244.000000 575.576782
+L 274.000000 558.256226
+L 274.000000 523.615234
+L 334.000000 523.615234
+L 364.000000 471.653687
+L 334.000000 454.333221
+L 334.000000 419.692169
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 419.692169 L 214.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 419.692169 L 244.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 523.615234 L 274.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 419.692169 L 334.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 523.615234 L 274.000000 488.974213" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 471.653687 L 274.000000 488.974213" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 454.333221 L 274.000000 488.974213" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="543.936">0.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="509.295">1.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="509.295">2.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="491.974">3.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="440.013">4.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="457.333">5.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="440.013">6.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="405.372">7.1.3</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 211.846069
+L 304.000000 159.884521
+L 274.000000 142.564087
+L 244.000000 159.884521
+L 214.000000 177.205017
+L 214.000000 211.846069
+L 154.000000 211.846069
+L 124.000000 263.807617
+L 154.000000 281.128113
+L 184.000000 263.807617
+L 214.000000 315.769165
+L 274.000000 315.769165
+L 274.000000 281.128113
+L 304.000000 263.807617
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 211.846069 L 244.000000 159.884521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 211.846069 L 214.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 211.846069 L 184.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 211.846069 L 214.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 263.807617 L 214.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 211.846069 L 214.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 281.128113 L 214.000000 246.487122" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="249.487">0.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="232.167">1.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="284.128">2.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="301.449">3.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="249.487">4.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="232.167">5.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="197.526">6.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="180.205">7.0.4</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 211.846069
+L 454.000000 211.846069
+L 454.000000 177.205017
+L 424.000000 159.884521
+L 394.000000 142.564087
+L 364.000000 159.884521
+L 334.000000 107.923035
+L 274.000000 107.923035
+L 274.000000 142.564087
+L 304.000000 159.884521
+L 274.000000 211.846069
+L 304.000000 263.807617
+L 334.000000 246.487122
+L 364.000000 263.807617
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 211.846069 L 424.000000 159.884521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 211.846069 L 364.000000 159.884521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 107.923035 L 304.000000 159.884521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 211.846069 L 274.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 159.884521 L 334.000000 177.205078" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 159.884521 L 334.000000 177.205078" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 246.487122 L 334.000000 177.205078" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="128.244">0.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="145.564">1.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="197.526">2.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="232.167">3.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="232.167">4.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="197.526">5.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="180.205">6.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="197.526">7.1.4</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 419.692169
+L 184.000000 471.653687
+L 214.000000 454.333221
+L 214.000000 419.692169
+L 214.000000 385.051178
+L 184.000000 367.730652
+L 214.000000 315.769165
+L 184.000000 263.807617
+L 154.000000 281.128113
+L 154.000000 315.769165
+L 94.000000 315.769165
+L 64.000000 367.730652
+L 94.000000 385.051178
+L 94.000000 419.692169
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 419.692169 L 214.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 419.692169 L 184.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 315.769165 L 154.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 419.692169 L 94.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 315.769165 L 154.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 367.730652 L 154.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 385.051178 L 154.000000 350.410156" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="301.449">0.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="336.09">1.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="336.09">2.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="353.41">3.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="405.372">4.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="388.051">5.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="405.372">6.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="440.013">7.0.5</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 523.615234
+L 64.000000 575.576782
+L 94.000000 592.897278
+L 124.000000 575.576782
+L 154.000000 558.256226
+L 154.000000 523.615234
+L 214.000000 523.615234
+L 244.000000 471.653687
+L 214.000000 454.333221
+L 184.000000 471.653687
+L 154.000000 419.692169
+L 94.000000 419.692169
+L 94.000000 454.333221
+L 64.000000 471.653687
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 523.615234 L 124.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 523.615234 L 154.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 523.615234 L 184.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 523.615234 L 154.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 471.653687 L 154.000000 488.974213" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 523.615234 L 154.000000 488.974213" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 454.333221 L 154.000000 488.974213" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="491.974">0.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="509.295">1.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="457.333">2.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="440.013">3.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="491.974">4.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="509.295">5.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="543.936">6.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="561.256">7.1.5</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 731.461304
+L 64.000000 679.499817
+L 34.000000 696.820312
+L 34.000000 731.461304
+L 34.000000 766.102356
+L 64.000000 783.422852
+L 34.000000 835.384399
+L 64.000000 887.345886
+L 94.000000 870.025391
+L 94.000000 835.384399
+L 154.000000 835.384399
+L 184.000000 783.422852
+L 154.000000 766.102356
+L 154.000000 731.461304
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 731.461304 L 34.000000 731.461304" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 731.461304 L 64.000000 783.422852" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 34.000000 835.384399 L 94.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 731.461304 L 154.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 835.384399 L 94.000000 800.743347" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 783.422852 L 94.000000 800.743347" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 766.102356 L 94.000000 800.743347" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="64" y="855.705">0.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="64" y="821.064">1.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="821.064">2.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="803.743">3.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="751.782">4.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="769.102">5.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="64" y="751.782">6.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="64" y="717.141">7.0.6</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 627.538269
+L 184.000000 575.576782
+L 154.000000 558.256226
+L 124.000000 575.576782
+L 94.000000 592.897278
+L 94.000000 627.538269
+L 34.000000 627.538269
+L 4.000000 679.499817
+L 34.000000 696.820312
+L 64.000000 679.499817
+L 94.000000 731.461304
+L 154.000000 731.461304
+L 154.000000 696.820312
+L 184.000000 679.499817
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 627.538269 L 124.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 627.538269 L 94.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 34.000000 627.538269 L 64.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 627.538269 L 94.000000 731.461304" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 679.499817 L 94.000000 662.179321" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 627.538269 L 94.000000 662.179321" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 696.820312 L 94.000000 662.179321" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="34" y="665.179">0.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="64" y="647.859">1.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="699.82">2.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="717.141">3.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="665.179">4.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="647.859">5.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="613.218">6.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="595.897">7.1.6</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 939.307434
+L 274.000000 939.307434
+L 274.000000 904.666382
+L 244.000000 887.345886
+L 214.000000 870.025391
+L 184.000000 887.345886
+L 154.000000 835.384399
+L 94.000000 835.384399
+L 94.000000 870.025391
+L 124.000000 887.345886
+L 94.000000 939.307434
+L 124.000000 991.268921
+L 154.000000 973.948425
+L 184.000000 991.268921
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 939.307434 L 244.000000 887.345886" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 939.307434 L 184.000000 887.345886" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 835.384399 L 124.000000 887.345886" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 939.307434 L 94.000000 939.307434" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 887.345886 L 154.000000 904.666382" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 887.345886 L 154.000000 904.666382" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 973.948425 L 154.000000 904.666382" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="855.705">0.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="873.025">1.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="924.987">2.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="959.628">3.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="959.628">4.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="924.987">5.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="907.666">6.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="924.987">7.0.7</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 1043.230469
+L 304.000000 1095.192017
+L 334.000000 1077.871460
+L 334.000000 1043.230469
+L 334.000000 1008.589478
+L 304.000000 991.268921
+L 334.000000 939.307434
+L 304.000000 887.345886
+L 274.000000 904.666382
+L 274.000000 939.307434
+L 214.000000 939.307434
+L 184.000000 991.268921
+L 214.000000 1008.589478
+L 214.000000 1043.230469
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 1043.230469 L 334.000000 1043.230469" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 1043.230469 L 304.000000 991.268921" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 939.307434 L 274.000000 939.307434" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 1043.230469 L 214.000000 939.307434" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 939.307434 L 274.000000 973.948425" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 991.268921 L 274.000000 973.948425" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 1008.589478 L 274.000000 973.948425" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="924.987">0.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="959.628">1.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="959.628">2.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="976.948">3.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="1028.91">4.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="1011.59">5.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="1028.91">6.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="1063.55">7.1.7</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 107.923035
+L 544.000000 159.884521
+L 574.000000 177.205017
+L 604.000000 159.884521
+L 634.000000 142.564087
+L 634.000000 107.923035
+L 694.000000 107.923035
+L 724.000000 55.961548
+L 694.000000 38.641052
+L 664.000000 55.961548
+L 634.000000 4.000000
+L 574.000000 4.000000
+L 574.000000 38.641052
+L 544.000000 55.961548
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 107.923035 L 604.000000 159.884521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 107.923035 L 634.000000 107.923035" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 694.000000 107.923035 L 664.000000 55.961548" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 107.923035 L 634.000000 4.000000" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 55.961548 L 634.000000 73.282104" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 107.923035 L 634.000000 73.282104" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 38.641052 L 634.000000 73.282104" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="76.282">0.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="93.6025">1.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="41.6411">2.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="24.3205">3.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="76.282">4.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="93.6025">5.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="128.244">6.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="145.564">7.0.8</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 107.923035
+L 394.000000 107.923035
+L 394.000000 142.564087
+L 424.000000 159.884521
+L 454.000000 177.205017
+L 484.000000 159.884521
+L 514.000000 211.846069
+L 574.000000 211.846069
+L 574.000000 177.205017
+L 544.000000 159.884521
+L 574.000000 107.923035
+L 544.000000 55.961548
+L 514.000000 73.281982
+L 484.000000 55.961548
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 107.923035 L 424.000000 159.884521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 107.923035 L 484.000000 159.884521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 211.846069 L 544.000000 159.884521" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 107.923035 L 574.000000 107.923035" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 159.884521 L 514.000000 142.563965" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 159.884521 L 514.000000 142.563965" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 73.281982 L 514.000000 142.563965" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="197.526">0.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="180.205">1.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="128.244">2.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="93.6025">3.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="93.6025">4.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="128.244">5.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="145.564">6.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="128.244">7.1.8</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 627.538269
+L 484.000000 575.576782
+L 454.000000 592.897278
+L 454.000000 627.538269
+L 454.000000 662.179321
+L 484.000000 679.499817
+L 454.000000 731.461304
+L 484.000000 783.422852
+L 514.000000 766.102356
+L 514.000000 731.461304
+L 574.000000 731.461304
+L 604.000000 679.499817
+L 574.000000 662.179321
+L 574.000000 627.538269
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 627.538269 L 454.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 627.538269 L 484.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 731.461304 L 514.000000 731.461304" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 627.538269 L 574.000000 731.461304" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 731.461304 L 514.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 679.499817 L 514.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 662.179321 L 514.000000 696.820312" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="751.782">0.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="717.141">1.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="717.141">2.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="699.82">3.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="647.859">4.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="665.179">5.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="647.859">6.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="613.218">7.0.9</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 523.615234
+L 604.000000 471.653687
+L 574.000000 454.333221
+L 544.000000 471.653687
+L 514.000000 488.974213
+L 514.000000 523.615234
+L 454.000000 523.615234
+L 424.000000 575.576782
+L 454.000000 592.897278
+L 484.000000 575.576782
+L 514.000000 627.538269
+L 574.000000 627.538269
+L 574.000000 592.897278
+L 604.000000 575.576782
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 523.615234 L 544.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 523.615234 L 514.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 523.615234 L 484.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 523.615234 L 514.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 575.576782 L 514.000000 558.256226" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 523.615234 L 514.000000 558.256226" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 592.897278 L 514.000000 558.256226" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="561.256">0.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="543.936">1.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="595.897">2.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="613.218">3.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="561.256">4.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="543.936">5.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="509.295">6.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="491.974">7.1.9</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 835.384399
+L 364.000000 887.345886
+L 394.000000 904.666382
+L 424.000000 887.345886
+L 454.000000 870.025391
+L 454.000000 835.384399
+L 514.000000 835.384399
+L 544.000000 783.422852
+L 514.000000 766.102356
+L 484.000000 783.422852
+L 454.000000 731.461304
+L 394.000000 731.461304
+L 394.000000 766.102356
+L 364.000000 783.422852
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 835.384399 L 424.000000 887.345886" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 835.384399 L 454.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 835.384399 L 484.000000 783.422852" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 835.384399 L 454.000000 731.461304" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 783.422852 L 454.000000 800.743347" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 835.384399 L 454.000000 800.743347" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 766.102356 L 454.000000 800.743347" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="803.743">0.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="821.064">1.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="769.102">2.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="751.782">3.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="803.743">4.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="821.064">5.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="855.705">6.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="873.025">7.0.10</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 835.384399
+L 214.000000 835.384399
+L 214.000000 870.025391
+L 244.000000 887.345886
+L 274.000000 904.666382
+L 304.000000 887.345886
+L 334.000000 939.307434
+L 394.000000 939.307434
+L 394.000000 904.666382
+L 364.000000 887.345886
+L 394.000000 835.384399
+L 364.000000 783.422852
+L 334.000000 800.743347
+L 304.000000 783.422852
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 835.384399 L 244.000000 887.345886" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 835.384399 L 304.000000 887.345886" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 939.307434 L 364.000000 887.345886" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 835.384399 L 394.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 887.345886 L 334.000000 870.025391" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 887.345886 L 334.000000 870.025391" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 800.743347 L 334.000000 870.025391" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="924.987">0.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="907.666">1.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="855.705">2.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="821.064">3.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="821.064">4.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="855.705">5.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="873.025">6.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="855.705">7.1.10</text>
+</svg>
--- /dev/null
+++ b/aux/doc/kitemap-H.svg
@@ -1,0 +1,933 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="942" height="1000">
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 419.692169
+L 424.000000 419.692169
+L 424.000000 385.051178
+L 394.000000 367.730652
+L 364.000000 350.410187
+L 334.000000 367.730652
+L 304.000000 315.769135
+L 244.000000 315.769135
+L 244.000000 350.410187
+L 274.000000 367.730652
+L 244.000000 419.692169
+L 274.000000 471.653717
+L 304.000000 454.333221
+L 334.000000 471.653717
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 419.692169 L 394.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 419.692169 L 334.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 315.769135 L 274.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 419.692169 L 244.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 367.730652 L 304.000000 385.051178" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 367.730652 L 304.000000 385.051178" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 454.333221 L 304.000000 385.051178" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="336.09">0.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="353.41">1.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="405.372">2.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="440.013">3.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="440.013">4.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="405.372">5.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="388.051">6.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="405.372">7.0.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 315.769135
+L 394.000000 367.730652
+L 424.000000 385.051178
+L 454.000000 367.730652
+L 484.000000 350.410187
+L 484.000000 315.769135
+L 544.000000 315.769135
+L 574.000000 263.807617
+L 544.000000 246.487122
+L 514.000000 263.807617
+L 484.000000 211.846130
+L 424.000000 211.846130
+L 424.000000 246.487122
+L 394.000000 263.807617
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 315.769135 L 454.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 315.769135 L 484.000000 315.769135" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 315.769135 L 514.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 315.769135 L 484.000000 211.846130" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 263.807617 L 484.000000 281.128143" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 315.769135 L 484.000000 281.128143" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 246.487122 L 484.000000 281.128143" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="284.128">0.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="301.449">1.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="249.487">2.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="232.167">3.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="284.128">4.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="301.449">5.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="336.09">6.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="353.41">7.1.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 211.846130
+L 424.000000 211.846130
+L 424.000000 177.205078
+L 394.000000 159.884583
+L 364.000000 142.564087
+L 334.000000 159.884583
+L 304.000000 107.923035
+L 244.000000 107.923035
+L 244.000000 142.564087
+L 274.000000 159.884583
+L 244.000000 211.846130
+L 274.000000 263.807617
+L 304.000000 246.487122
+L 334.000000 263.807617
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 211.846130 L 394.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 211.846130 L 334.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 107.923035 L 274.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 211.846130 L 244.000000 211.846130" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 159.884583 L 304.000000 177.205078" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 159.884583 L 304.000000 177.205078" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 246.487122 L 304.000000 177.205078" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="128.244">0.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="145.564">1.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="197.526">2.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="232.167">3.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="232.167">4.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="197.526">5.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="180.205">6.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="197.526">7.2.0</text>
+<path style="fill: rgba(0,0,0,0.2); stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 367.730652
+L 364.000000 350.410187
+L 394.000000 367.730652
+L 424.000000 315.769135
+L 394.000000 263.807617
+L 424.000000 246.487122
+L 424.000000 211.846130
+L 364.000000 211.846130
+L 334.000000 263.807617
+L 304.000000 246.487122
+L 274.000000 263.807617
+L 244.000000 281.128143
+L 244.000000 315.769135
+L 304.000000 315.769135
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 315.769135 L 274.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 315.769135 L 334.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 211.846130 L 394.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 315.769135 L 424.000000 315.769135" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 263.807617 L 364.000000 281.128143" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 263.807617 L 364.000000 281.128143" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 350.410187 L 364.000000 281.128143" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="232.167">0.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="249.487">1.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="301.449">2.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="336.09">3.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="336.09">4.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="301.449">5.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="284.128">6.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="301.449">7.3.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 731.461365
+L 364.000000 731.461365
+L 364.000000 696.820312
+L 334.000000 679.499817
+L 304.000000 662.179321
+L 274.000000 679.499817
+L 244.000000 627.538330
+L 184.000000 627.538330
+L 184.000000 662.179321
+L 214.000000 679.499817
+L 184.000000 731.461365
+L 214.000000 783.422852
+L 244.000000 766.102356
+L 274.000000 783.422852
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 731.461365 L 334.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 731.461365 L 274.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 627.538330 L 214.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 731.461365 L 184.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 679.499817 L 244.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 679.499817 L 244.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 766.102356 L 244.000000 696.820312" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="647.859">0.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="665.179">1.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="717.141">2.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="751.782">3.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="751.782">4.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="717.141">5.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="699.82">6.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="717.141">7.0.1</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 627.538330
+L 334.000000 679.499817
+L 364.000000 696.820312
+L 394.000000 679.499817
+L 424.000000 662.179321
+L 424.000000 627.538330
+L 484.000000 627.538330
+L 514.000000 575.576782
+L 484.000000 558.256287
+L 454.000000 575.576782
+L 424.000000 523.615234
+L 364.000000 523.615234
+L 364.000000 558.256287
+L 334.000000 575.576782
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 627.538330 L 394.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 627.538330 L 424.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 627.538330 L 454.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 627.538330 L 424.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 575.576782 L 424.000000 592.897278" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 627.538330 L 424.000000 592.897278" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 558.256287 L 424.000000 592.897278" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="595.897">0.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="613.218">1.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="561.256">2.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="543.936">3.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="595.897">4.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="613.218">5.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="647.859">6.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="665.179">7.1.1</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 523.615234
+L 364.000000 523.615234
+L 364.000000 488.974243
+L 334.000000 471.653717
+L 304.000000 454.333221
+L 274.000000 471.653717
+L 244.000000 419.692169
+L 184.000000 419.692169
+L 184.000000 454.333221
+L 214.000000 471.653717
+L 184.000000 523.615234
+L 214.000000 575.576782
+L 244.000000 558.256287
+L 274.000000 575.576782
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 523.615234 L 334.000000 471.653717" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 523.615234 L 274.000000 471.653717" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 419.692169 L 214.000000 471.653717" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 523.615234 L 184.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 471.653717 L 244.000000 488.974213" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 471.653717 L 244.000000 488.974213" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 558.256287 L 244.000000 488.974213" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="440.013">0.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="457.333">1.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="509.295">2.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="543.936">3.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="543.936">4.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="509.295">5.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="491.974">6.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="509.295">7.2.1</text>
+<path style="fill: rgba(0,0,0,0.2); stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 679.499817
+L 304.000000 662.179321
+L 334.000000 679.499817
+L 364.000000 627.538330
+L 334.000000 575.576782
+L 364.000000 558.256287
+L 364.000000 523.615234
+L 304.000000 523.615234
+L 274.000000 575.576782
+L 244.000000 558.256287
+L 214.000000 575.576782
+L 184.000000 592.897278
+L 184.000000 627.538330
+L 244.000000 627.538330
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 627.538330 L 214.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 627.538330 L 274.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 523.615234 L 334.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 627.538330 L 364.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 575.576782 L 304.000000 592.897278" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 575.576782 L 304.000000 592.897278" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 662.179321 L 304.000000 592.897278" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="543.936">0.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="561.256">1.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="613.218">2.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="647.859">3.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="647.859">4.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="613.218">5.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="595.897">6.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="613.218">7.3.1</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 419.692169
+L 454.000000 471.653717
+L 484.000000 488.974243
+L 514.000000 471.653717
+L 544.000000 454.333221
+L 544.000000 419.692169
+L 604.000000 419.692169
+L 634.000000 367.730652
+L 604.000000 350.410187
+L 574.000000 367.730652
+L 544.000000 315.769135
+L 484.000000 315.769135
+L 484.000000 350.410187
+L 454.000000 367.730652
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 419.692169 L 514.000000 471.653717" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 419.692169 L 544.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 419.692169 L 574.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 419.692169 L 544.000000 315.769135" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 367.730652 L 544.000000 385.051178" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 419.692169 L 544.000000 385.051178" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 350.410187 L 544.000000 385.051178" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="388.051">0.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="405.372">1.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="353.41">2.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="336.09">3.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="388.051">4.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="405.372">5.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="440.013">6.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="457.333">7.0.2</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 523.615234
+L 514.000000 471.653717
+L 484.000000 488.974243
+L 484.000000 523.615234
+L 484.000000 558.256287
+L 514.000000 575.576782
+L 484.000000 627.538330
+L 514.000000 679.499817
+L 544.000000 662.179321
+L 544.000000 627.538330
+L 604.000000 627.538330
+L 634.000000 575.576782
+L 604.000000 558.256287
+L 604.000000 523.615234
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 523.615234 L 484.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 523.615234 L 514.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 627.538330 L 544.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 523.615234 L 604.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 627.538330 L 544.000000 592.897278" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 575.576782 L 544.000000 592.897278" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 558.256287 L 544.000000 592.897278" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="647.859">0.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="613.218">1.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="613.218">2.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="595.897">3.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="543.936">4.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="561.256">5.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="543.936">6.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="509.295">7.1.2</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 523.615234
+L 634.000000 575.576782
+L 664.000000 592.897278
+L 694.000000 575.576782
+L 724.000000 558.256287
+L 724.000000 523.615234
+L 784.000000 523.615234
+L 814.000000 471.653717
+L 784.000000 454.333221
+L 754.000000 471.653717
+L 724.000000 419.692169
+L 664.000000 419.692169
+L 664.000000 454.333221
+L 634.000000 471.653717
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 523.615234 L 694.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 523.615234 L 724.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 784.000000 523.615234 L 754.000000 471.653717" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 523.615234 L 724.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 754.000000 471.653717 L 724.000000 488.974243" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 523.615234 L 724.000000 488.974243" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 454.333221 L 724.000000 488.974243" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="784" y="491.974">0.2.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="754" y="509.295">1.2.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="724" y="457.333">2.2.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="440.013">3.2.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="491.974">4.2.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="509.295">5.2.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="543.936">6.2.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="561.256">7.2.2</text>
+<path style="fill: rgba(0,0,0,0.2); stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 419.692169
+L 544.000000 454.333221
+L 514.000000 471.653717
+L 544.000000 523.615234
+L 604.000000 523.615234
+L 604.000000 558.256287
+L 634.000000 575.576782
+L 664.000000 523.615234
+L 634.000000 471.653717
+L 664.000000 454.333221
+L 664.000000 419.692169
+L 664.000000 385.051178
+L 634.000000 367.730652
+L 604.000000 419.692169
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 419.692169 L 664.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 419.692169 L 634.000000 471.653717" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 523.615234 L 604.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 419.692169 L 544.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 523.615234 L 604.000000 488.974243" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 471.653717 L 604.000000 488.974243" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 454.333221 L 604.000000 488.974243" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="543.936">0.3.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="509.295">1.3.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="509.295">2.3.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="491.974">3.3.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="440.013">4.3.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="457.333">5.3.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="440.013">6.3.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="405.372">7.3.2</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 523.615234
+L 454.000000 575.576782
+L 484.000000 558.256287
+L 484.000000 523.615234
+L 484.000000 488.974243
+L 454.000000 471.653717
+L 484.000000 419.692169
+L 454.000000 367.730652
+L 424.000000 385.051178
+L 424.000000 419.692169
+L 364.000000 419.692169
+L 334.000000 471.653717
+L 364.000000 488.974243
+L 364.000000 523.615234
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 523.615234 L 484.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 523.615234 L 454.000000 471.653717" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 419.692169 L 424.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 523.615234 L 364.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 419.692169 L 424.000000 454.333221" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 471.653717 L 424.000000 454.333221" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 488.974243 L 424.000000 454.333221" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="405.372">0.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="440.013">1.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="440.013">2.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="457.333">3.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="509.295">4.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="491.974">5.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="509.295">6.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="543.936">7.0.3</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 315.769135
+L 154.000000 263.807617
+L 124.000000 281.128143
+L 124.000000 315.769135
+L 124.000000 350.410187
+L 154.000000 367.730652
+L 124.000000 419.692169
+L 154.000000 471.653717
+L 184.000000 454.333221
+L 184.000000 419.692169
+L 244.000000 419.692169
+L 274.000000 367.730652
+L 244.000000 350.410187
+L 244.000000 315.769135
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 315.769135 L 124.000000 315.769135" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 315.769135 L 154.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 419.692169 L 184.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 315.769135 L 244.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 419.692169 L 184.000000 385.051178" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 367.730652 L 184.000000 385.051178" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 350.410187 L 184.000000 385.051178" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="440.013">0.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="405.372">1.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="405.372">2.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="388.051">3.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="336.09">4.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="353.41">5.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="336.09">6.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="301.449">7.0.4</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 211.846130
+L 274.000000 159.884583
+L 244.000000 142.564087
+L 214.000000 159.884583
+L 184.000000 177.205078
+L 184.000000 211.846130
+L 124.000000 211.846130
+L 94.000000 263.807617
+L 124.000000 281.128143
+L 154.000000 263.807617
+L 184.000000 315.769135
+L 244.000000 315.769135
+L 244.000000 281.128143
+L 274.000000 263.807617
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 211.846130 L 214.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 211.846130 L 184.000000 211.846130" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 211.846130 L 154.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 211.846130 L 184.000000 315.769135" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 263.807617 L 184.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 211.846130 L 184.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 281.128143 L 184.000000 246.487122" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="249.487">0.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="232.167">1.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="284.128">2.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="301.449">3.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="249.487">4.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="232.167">5.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="197.526">6.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="180.205">7.1.4</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 315.769135
+L 724.000000 315.769135
+L 724.000000 281.128143
+L 694.000000 263.807617
+L 664.000000 246.487122
+L 634.000000 263.807617
+L 604.000000 211.846130
+L 544.000000 211.846130
+L 544.000000 246.487122
+L 574.000000 263.807617
+L 544.000000 315.769135
+L 574.000000 367.730652
+L 604.000000 350.410187
+L 634.000000 367.730652
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 315.769135 L 694.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 315.769135 L 634.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 211.846130 L 574.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 315.769135 L 544.000000 315.769135" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 263.807617 L 604.000000 281.128143" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 263.807617 L 604.000000 281.128143" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 350.410187 L 604.000000 281.128143" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="232.167">0.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="249.487">1.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="301.449">2.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="336.09">3.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="336.09">4.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="301.449">5.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="284.128">6.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="301.449">7.0.5</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 419.692169
+L 754.000000 471.653717
+L 784.000000 454.333221
+L 784.000000 419.692169
+L 784.000000 385.051178
+L 754.000000 367.730652
+L 784.000000 315.769135
+L 754.000000 263.807617
+L 724.000000 281.128143
+L 724.000000 315.769135
+L 664.000000 315.769135
+L 634.000000 367.730652
+L 664.000000 385.051178
+L 664.000000 419.692169
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 419.692169 L 784.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 419.692169 L 754.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 784.000000 315.769135 L 724.000000 315.769135" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 419.692169 L 664.000000 315.769135" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 315.769135 L 724.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 754.000000 367.730652 L 724.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 385.051178 L 724.000000 350.410156" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="754" y="301.449">0.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="754" y="336.09">1.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="336.09">2.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="353.41">3.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="405.372">4.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="724" y="388.051">5.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="754" y="405.372">6.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="754" y="440.013">7.1.5</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 731.461365
+L 454.000000 679.499817
+L 424.000000 662.179321
+L 394.000000 679.499817
+L 364.000000 696.820312
+L 364.000000 731.461365
+L 304.000000 731.461365
+L 274.000000 783.422852
+L 304.000000 800.743347
+L 334.000000 783.422852
+L 364.000000 835.384399
+L 424.000000 835.384399
+L 424.000000 800.743347
+L 454.000000 783.422852
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 731.461365 L 394.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 731.461365 L 364.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 731.461365 L 334.000000 783.422852" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 731.461365 L 364.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 783.422852 L 364.000000 766.102356" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 731.461365 L 364.000000 766.102356" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 800.743347 L 364.000000 766.102356" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="769.102">0.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="751.782">1.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="803.743">2.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="821.064">3.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="769.102">4.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="751.782">5.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="717.141">6.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="699.82">7.0.6</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 731.461365
+L 604.000000 731.461365
+L 604.000000 696.820312
+L 574.000000 679.499817
+L 544.000000 662.179321
+L 514.000000 679.499817
+L 484.000000 627.538330
+L 424.000000 627.538330
+L 424.000000 662.179321
+L 454.000000 679.499817
+L 424.000000 731.461365
+L 454.000000 783.422852
+L 484.000000 766.102356
+L 514.000000 783.422852
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 731.461365 L 574.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 731.461365 L 514.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 627.538330 L 454.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 731.461365 L 424.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 679.499817 L 484.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 679.499817 L 484.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 766.102356 L 484.000000 696.820312" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="647.859">0.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="665.179">1.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="717.141">2.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="751.782">3.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="751.782">4.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="717.141">5.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="699.82">6.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="717.141">7.1.6</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 107.923035
+L 154.000000 159.884583
+L 184.000000 177.205078
+L 214.000000 159.884583
+L 244.000000 142.564087
+L 244.000000 107.923035
+L 304.000000 107.923035
+L 334.000000 55.961487
+L 304.000000 38.641052
+L 274.000000 55.961487
+L 244.000000 4.000000
+L 184.000000 4.000000
+L 184.000000 38.641052
+L 154.000000 55.961487
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 107.923035 L 214.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 107.923035 L 244.000000 107.923035" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 107.923035 L 274.000000 55.961487" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 107.923035 L 244.000000 4.000000" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 55.961487 L 244.000000 73.282043" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 107.923035 L 244.000000 73.282043" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 38.641052 L 244.000000 73.282043" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="76.282">0.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="93.6025">1.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="41.6411">2.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="24.3205">3.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="76.282">4.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="93.6025">5.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="128.244">6.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="145.564">7.0.7</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 107.923035
+L 4.000000 107.923035
+L 4.000000 142.564087
+L 34.000000 159.884583
+L 64.000000 177.205078
+L 94.000000 159.884583
+L 124.000000 211.846130
+L 184.000000 211.846130
+L 184.000000 177.205078
+L 154.000000 159.884583
+L 184.000000 107.923035
+L 154.000000 55.961487
+L 124.000000 73.281982
+L 94.000000 55.961487
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 107.923035 L 34.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 107.923035 L 94.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 211.846130 L 154.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 107.923035 L 184.000000 107.923035" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 159.884583 L 124.000000 142.564087" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 159.884583 L 124.000000 142.564087" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 73.281982 L 124.000000 142.564087" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="197.526">0.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="180.205">1.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="128.244">2.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="93.6025">3.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="93.6025">4.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="128.244">5.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="64" y="145.564">6.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="34" y="128.244">7.1.7</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 107.923035
+L 484.000000 107.923035
+L 484.000000 73.281982
+L 454.000000 55.961487
+L 424.000000 38.641052
+L 394.000000 55.961487
+L 364.000000 4.000000
+L 304.000000 4.000000
+L 304.000000 38.641052
+L 334.000000 55.961487
+L 304.000000 107.923035
+L 334.000000 159.884583
+L 364.000000 142.564087
+L 394.000000 159.884583
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 107.923035 L 454.000000 55.961487" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 107.923035 L 394.000000 55.961487" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 4.000000 L 334.000000 55.961487" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 107.923035 L 304.000000 107.923035" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 55.961487 L 364.000000 73.282043" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 55.961487 L 364.000000 73.282043" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 142.564087 L 364.000000 73.282043" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="24.3205">0.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="41.6411">1.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="93.6025">2.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="128.244">3.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="128.244">4.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="93.6025">5.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="76.282">6.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="93.6025">7.0.8</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 211.846130
+L 514.000000 263.807617
+L 544.000000 246.487122
+L 544.000000 211.846130
+L 544.000000 177.205078
+L 514.000000 159.884583
+L 544.000000 107.923035
+L 514.000000 55.961487
+L 484.000000 73.281982
+L 484.000000 107.923035
+L 424.000000 107.923035
+L 394.000000 159.884583
+L 424.000000 177.205078
+L 424.000000 211.846130
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 211.846130 L 544.000000 211.846130" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 211.846130 L 514.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 107.923035 L 484.000000 107.923035" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 211.846130 L 424.000000 107.923035" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 107.923035 L 484.000000 142.564087" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 159.884583 L 484.000000 142.564087" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 177.205078 L 484.000000 142.564087" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="93.6025">0.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="128.244">1.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="128.244">2.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="145.564">3.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="197.526">4.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="180.205">5.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="197.526">6.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="232.167">7.1.8</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 627.538330
+L 94.000000 575.576782
+L 64.000000 592.897278
+L 64.000000 627.538330
+L 64.000000 662.179321
+L 94.000000 679.499817
+L 64.000000 731.461365
+L 94.000000 783.422852
+L 124.000000 766.102356
+L 124.000000 731.461365
+L 184.000000 731.461365
+L 214.000000 679.499817
+L 184.000000 662.179321
+L 184.000000 627.538330
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 627.538330 L 64.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 627.538330 L 94.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 731.461365 L 124.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 627.538330 L 184.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 731.461365 L 124.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 679.499817 L 124.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 662.179321 L 124.000000 696.820312" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="751.782">0.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="717.141">1.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="717.141">2.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="699.82">3.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="647.859">4.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="665.179">5.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="647.859">6.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="613.218">7.0.9</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 523.615234
+L 214.000000 471.653717
+L 184.000000 454.333221
+L 154.000000 471.653717
+L 124.000000 488.974243
+L 124.000000 523.615234
+L 64.000000 523.615234
+L 34.000000 575.576782
+L 64.000000 592.897278
+L 94.000000 575.576782
+L 124.000000 627.538330
+L 184.000000 627.538330
+L 184.000000 592.897278
+L 214.000000 575.576782
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 523.615234 L 154.000000 471.653717" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 523.615234 L 124.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 523.615234 L 94.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 523.615234 L 124.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 575.576782 L 124.000000 558.256226" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 523.615234 L 124.000000 558.256226" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 592.897278 L 124.000000 558.256226" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="64" y="561.256">0.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="543.936">1.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="595.897">2.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="613.218">3.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="561.256">4.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="543.936">5.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="509.295">6.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="491.974">7.1.9</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 835.384399
+L 304.000000 835.384399
+L 304.000000 800.743347
+L 274.000000 783.422852
+L 244.000000 766.102356
+L 214.000000 783.422852
+L 184.000000 731.461365
+L 124.000000 731.461365
+L 124.000000 766.102356
+L 154.000000 783.422852
+L 124.000000 835.384399
+L 154.000000 887.345886
+L 184.000000 870.025391
+L 214.000000 887.345886
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 835.384399 L 274.000000 783.422852" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 835.384399 L 214.000000 783.422852" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 731.461365 L 154.000000 783.422852" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 835.384399 L 124.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 783.422852 L 184.000000 800.743347" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 783.422852 L 184.000000 800.743347" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 870.025391 L 184.000000 800.743347" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="751.782">0.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="769.102">1.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="821.064">2.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="855.705">3.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="855.705">4.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="821.064">5.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="803.743">6.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="821.064">7.0.10</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 939.307434
+L 334.000000 991.268982
+L 364.000000 973.948425
+L 364.000000 939.307434
+L 364.000000 904.666382
+L 334.000000 887.345886
+L 364.000000 835.384399
+L 334.000000 783.422852
+L 304.000000 800.743347
+L 304.000000 835.384399
+L 244.000000 835.384399
+L 214.000000 887.345886
+L 244.000000 904.666382
+L 244.000000 939.307434
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 939.307434 L 364.000000 939.307434" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 939.307434 L 334.000000 887.345886" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 835.384399 L 304.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 939.307434 L 244.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 835.384399 L 304.000000 870.025391" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 887.345886 L 304.000000 870.025391" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 904.666382 L 304.000000 870.025391" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="821.064">0.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="855.705">1.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="855.705">2.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="873.025">3.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="924.987">4.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="907.666">5.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="924.987">6.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="959.628">7.1.10</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 844.000000 419.692169
+L 814.000000 367.730652
+L 784.000000 385.051178
+L 784.000000 419.692169
+L 784.000000 454.333221
+L 814.000000 471.653717
+L 784.000000 523.615234
+L 814.000000 575.576782
+L 844.000000 558.256287
+L 844.000000 523.615234
+L 904.000000 523.615234
+L 934.000000 471.653717
+L 904.000000 454.333221
+L 904.000000 419.692169
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 844.000000 419.692169 L 784.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 844.000000 419.692169 L 814.000000 471.653717" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 784.000000 523.615234 L 844.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 844.000000 419.692169 L 904.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 844.000000 523.615234 L 844.000000 488.974243" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 814.000000 471.653717 L 844.000000 488.974243" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 904.000000 454.333221 L 844.000000 488.974243" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="814" y="543.936">0.0.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="814" y="509.295">1.0.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="874" y="509.295">2.0.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="904" y="491.974">3.0.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="874" y="440.013">4.0.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="844" y="457.333">5.0.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="814" y="440.013">6.0.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="814" y="405.372">7.0.11</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 904.000000 315.769135
+L 934.000000 263.807617
+L 904.000000 246.487122
+L 874.000000 263.807617
+L 844.000000 281.128143
+L 844.000000 315.769135
+L 784.000000 315.769135
+L 754.000000 367.730652
+L 784.000000 385.051178
+L 814.000000 367.730652
+L 844.000000 419.692169
+L 904.000000 419.692169
+L 904.000000 385.051178
+L 934.000000 367.730652
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 904.000000 315.769135 L 874.000000 263.807617" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 904.000000 315.769135 L 844.000000 315.769135" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 784.000000 315.769135 L 814.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 904.000000 315.769135 L 844.000000 419.692169" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 814.000000 367.730652 L 844.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 844.000000 315.769135 L 844.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 904.000000 385.051178 L 844.000000 350.410156" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="784" y="353.41">0.1.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="814" y="336.09">1.1.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="844" y="388.051">2.1.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="874" y="405.372">3.1.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="904" y="353.41">4.1.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="874" y="336.09">5.1.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="874" y="301.449">6.1.11</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="904" y="284.128">7.1.11</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 627.538330
+L 694.000000 679.499817
+L 724.000000 696.820312
+L 754.000000 679.499817
+L 784.000000 662.179321
+L 784.000000 627.538330
+L 844.000000 627.538330
+L 874.000000 575.576782
+L 844.000000 558.256287
+L 814.000000 575.576782
+L 784.000000 523.615234
+L 724.000000 523.615234
+L 724.000000 558.256287
+L 694.000000 575.576782
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 627.538330 L 754.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 627.538330 L 784.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 844.000000 627.538330 L 814.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 627.538330 L 784.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 814.000000 575.576782 L 784.000000 592.897278" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 784.000000 627.538330 L 784.000000 592.897278" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 558.256287 L 784.000000 592.897278" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="844" y="595.897">0.0.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="814" y="613.218">1.0.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="784" y="561.256">2.0.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="754" y="543.936">3.0.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="724" y="595.897">4.0.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="754" y="613.218">5.0.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="754" y="647.859">6.0.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="724" y="665.179">7.0.12</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 627.538330
+L 544.000000 627.538330
+L 544.000000 662.179321
+L 574.000000 679.499817
+L 604.000000 696.820312
+L 634.000000 679.499817
+L 664.000000 731.461365
+L 724.000000 731.461365
+L 724.000000 696.820312
+L 694.000000 679.499817
+L 724.000000 627.538330
+L 694.000000 575.576782
+L 664.000000 592.897278
+L 634.000000 575.576782
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 627.538330 L 574.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 627.538330 L 634.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 731.461365 L 694.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 627.538330 L 724.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 694.000000 679.499817 L 664.000000 662.179321" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 679.499817 L 664.000000 662.179321" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 592.897278 L 664.000000 662.179321" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="717.141">0.1.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="699.82">1.1.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="647.859">2.1.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="613.218">3.1.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="613.218">4.1.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="647.859">5.1.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="665.179">6.1.12</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="647.859">7.1.12</text>
+</svg>
--- /dev/null
+++ b/aux/doc/kitemap-P.svg
@@ -1,0 +1,783 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="792" height="1052">
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 419.692230
+L 604.000000 367.730652
+L 574.000000 350.410217
+L 544.000000 367.730652
+L 514.000000 385.051208
+L 514.000000 419.692230
+L 454.000000 419.692230
+L 424.000000 471.653748
+L 454.000000 488.974274
+L 484.000000 471.653748
+L 514.000000 523.615234
+L 574.000000 523.615234
+L 574.000000 488.974274
+L 604.000000 471.653748
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 419.692230 L 544.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 419.692230 L 514.000000 419.692230" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 419.692230 L 484.000000 471.653748" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 419.692230 L 514.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 471.653748 L 514.000000 454.333252" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 419.692230 L 514.000000 454.333252" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 488.974274 L 514.000000 454.333252" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="457.333">0.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="440.013">1.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="491.974">2.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="509.295">3.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="457.333">4.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="440.013">5.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="405.372">6.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="388.051">7.0.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 315.769165
+L 544.000000 367.730652
+L 574.000000 350.410217
+L 574.000000 315.769165
+L 574.000000 281.128174
+L 544.000000 263.807678
+L 574.000000 211.846069
+L 544.000000 159.884583
+L 514.000000 177.205139
+L 514.000000 211.846069
+L 454.000000 211.846069
+L 424.000000 263.807678
+L 454.000000 281.128174
+L 454.000000 315.769165
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 315.769165 L 574.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 315.769165 L 544.000000 263.807678" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 211.846069 L 514.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 315.769165 L 454.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 211.846069 L 514.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 263.807678 L 514.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 281.128174 L 514.000000 246.487122" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="197.526">0.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="232.167">1.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="232.167">2.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="249.487">3.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="301.449">4.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="284.128">5.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="301.449">6.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="336.09">7.1.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 315.769165
+L 424.000000 263.807678
+L 394.000000 246.487122
+L 364.000000 263.807678
+L 334.000000 281.128174
+L 334.000000 315.769165
+L 274.000000 315.769165
+L 244.000000 367.730652
+L 274.000000 385.051208
+L 304.000000 367.730652
+L 334.000000 419.692230
+L 394.000000 419.692230
+L 394.000000 385.051208
+L 424.000000 367.730652
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 315.769165 L 364.000000 263.807678" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 315.769165 L 334.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 315.769165 L 304.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 315.769165 L 334.000000 419.692230" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 367.730652 L 334.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 315.769165 L 334.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 385.051208 L 334.000000 350.410156" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="353.41">0.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="336.09">1.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="388.051">2.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="405.372">3.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="353.41">4.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="336.09">5.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="301.449">6.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="284.128">7.2.0</text>
+<path style="fill: rgba(0,0,0,0.2); stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 419.692230
+L 514.000000 385.051208
+L 544.000000 367.730652
+L 514.000000 315.769165
+L 454.000000 315.769165
+L 454.000000 281.128174
+L 424.000000 263.807678
+L 394.000000 315.769165
+L 424.000000 367.730652
+L 394.000000 385.051208
+L 394.000000 419.692230
+L 394.000000 454.333221
+L 424.000000 471.653748
+L 454.000000 419.692230
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 419.692230 L 394.000000 419.692230" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 419.692230 L 424.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 315.769165 L 454.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 419.692230 L 514.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 315.769165 L 454.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 367.730652 L 454.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 385.051208 L 454.000000 350.410156" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="301.449">0.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="336.09">1.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="336.09">2.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="353.41">3.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="405.372">4.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="388.051">5.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="405.372">6.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="440.013">7.3.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 627.538330
+L 424.000000 575.576782
+L 394.000000 592.897339
+L 394.000000 627.538330
+L 394.000000 662.179321
+L 424.000000 679.499817
+L 394.000000 731.461365
+L 424.000000 783.422913
+L 454.000000 766.102417
+L 454.000000 731.461365
+L 514.000000 731.461365
+L 544.000000 679.499817
+L 514.000000 662.179321
+L 514.000000 627.538330
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 627.538330 L 394.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 627.538330 L 424.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 731.461365 L 454.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 627.538330 L 514.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 731.461365 L 454.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 679.499817 L 454.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 662.179321 L 454.000000 696.820312" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="751.782">0.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="717.141">1.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="717.141">2.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="699.82">3.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="647.859">4.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="665.179">5.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="647.859">6.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="613.218">7.0.1</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 627.538330
+L 394.000000 627.538330
+L 394.000000 592.897339
+L 364.000000 575.576782
+L 334.000000 558.256226
+L 304.000000 575.576782
+L 274.000000 523.615234
+L 214.000000 523.615234
+L 214.000000 558.256226
+L 244.000000 575.576782
+L 214.000000 627.538330
+L 244.000000 679.499817
+L 274.000000 662.179321
+L 304.000000 679.499817
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 627.538330 L 364.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 627.538330 L 304.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 523.615234 L 244.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 627.538330 L 214.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 575.576782 L 274.000000 592.897339" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 575.576782 L 274.000000 592.897339" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 662.179321 L 274.000000 592.897339" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="543.936">0.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="561.256">1.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="613.218">2.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="647.859">3.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="647.859">4.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="613.218">5.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="595.897">6.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="613.218">7.1.1</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 731.461365
+L 244.000000 679.499817
+L 214.000000 696.820374
+L 214.000000 731.461365
+L 214.000000 766.102417
+L 244.000000 783.422913
+L 214.000000 835.384399
+L 244.000000 887.345947
+L 274.000000 870.025452
+L 274.000000 835.384399
+L 334.000000 835.384399
+L 364.000000 783.422913
+L 334.000000 766.102417
+L 334.000000 731.461365
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 731.461365 L 214.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 731.461365 L 244.000000 783.422913" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 835.384399 L 274.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 731.461365 L 334.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 835.384399 L 274.000000 800.743408" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 783.422913 L 274.000000 800.743408" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 766.102417 L 274.000000 800.743408" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="855.705">0.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="821.064">1.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="821.064">2.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="803.743">3.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="751.782">4.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="769.102">5.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="751.782">6.2.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="717.141">7.2.1</text>
+<path style="fill: rgba(0,0,0,0.2); stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 679.499817
+L 394.000000 662.179321
+L 394.000000 627.538330
+L 334.000000 627.538330
+L 304.000000 679.499817
+L 274.000000 662.179321
+L 244.000000 679.499817
+L 274.000000 731.461365
+L 334.000000 731.461365
+L 334.000000 766.102417
+L 364.000000 783.422913
+L 394.000000 800.743408
+L 424.000000 783.422913
+L 394.000000 731.461365
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 731.461365 L 364.000000 783.422913" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 731.461365 L 334.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 731.461365 L 304.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 731.461365 L 334.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 679.499817 L 334.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 731.461365 L 334.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 662.179321 L 334.000000 696.820312" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="699.82">0.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="717.141">1.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="665.179">2.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="647.859">3.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="699.82">4.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="717.141">5.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="751.782">6.3.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="769.102">7.3.1</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 731.461365
+L 124.000000 679.499817
+L 94.000000 696.820374
+L 94.000000 731.461365
+L 94.000000 766.102417
+L 124.000000 783.422913
+L 94.000000 835.384399
+L 124.000000 887.345947
+L 154.000000 870.025452
+L 154.000000 835.384399
+L 214.000000 835.384399
+L 244.000000 783.422913
+L 214.000000 766.102417
+L 214.000000 731.461365
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 731.461365 L 94.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 731.461365 L 124.000000 783.422913" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 835.384399 L 154.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 731.461365 L 214.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 835.384399 L 154.000000 800.743408" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 783.422913 L 154.000000 800.743408" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 766.102417 L 154.000000 800.743408" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="855.705">0.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="821.064">1.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="821.064">2.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="803.743">3.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="751.782">4.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="769.102">5.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="751.782">6.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="717.141">7.0.2</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 627.538330
+L 244.000000 575.576782
+L 214.000000 558.256226
+L 184.000000 575.576782
+L 154.000000 592.897339
+L 154.000000 627.538330
+L 94.000000 627.538330
+L 64.000000 679.499817
+L 94.000000 696.820374
+L 124.000000 679.499817
+L 154.000000 731.461365
+L 214.000000 731.461365
+L 214.000000 696.820374
+L 244.000000 679.499817
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 627.538330 L 184.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 627.538330 L 154.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 627.538330 L 124.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 627.538330 L 154.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 679.499817 L 154.000000 662.179321" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 627.538330 L 154.000000 662.179321" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 696.820374 L 154.000000 662.179321" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="665.179">0.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="647.859">1.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="699.82">2.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="717.141">3.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="665.179">4.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="647.859">5.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="613.218">6.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="595.897">7.1.2</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 315.769165
+L 604.000000 263.807678
+L 574.000000 281.128174
+L 574.000000 315.769165
+L 574.000000 350.410217
+L 604.000000 367.730652
+L 574.000000 419.692230
+L 604.000000 471.653748
+L 634.000000 454.333221
+L 634.000000 419.692230
+L 694.000000 419.692230
+L 724.000000 367.730652
+L 694.000000 350.410217
+L 694.000000 315.769165
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 315.769165 L 574.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 315.769165 L 604.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 419.692230 L 634.000000 419.692230" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 315.769165 L 694.000000 419.692230" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 419.692230 L 634.000000 385.051208" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 367.730652 L 634.000000 385.051208" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 694.000000 350.410217 L 634.000000 385.051208" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="440.013">0.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="405.372">1.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="405.372">2.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="388.051">3.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="336.09">4.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="353.41">5.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="336.09">6.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="301.449">7.0.3</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 694.000000 211.846069
+L 724.000000 159.884583
+L 694.000000 142.564087
+L 664.000000 159.884583
+L 634.000000 177.205139
+L 634.000000 211.846069
+L 574.000000 211.846069
+L 544.000000 263.807678
+L 574.000000 281.128174
+L 604.000000 263.807678
+L 634.000000 315.769165
+L 694.000000 315.769165
+L 694.000000 281.128174
+L 724.000000 263.807678
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 694.000000 211.846069 L 664.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 694.000000 211.846069 L 634.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 211.846069 L 604.000000 263.807678" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 694.000000 211.846069 L 634.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 263.807678 L 634.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 211.846069 L 634.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 694.000000 281.128174 L 634.000000 246.487122" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="249.487">0.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="232.167">1.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="284.128">2.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="301.449">3.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="249.487">4.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="232.167">5.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="197.526">6.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="180.205">7.1.3</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 523.615234
+L 334.000000 523.615234
+L 334.000000 558.256226
+L 364.000000 575.576782
+L 394.000000 592.897339
+L 424.000000 575.576782
+L 454.000000 627.538330
+L 514.000000 627.538330
+L 514.000000 592.897339
+L 484.000000 575.576782
+L 514.000000 523.615234
+L 484.000000 471.653748
+L 454.000000 488.974274
+L 424.000000 471.653748
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 523.615234 L 364.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 523.615234 L 424.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 627.538330 L 484.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 523.615234 L 514.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 575.576782 L 454.000000 558.256287" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 575.576782 L 454.000000 558.256287" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 488.974274 L 454.000000 558.256287" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="613.218">0.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="595.897">1.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="543.936">2.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="509.295">3.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="509.295">4.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="543.936">5.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="561.256">6.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="543.936">7.0.4</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 419.692230
+L 304.000000 367.730652
+L 274.000000 385.051208
+L 274.000000 419.692230
+L 274.000000 454.333221
+L 304.000000 471.653748
+L 274.000000 523.615234
+L 304.000000 575.576782
+L 334.000000 558.256226
+L 334.000000 523.615234
+L 394.000000 523.615234
+L 424.000000 471.653748
+L 394.000000 454.333221
+L 394.000000 419.692230
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 419.692230 L 274.000000 419.692230" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 419.692230 L 304.000000 471.653748" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 523.615234 L 334.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 419.692230 L 394.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 523.615234 L 334.000000 488.974243" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 471.653748 L 334.000000 488.974243" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 454.333221 L 334.000000 488.974243" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="543.936">0.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="509.295">1.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="509.295">2.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="491.974">3.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="440.013">4.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="457.333">5.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="440.013">6.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="405.372">7.1.4</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 211.846069
+L 364.000000 159.884583
+L 334.000000 142.564087
+L 304.000000 159.884583
+L 274.000000 177.205139
+L 274.000000 211.846069
+L 214.000000 211.846069
+L 184.000000 263.807678
+L 214.000000 281.128174
+L 244.000000 263.807678
+L 274.000000 315.769165
+L 334.000000 315.769165
+L 334.000000 281.128174
+L 364.000000 263.807678
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 211.846069 L 304.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 211.846069 L 274.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 211.846069 L 244.000000 263.807678" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 211.846069 L 274.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 263.807678 L 274.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 211.846069 L 274.000000 246.487122" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 281.128174 L 274.000000 246.487122" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="249.487">0.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="232.167">1.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="284.128">2.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="301.449">3.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="249.487">4.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="232.167">5.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="197.526">6.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="180.205">7.0.5</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 211.846069
+L 514.000000 211.846069
+L 514.000000 177.205139
+L 484.000000 159.884583
+L 454.000000 142.564087
+L 424.000000 159.884583
+L 394.000000 107.923035
+L 334.000000 107.923035
+L 334.000000 142.564087
+L 364.000000 159.884583
+L 334.000000 211.846069
+L 364.000000 263.807678
+L 394.000000 246.487122
+L 424.000000 263.807678
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 211.846069 L 484.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 211.846069 L 424.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 107.923035 L 364.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 211.846069 L 334.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 159.884583 L 394.000000 177.205017" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 159.884583 L 394.000000 177.205017" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 246.487122 L 394.000000 177.205017" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="128.244">0.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="145.564">1.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="197.526">2.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="232.167">3.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="232.167">4.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="197.526">5.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="180.205">6.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="197.526">7.1.5</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 419.692230
+L 244.000000 471.653748
+L 274.000000 454.333221
+L 274.000000 419.692230
+L 274.000000 385.051208
+L 244.000000 367.730652
+L 274.000000 315.769165
+L 244.000000 263.807678
+L 214.000000 281.128174
+L 214.000000 315.769165
+L 154.000000 315.769165
+L 124.000000 367.730652
+L 154.000000 385.051208
+L 154.000000 419.692230
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 419.692230 L 274.000000 419.692230" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 419.692230 L 244.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 315.769165 L 214.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 419.692230 L 154.000000 315.769165" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 315.769165 L 214.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 367.730652 L 214.000000 350.410156" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 385.051208 L 214.000000 350.410156" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="301.449">0.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="336.09">1.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="336.09">2.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="353.41">3.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="405.372">4.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="388.051">5.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="405.372">6.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="440.013">7.0.6</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 523.615234
+L 124.000000 575.576782
+L 154.000000 592.897339
+L 184.000000 575.576782
+L 214.000000 558.256226
+L 214.000000 523.615234
+L 274.000000 523.615234
+L 304.000000 471.653748
+L 274.000000 454.333221
+L 244.000000 471.653748
+L 214.000000 419.692230
+L 154.000000 419.692230
+L 154.000000 454.333221
+L 124.000000 471.653748
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 523.615234 L 184.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 523.615234 L 214.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 523.615234 L 244.000000 471.653748" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 523.615234 L 214.000000 419.692230" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 471.653748 L 214.000000 488.974243" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 523.615234 L 214.000000 488.974243" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 454.333221 L 214.000000 488.974243" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="491.974">0.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="509.295">1.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="457.333">2.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="440.013">3.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="491.974">4.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="509.295">5.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="543.936">6.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="561.256">7.1.6</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 939.307434
+L 184.000000 887.345947
+L 154.000000 870.025452
+L 124.000000 887.345947
+L 94.000000 904.666443
+L 94.000000 939.307434
+L 34.000000 939.307434
+L 4.000000 991.268982
+L 34.000000 1008.589478
+L 64.000000 991.268982
+L 94.000000 1043.230469
+L 154.000000 1043.230469
+L 154.000000 1008.589478
+L 184.000000 991.268982
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 939.307434 L 124.000000 887.345947" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 939.307434 L 94.000000 939.307434" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 34.000000 939.307434 L 64.000000 991.268982" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 939.307434 L 94.000000 1043.230469" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 991.268982 L 94.000000 973.948486" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 939.307434 L 94.000000 973.948486" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 1008.589478 L 94.000000 973.948486" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="34" y="976.948">0.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="64" y="959.628">1.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="1011.59">2.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="1028.91">3.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="976.948">4.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="959.628">5.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="924.987">6.0.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="907.666">7.0.7</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 939.307434
+L 334.000000 939.307434
+L 334.000000 904.666443
+L 304.000000 887.345947
+L 274.000000 870.025452
+L 244.000000 887.345947
+L 214.000000 835.384399
+L 154.000000 835.384399
+L 154.000000 870.025452
+L 184.000000 887.345947
+L 154.000000 939.307434
+L 184.000000 991.268982
+L 214.000000 973.948486
+L 244.000000 991.268982
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 939.307434 L 304.000000 887.345947" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 939.307434 L 244.000000 887.345947" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 835.384399 L 184.000000 887.345947" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 939.307434 L 154.000000 939.307434" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 887.345947 L 214.000000 904.666443" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 887.345947 L 214.000000 904.666443" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 973.948486 L 214.000000 904.666443" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="855.705">0.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="873.025">1.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="924.987">2.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="959.628">3.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="959.628">4.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="924.987">5.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="907.666">6.1.7</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="924.987">7.1.7</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 107.923035
+L 604.000000 159.884583
+L 634.000000 177.205139
+L 664.000000 159.884583
+L 694.000000 142.564087
+L 694.000000 107.923035
+L 754.000000 107.923035
+L 784.000000 55.961548
+L 754.000000 38.641052
+L 724.000000 55.961548
+L 694.000000 4.000000
+L 634.000000 4.000000
+L 634.000000 38.641052
+L 604.000000 55.961548
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 107.923035 L 664.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 107.923035 L 694.000000 107.923035" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 754.000000 107.923035 L 724.000000 55.961548" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 107.923035 L 694.000000 4.000000" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 55.961548 L 694.000000 73.282043" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 694.000000 107.923035 L 694.000000 73.282043" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 38.641052 L 694.000000 73.282043" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="754" y="76.2821">0.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="724" y="93.6026">1.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="41.6411">2.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="24.3205">3.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="76.2821">4.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="93.6026">5.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="128.244">6.0.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="145.564">7.0.8</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 107.923035
+L 454.000000 107.923035
+L 454.000000 142.564087
+L 484.000000 159.884583
+L 514.000000 177.205139
+L 544.000000 159.884583
+L 574.000000 211.846069
+L 634.000000 211.846069
+L 634.000000 177.205139
+L 604.000000 159.884583
+L 634.000000 107.923035
+L 604.000000 55.961548
+L 574.000000 73.282104
+L 544.000000 55.961548
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 107.923035 L 484.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 107.923035 L 544.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 211.846069 L 604.000000 159.884583" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 107.923035 L 634.000000 107.923035" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 604.000000 159.884583 L 574.000000 142.564087" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 159.884583 L 574.000000 142.564087" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 73.282104 L 574.000000 142.564087" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="197.526">0.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="180.205">1.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="128.244">2.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="93.6026">3.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="93.6026">4.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="128.244">5.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="145.564">6.1.8</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="128.244">7.1.8</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 627.538330
+L 544.000000 575.576782
+L 514.000000 592.897339
+L 514.000000 627.538330
+L 514.000000 662.179321
+L 544.000000 679.499817
+L 514.000000 731.461365
+L 544.000000 783.422913
+L 574.000000 766.102417
+L 574.000000 731.461365
+L 634.000000 731.461365
+L 664.000000 679.499817
+L 634.000000 662.179321
+L 634.000000 627.538330
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 627.538330 L 514.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 627.538330 L 544.000000 679.499817" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 731.461365 L 574.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 627.538330 L 634.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 731.461365 L 574.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 679.499817 L 574.000000 696.820312" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 662.179321 L 574.000000 696.820312" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="751.782">0.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="717.141">1.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="717.141">2.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="699.82">3.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="647.859">4.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="665.179">5.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="647.859">6.0.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="613.218">7.0.9</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 523.615234
+L 664.000000 471.653748
+L 634.000000 454.333221
+L 604.000000 471.653748
+L 574.000000 488.974274
+L 574.000000 523.615234
+L 514.000000 523.615234
+L 484.000000 575.576782
+L 514.000000 592.897339
+L 544.000000 575.576782
+L 574.000000 627.538330
+L 634.000000 627.538330
+L 634.000000 592.897339
+L 664.000000 575.576782
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 523.615234 L 604.000000 471.653748" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 523.615234 L 574.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 523.615234 L 544.000000 575.576782" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 523.615234 L 574.000000 627.538330" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 575.576782 L 574.000000 558.256287" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 523.615234 L 574.000000 558.256287" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 592.897339 L 574.000000 558.256287" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="561.256">0.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="543.936">1.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="595.897">2.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="613.218">3.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="561.256">4.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="543.936">5.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="509.295">6.1.9</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="491.974">7.1.9</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 835.384399
+L 424.000000 887.345947
+L 454.000000 904.666443
+L 484.000000 887.345947
+L 514.000000 870.025452
+L 514.000000 835.384399
+L 574.000000 835.384399
+L 604.000000 783.422913
+L 574.000000 766.102417
+L 544.000000 783.422913
+L 514.000000 731.461365
+L 454.000000 731.461365
+L 454.000000 766.102417
+L 424.000000 783.422913
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 835.384399 L 484.000000 887.345947" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 835.384399 L 514.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 835.384399 L 544.000000 783.422913" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 835.384399 L 514.000000 731.461365" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 783.422913 L 514.000000 800.743408" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 835.384399 L 514.000000 800.743408" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 766.102417 L 514.000000 800.743408" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="803.743">0.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="821.064">1.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="769.102">2.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="751.782">3.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="803.743">4.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="821.064">5.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="855.705">6.0.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="873.025">7.0.10</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 835.384399
+L 274.000000 835.384399
+L 274.000000 870.025452
+L 304.000000 887.345947
+L 334.000000 904.666443
+L 364.000000 887.345947
+L 394.000000 939.307434
+L 454.000000 939.307434
+L 454.000000 904.666443
+L 424.000000 887.345947
+L 454.000000 835.384399
+L 424.000000 783.422913
+L 394.000000 800.743408
+L 364.000000 783.422913
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 835.384399 L 304.000000 887.345947" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 835.384399 L 364.000000 887.345947" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 939.307434 L 424.000000 887.345947" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 835.384399 L 454.000000 835.384399" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 887.345947 L 394.000000 870.025452" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 887.345947 L 394.000000 870.025452" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 800.743408 L 394.000000 870.025452" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="924.987">0.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="907.666">1.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="855.705">2.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="821.064">3.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="821.064">4.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="855.705">5.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="873.025">6.1.10</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="855.705">7.1.10</text>
+</svg>
--- /dev/null
+++ b/aux/doc/kitemap-T.svg
@@ -1,0 +1,483 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="762" height="792">
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 367.730652
+L 424.000000 315.769104
+L 394.000000 333.089630
+L 394.000000 367.730652
+L 394.000000 402.371643
+L 424.000000 419.692139
+L 394.000000 471.653687
+L 424.000000 523.615234
+L 454.000000 506.294708
+L 454.000000 471.653687
+L 514.000000 471.653687
+L 544.000000 419.692139
+L 514.000000 402.371643
+L 514.000000 367.730652
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 367.730652 L 394.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 367.730652 L 424.000000 419.692139" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 471.653687 L 454.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 367.730652 L 514.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 471.653687 L 454.000000 437.012665" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 419.692139 L 454.000000 437.012665" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 402.371643 L 454.000000 437.012665" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="491.974">0.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="457.333">1.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="457.333">2.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="440.013">3.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="388.051">4.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="405.372">5.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="388.051">6.0.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="353.41">7.0.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 367.730652
+L 394.000000 367.730652
+L 394.000000 333.089630
+L 364.000000 315.769104
+L 334.000000 298.448578
+L 304.000000 315.769104
+L 274.000000 263.807587
+L 214.000000 263.807587
+L 214.000000 298.448578
+L 244.000000 315.769104
+L 214.000000 367.730652
+L 244.000000 419.692139
+L 274.000000 402.371643
+L 304.000000 419.692139
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 367.730652 L 364.000000 315.769104" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 367.730652 L 304.000000 315.769104" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 263.807587 L 244.000000 315.769104" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 367.730652 L 214.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 315.769104 L 274.000000 333.089630" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 315.769104 L 274.000000 333.089630" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 402.371643 L 274.000000 333.089630" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="284.128">0.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="301.449">1.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="353.41">2.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="388.051">3.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="388.051">4.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="353.41">5.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="336.09">6.1.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="353.41">7.1.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 471.653687
+L 244.000000 419.692139
+L 214.000000 437.012695
+L 214.000000 471.653687
+L 214.000000 506.294708
+L 244.000000 523.615234
+L 214.000000 575.576721
+L 244.000000 627.538269
+L 274.000000 610.217773
+L 274.000000 575.576721
+L 334.000000 575.576721
+L 364.000000 523.615234
+L 334.000000 506.294708
+L 334.000000 471.653687
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 471.653687 L 214.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 471.653687 L 244.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 575.576721 L 274.000000 575.576721" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 471.653687 L 334.000000 575.576721" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 575.576721 L 274.000000 540.935730" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 523.615234 L 274.000000 540.935730" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 506.294708 L 274.000000 540.935730" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="595.897">0.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="561.256">1.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="561.256">2.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="543.936">3.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="491.974">4.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="509.295">5.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="491.974">6.2.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="457.333">7.2.0</text>
+<path style="fill: rgba(0,0,0,0.2); stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 419.692139
+L 394.000000 402.371643
+L 394.000000 367.730652
+L 334.000000 367.730652
+L 304.000000 419.692139
+L 274.000000 402.371643
+L 244.000000 419.692139
+L 274.000000 471.653687
+L 334.000000 471.653687
+L 334.000000 506.294708
+L 364.000000 523.615234
+L 394.000000 540.935730
+L 424.000000 523.615234
+L 394.000000 471.653687
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 471.653687 L 364.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 471.653687 L 334.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 471.653687 L 304.000000 419.692139" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 471.653687 L 334.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 419.692139 L 334.000000 437.012665" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 471.653687 L 334.000000 437.012665" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 402.371643 L 334.000000 437.012665" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="440.013">0.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="457.333">1.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="405.372">2.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="388.051">3.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="440.013">4.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="457.333">5.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="491.974">6.3.0</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="509.295">7.3.0</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 471.653687
+L 124.000000 419.692139
+L 94.000000 437.012695
+L 94.000000 471.653687
+L 94.000000 506.294708
+L 124.000000 523.615234
+L 94.000000 575.576721
+L 124.000000 627.538269
+L 154.000000 610.217773
+L 154.000000 575.576721
+L 214.000000 575.576721
+L 244.000000 523.615234
+L 214.000000 506.294708
+L 214.000000 471.653687
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 471.653687 L 94.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 471.653687 L 124.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 575.576721 L 154.000000 575.576721" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 471.653687 L 214.000000 575.576721" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 575.576721 L 154.000000 540.935730" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 523.615234 L 154.000000 540.935730" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 506.294708 L 154.000000 540.935730" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="595.897">0.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="561.256">1.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="561.256">2.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="543.936">3.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="491.974">4.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="509.295">5.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="491.974">6.0.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="457.333">7.0.1</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 367.730652
+L 244.000000 315.769104
+L 214.000000 298.448578
+L 184.000000 315.769104
+L 154.000000 333.089630
+L 154.000000 367.730652
+L 94.000000 367.730652
+L 64.000000 419.692139
+L 94.000000 437.012695
+L 124.000000 419.692139
+L 154.000000 471.653687
+L 214.000000 471.653687
+L 214.000000 437.012695
+L 244.000000 419.692139
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 367.730652 L 184.000000 315.769104" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 367.730652 L 154.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 367.730652 L 124.000000 419.692139" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 367.730652 L 154.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 124.000000 419.692139 L 154.000000 402.371643" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 367.730652 L 154.000000 402.371643" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 437.012695 L 154.000000 402.371643" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="405.372">0.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="388.051">1.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="440.013">2.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="457.333">3.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="405.372">4.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="388.051">5.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="353.41">6.1.1</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="336.09">7.1.1</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 263.807587
+L 334.000000 263.807587
+L 334.000000 298.448578
+L 364.000000 315.769104
+L 394.000000 333.089630
+L 424.000000 315.769104
+L 454.000000 367.730652
+L 514.000000 367.730652
+L 514.000000 333.089630
+L 484.000000 315.769104
+L 514.000000 263.807587
+L 484.000000 211.846069
+L 454.000000 229.166595
+L 424.000000 211.846069
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 263.807587 L 364.000000 315.769104" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 263.807587 L 424.000000 315.769104" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 367.730652 L 484.000000 315.769104" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 263.807587 L 514.000000 263.807587" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 484.000000 315.769104 L 454.000000 298.448608" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 315.769104 L 454.000000 298.448608" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 229.166595 L 454.000000 298.448608" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="353.41">0.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="336.09">1.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="284.128">2.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="249.487">3.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="249.487">4.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="284.128">5.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="301.449">6.0.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="284.128">7.0.2</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 159.884552
+L 304.000000 107.922974
+L 274.000000 125.243530
+L 274.000000 159.884552
+L 274.000000 194.525543
+L 304.000000 211.846069
+L 274.000000 263.807587
+L 304.000000 315.769104
+L 334.000000 298.448578
+L 334.000000 263.807587
+L 394.000000 263.807587
+L 424.000000 211.846069
+L 394.000000 194.525543
+L 394.000000 159.884552
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 159.884552 L 274.000000 159.884552" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 159.884552 L 304.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 263.807587 L 334.000000 263.807587" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 159.884552 L 394.000000 263.807587" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 263.807587 L 334.000000 229.166565" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 304.000000 211.846069 L 334.000000 229.166565" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 194.525543 L 334.000000 229.166565" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="284.128">0.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="249.487">1.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="249.487">2.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="232.167">3.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="180.205">4.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="197.526">5.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="180.205">6.1.2</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="145.564">7.1.2</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 575.576721
+L 424.000000 627.538269
+L 454.000000 644.858765
+L 484.000000 627.538269
+L 514.000000 610.217773
+L 514.000000 575.576721
+L 574.000000 575.576721
+L 604.000000 523.615234
+L 574.000000 506.294708
+L 544.000000 523.615234
+L 514.000000 471.653687
+L 454.000000 471.653687
+L 454.000000 506.294708
+L 424.000000 523.615234
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 575.576721 L 484.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 575.576721 L 514.000000 575.576721" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 575.576721 L 544.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 575.576721 L 514.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 523.615234 L 514.000000 540.935730" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 575.576721 L 514.000000 540.935730" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 454.000000 506.294708 L 514.000000 540.935730" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="543.936">0.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="561.256">1.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="514" y="509.295">2.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="491.974">3.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="543.936">4.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="561.256">5.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="484" y="595.897">6.0.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="454" y="613.218">7.0.3</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 575.576721
+L 274.000000 575.576721
+L 274.000000 610.217773
+L 304.000000 627.538269
+L 334.000000 644.858765
+L 364.000000 627.538269
+L 394.000000 679.499756
+L 454.000000 679.499756
+L 454.000000 644.858765
+L 424.000000 627.538269
+L 454.000000 575.576721
+L 424.000000 523.615234
+L 394.000000 540.935730
+L 364.000000 523.615234
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 575.576721 L 304.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 575.576721 L 364.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 679.499756 L 424.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 334.000000 575.576721 L 454.000000 575.576721" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 424.000000 627.538269 L 394.000000 610.217773" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 364.000000 627.538269 L 394.000000 610.217773" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 394.000000 540.935730 L 394.000000 610.217773" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="665.179">0.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="394" y="647.859">1.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="595.897">2.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="424" y="561.256">3.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="561.256">4.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="364" y="595.897">5.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="334" y="613.218">6.1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="595.897">7.1.3</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 159.884552
+L 244.000000 211.846069
+L 274.000000 194.525543
+L 274.000000 159.884552
+L 274.000000 125.243530
+L 244.000000 107.922974
+L 274.000000 55.961487
+L 244.000000 4.000000
+L 214.000000 21.320496
+L 214.000000 55.961487
+L 154.000000 55.961487
+L 124.000000 107.922974
+L 154.000000 125.243530
+L 154.000000 159.884552
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 159.884552 L 274.000000 159.884552" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 159.884552 L 244.000000 107.922974" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 55.961487 L 214.000000 55.961487" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 159.884552 L 154.000000 55.961487" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 55.961487 L 214.000000 90.602478" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 107.922974 L 214.000000 90.602478" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 125.243530 L 214.000000 90.602478" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="41.641">0.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="76.282">1.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="76.282">2.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="93.6025">3.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="145.564">4.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="128.244">5.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="145.564">6.0.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="180.205">7.0.4</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 263.807587
+L 124.000000 315.769104
+L 154.000000 333.089630
+L 184.000000 315.769104
+L 214.000000 298.448578
+L 214.000000 263.807587
+L 274.000000 263.807587
+L 304.000000 211.846069
+L 274.000000 194.525543
+L 244.000000 211.846069
+L 214.000000 159.884552
+L 154.000000 159.884552
+L 154.000000 194.525543
+L 124.000000 211.846069
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 263.807587 L 184.000000 315.769104" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 263.807587 L 214.000000 263.807587" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 263.807587 L 244.000000 211.846069" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 263.807587 L 214.000000 159.884552" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 211.846069 L 214.000000 229.166565" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 263.807587 L 214.000000 229.166565" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 194.525543 L 214.000000 229.166565" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="232.167">0.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="249.487">1.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="197.526">2.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="180.205">3.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="232.167">4.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="249.487">5.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="284.128">6.1.4</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="301.449">7.1.4</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 679.499756
+L 184.000000 627.538269
+L 154.000000 610.217773
+L 124.000000 627.538269
+L 94.000000 644.858765
+L 94.000000 679.499756
+L 34.000000 679.499756
+L 4.000000 731.461304
+L 34.000000 748.781799
+L 64.000000 731.461304
+L 94.000000 783.422852
+L 154.000000 783.422852
+L 154.000000 748.781799
+L 184.000000 731.461304
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 679.499756 L 124.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 679.499756 L 94.000000 679.499756" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 34.000000 679.499756 L 64.000000 731.461304" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 679.499756 L 94.000000 783.422852" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 64.000000 731.461304 L 94.000000 714.140808" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 94.000000 679.499756 L 94.000000 714.140808" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 154.000000 748.781799 L 94.000000 714.140808" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="34" y="717.141">0.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="64" y="699.82">1.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="94" y="751.782">2.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="769.102">3.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="717.141">4.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="699.82">5.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="124" y="665.179">6.0.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="154" y="647.859">7.0.5</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 679.499756
+L 334.000000 679.499756
+L 334.000000 644.858765
+L 304.000000 627.538269
+L 274.000000 610.217773
+L 244.000000 627.538269
+L 214.000000 575.576721
+L 154.000000 575.576721
+L 154.000000 610.217773
+L 184.000000 627.538269
+L 154.000000 679.499756
+L 184.000000 731.461304
+L 214.000000 714.140808
+L 244.000000 731.461304
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 679.499756 L 304.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 679.499756 L 244.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 575.576721 L 184.000000 627.538269" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 274.000000 679.499756 L 154.000000 679.499756" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 184.000000 627.538269 L 214.000000 644.858765" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 244.000000 627.538269 L 214.000000 644.858765" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 214.000000 714.140808 L 214.000000 644.858765" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="595.897">0.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="214" y="613.218">1.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="665.179">2.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="184" y="699.82">3.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="699.82">4.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="244" y="665.179">5.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="274" y="647.859">6.1.5</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="304" y="665.179">7.1.5</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 471.653687
+L 574.000000 471.653687
+L 574.000000 506.294708
+L 604.000000 523.615234
+L 634.000000 540.935730
+L 664.000000 523.615234
+L 694.000000 575.576721
+L 754.000000 575.576721
+L 754.000000 540.935730
+L 724.000000 523.615234
+L 754.000000 471.653687
+L 724.000000 419.692139
+L 694.000000 437.012695
+L 664.000000 419.692139
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 471.653687 L 604.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 471.653687 L 664.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 694.000000 575.576721 L 724.000000 523.615234" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 471.653687 L 754.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 724.000000 523.615234 L 694.000000 506.294708" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 664.000000 523.615234 L 694.000000 506.294708" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 694.000000 437.012695 L 694.000000 506.294708" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="724" y="561.256">0.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="694" y="543.936">1.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="724" y="491.974">2.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="724" y="457.333">3.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="457.333">4.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="664" y="491.974">5.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="509.295">6.0.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="491.974">7.0.6</text>
+<path style="fill: none; stroke: black; stroke-width: 4.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 367.730652
+L 544.000000 315.769104
+L 514.000000 333.089630
+L 514.000000 367.730652
+L 514.000000 402.371643
+L 544.000000 419.692139
+L 514.000000 471.653687
+L 544.000000 523.615234
+L 574.000000 506.294708
+L 574.000000 471.653687
+L 634.000000 471.653687
+L 664.000000 419.692139
+L 634.000000 402.371643
+L 634.000000 367.730652
+z" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 367.730652 L 514.000000 367.730652" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 367.730652 L 544.000000 419.692139" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 514.000000 471.653687 L 574.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 367.730652 L 634.000000 471.653687" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 574.000000 471.653687 L 574.000000 437.012665" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 544.000000 419.692139 L 574.000000 437.012665" />
+<path style="fill: none; stroke: rgba(0,0,0,0.2); stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 634.000000 402.371643 L 574.000000 437.012665" />
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="491.974">0.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="457.333">1.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="457.333">2.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="634" y="440.013">3.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="604" y="388.051">4.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="574" y="405.372">5.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="388.051">6.1.6</text>
+<text style="fill: black; font-family: Sans; font-size: 10px; text-anchor: middle; text-align: center; " x="544" y="353.41">7.1.6</text>
+</svg>
--- /dev/null
+++ b/aux/doc/metamap-F.svg
@@ -1,0 +1,714 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="1026" height="1531">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 469.653748
+L 182.000000 504.294739
+L 302.000000 573.576782
+L 332.000000 556.256287
+L 332.000000 417.692200
+L 302.000000 400.371704
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 435.012695 L 257.000000 512.955017 L 273.392304 508.562709 M 257.000000 512.955017 L 252.607692 496.562713 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="491.474">1.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 573.576782
+L 152.000000 590.897278
+L 152.000000 729.461365
+L 182.000000 746.781860
+L 302.000000 677.499817
+L 302.000000 642.858826
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 660.179321 L 182.000000 660.179321 L 194.000000 672.179321 M 182.000000 660.179321 L 194.000000 648.179321 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="664.679">0.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 365.730682
+L 392.000000 348.410187
+L 392.000000 209.846100
+L 362.000000 192.525574
+L 242.000000 261.807617
+L 242.000000 296.448669
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 279.128143 L 362.000000 279.128143 L 350.000000 267.128143 M 362.000000 279.128143 L 350.000000 291.128143 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="283.628">1.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 452.000000 313.769135
+L 482.000000 331.089661
+L 602.000000 261.807617
+L 602.000000 227.166626
+L 482.000000 157.884583
+L 452.000000 175.205109
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 192.525604 L 527.000000 270.467865 L 531.392303 254.075560 M 527.000000 270.467865 L 510.607695 266.075562 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="248.987">0.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 937.307434
+L 242.000000 919.986938
+L 242.000000 781.422852
+L 212.000000 764.102356
+L 92.000000 833.384399
+L 92.000000 868.025391
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 122.000000 850.704895 L 212.000000 850.704895 L 200.000000 838.704895 M 212.000000 850.704895 L 200.000000 862.704895 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="855.205">0.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 365.730682
+L 542.000000 400.371704
+L 662.000000 469.653748
+L 692.000000 452.333252
+L 692.000000 313.769135
+L 662.000000 296.448669
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 331.089661 L 617.000000 409.031952 L 633.392304 404.639647 M 617.000000 409.031952 L 612.607695 392.639648 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="387.551">2.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 1041.230469
+L 212.000000 1006.589478
+L 92.000000 937.307434
+L 62.000000 954.627930
+L 62.000000 1093.192017
+L 92.000000 1110.512573
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 92.000000 1075.871460 L 137.000000 997.929321 L 120.607692 1002.321612 M 137.000000 997.929321 L 141.392291 1014.321630 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="1028.41">1.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 885.345947
+L 332.000000 902.666443
+L 452.000000 833.384399
+L 452.000000 798.743408
+L 332.000000 729.461365
+L 302.000000 746.781860
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 764.102356 L 377.000000 842.044617 L 381.392303 825.652311 M 377.000000 842.044617 L 360.607695 837.652314 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="820.564">2.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 521.615234
+L 542.000000 504.294739
+L 542.000000 365.730682
+L 512.000000 348.410187
+L 392.000000 417.692200
+L 392.000000 452.333252
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 435.012695 L 512.000000 435.012695 L 500.000000 423.012695 M 512.000000 435.012695 L 500.000000 447.012695 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="439.513">0.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 105.923096
+L 722.000000 88.602539
+L 602.000000 157.884583
+L 602.000000 192.525574
+L 722.000000 261.807617
+L 752.000000 244.487152
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 227.166626 L 677.000000 149.224335 L 672.607695 165.616639 M 677.000000 149.224335 L 693.392304 153.616640 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="179.705">0.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 625.538330
+L 512.000000 590.897278
+L 392.000000 521.615234
+L 362.000000 538.935791
+L 362.000000 677.499817
+L 392.000000 694.820312
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 660.179321 L 437.000000 582.237000 L 420.607696 586.629308 M 437.000000 582.237000 L 441.392308 598.629303 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="612.718">0.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 53.961548
+L 812.000000 71.282043
+L 812.000000 209.846100
+L 842.000000 227.166626
+L 962.000000 157.884583
+L 962.000000 123.243530
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 932.000000 140.564056 L 842.000000 140.564056 L 854.000000 152.564056 M 842.000000 140.564056 L 854.000000 128.564056 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="872" y="145.064">1.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 1249.076660
+L 242.000000 1266.397095
+L 362.000000 1197.115112
+L 362.000000 1162.474121
+L 242.000000 1093.192017
+L 212.000000 1110.512573
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 1127.833008 L 287.000000 1205.775391 L 291.392314 1189.383088 M 287.000000 1205.775391 L 270.607697 1201.383077 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="1184.29">1.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 989.268982
+L 422.000000 954.627930
+L 302.000000 885.345947
+L 272.000000 902.666443
+L 272.000000 1041.230469
+L 302.000000 1058.551025
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 1023.909973 L 347.000000 945.967651 L 330.607696 950.359960 M 347.000000 945.967651 L 351.392308 962.359955 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="976.448">0.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 602.000000 677.499817
+L 572.000000 660.179321
+L 452.000000 729.461365
+L 452.000000 764.102356
+L 572.000000 833.384399
+L 602.000000 816.063904
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 798.743347 L 527.000000 720.801086 L 522.607697 737.193392 M 527.000000 720.801086 L 543.392305 725.193389 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="751.282">1.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 625.538330
+L 662.000000 608.217773
+L 662.000000 469.653748
+L 632.000000 452.333252
+L 512.000000 521.615234
+L 512.000000 556.256287
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 538.935791 L 632.000000 538.935791 L 620.000000 526.935791 M 632.000000 538.935791 L 620.000000 550.935791 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="543.436">1.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 1301.038086
+L 302.000000 1335.679199
+L 422.000000 1404.961182
+L 452.000000 1387.640625
+L 452.000000 1249.076660
+L 422.000000 1231.756104
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 1266.397217 L 377.000000 1344.339478 L 393.392305 1339.947175 M 377.000000 1344.339478 L 372.607697 1327.947172 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="1322.86">0.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 1041.230469
+L 482.000000 1023.909973
+L 362.000000 1093.192017
+L 362.000000 1127.833008
+L 482.000000 1197.115112
+L 512.000000 1179.794556
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 1162.473999 L 437.000000 1084.531860 L 432.607709 1100.924169 M 437.000000 1084.531860 L 453.392308 1088.924151 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="1115.01">0.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 937.307434
+L 572.000000 902.666443
+L 452.000000 833.384399
+L 422.000000 850.704895
+L 422.000000 989.268982
+L 452.000000 1006.589478
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 452.000000 971.948425 L 497.000000 894.006165 L 480.607695 898.398467 M 497.000000 894.006165 L 501.392303 910.398470 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="924.487">1.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 417.692200
+L 902.000000 400.371704
+L 902.000000 261.807617
+L 872.000000 244.487152
+L 752.000000 313.769135
+L 752.000000 348.410187
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 331.089661 L 872.000000 331.089661 L 860.000000 319.089661 M 872.000000 331.089661 L 860.000000 343.089661 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="335.59">0.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 602.000000 989.268982
+L 572.000000 1006.589478
+L 572.000000 1145.153564
+L 602.000000 1162.474121
+L 722.000000 1093.192017
+L 722.000000 1058.551025
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 692.000000 1075.871582 L 602.000000 1075.871582 L 614.000000 1087.871582 M 602.000000 1075.871582 L 614.000000 1063.871582 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="1080.37">1.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 521.615234
+L 872.000000 486.974243
+L 752.000000 417.692200
+L 722.000000 435.012695
+L 722.000000 573.576782
+L 752.000000 590.897278
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 556.256287 L 797.000000 478.313965 L 780.607696 482.706273 M 797.000000 478.313965 L 801.392308 494.706269 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="508.795">1.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 781.422852
+L 812.000000 764.102356
+L 812.000000 625.538330
+L 782.000000 608.217773
+L 662.000000 677.499817
+L 662.000000 712.140869
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 692.000000 694.820312 L 782.000000 694.820312 L 770.000000 682.820312 M 782.000000 694.820312 L 770.000000 706.820312 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="699.32">0.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 885.345947
+L 782.000000 850.704895
+L 662.000000 781.422852
+L 632.000000 798.743408
+L 632.000000 937.307434
+L 662.000000 954.627930
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 919.986938 L 707.000000 842.044617 L 690.607696 846.436925 M 707.000000 842.044617 L 711.392308 858.436921 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="872.525">1.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 400.371704
+L 542.000000 504.294739
+L 632.000000 452.333252
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 551.000000 415.960144 L 578.000000 462.725525 L 582.392306 446.333220 M 578.000000 462.725525 L 561.607695 458.333219 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="456.833">3.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 902.666443
+L 422.000000 954.627930
+L 422.000000 850.704895
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 350.000000 902.666382 L 404.000000 902.666382 L 392.000000 890.666382 M 404.000000 902.666382 L 392.000000 914.666382 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="907.166">3.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 504.294739
+L 182.000000 573.576782
+L 302.000000 642.858826
+L 302.000000 573.576782
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 251.000000 557.988281 L 233.000000 589.165161 L 249.392307 584.772864 M 233.000000 589.165161 L 228.607703 572.772854 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="578.077">3.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 590.897278
+L 92.000000 625.538330
+L 92.000000 764.102356
+L 152.000000 729.461365
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 140.000000 677.499878 L 104.000000 677.499878 L 116.000000 689.499878 M 104.000000 677.499878 L 116.000000 665.499878 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="682">2.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 348.410187
+L 452.000000 313.769135
+L 452.000000 175.205109
+L 392.000000 209.846100
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 404.000000 261.807617 L 440.000000 261.807617 L 428.000000 249.807617 M 440.000000 261.807617 L 428.000000 273.807617 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="266.308">3.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 331.089661
+L 542.000000 365.730682
+L 662.000000 296.448669
+L 602.000000 261.807617
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 563.000000 298.180725 L 581.000000 329.357605 L 585.392297 312.965298 M 581.000000 329.357605 L 564.607693 324.965308 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="310.769">5.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="325.769">2.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 919.986938
+L 302.000000 885.345947
+L 302.000000 746.781860
+L 242.000000 781.422852
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 254.000000 833.384399 L 290.000000 833.384399 L 278.000000 821.384399 M 290.000000 833.384399 L 278.000000 845.384399 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="830.384">5.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="845.384">2.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 88.602539
+L 662.000000 53.961548
+L 542.000000 123.243530
+L 602.000000 157.884583
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 641.000000 121.511497 L 623.000000 90.334595 L 618.607697 106.726900 M 623.000000 90.334595 L 639.392305 94.726897 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="110.423">2.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 1006.589478
+L 212.000000 937.307434
+L 92.000000 868.025391
+L 92.000000 937.307434
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 143.000000 952.895874 L 161.000000 921.718933 L 144.607697 926.111244 M 161.000000 921.718933 L 165.392311 938.111236 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="152" y="941.807">3.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 590.897278
+L 512.000000 521.615234
+L 392.000000 452.333252
+L 392.000000 521.615234
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 443.000000 537.203735 L 461.000000 506.026794 L 444.607697 510.419105 M 461.000000 506.026794 L 465.392311 522.419097 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="518.615">4.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="533.615">3.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 812.000000 71.282043
+L 752.000000 105.923096
+L 752.000000 244.487152
+L 812.000000 209.846100
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 800.000000 157.884598 L 764.000000 157.884613 L 776.000006 169.884608 M 764.000000 157.884613 L 775.999995 145.884607 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="162.385">3.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 660.179321
+L 512.000000 625.538330
+L 392.000000 694.820312
+L 452.000000 729.461365
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 491.000000 693.088257 L 473.000000 661.911316 L 468.607689 678.303618 M 473.000000 661.911316 L 489.392303 666.303627 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="682">4.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 1266.397095
+L 302.000000 1301.038086
+L 422.000000 1231.756104
+L 362.000000 1197.115112
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 323.000000 1233.488281 L 341.000000 1264.665039 L 345.392269 1248.272725 M 341.000000 1264.665039 L 324.607686 1260.272770 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="1253.58">3.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 608.217773
+L 722.000000 573.576782
+L 722.000000 435.012695
+L 662.000000 469.653748
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 674.000000 521.615234 L 710.000000 521.615234 L 698.000000 509.615234 M 710.000000 521.615234 L 698.000000 533.615234 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="518.615">6.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="533.615">2.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 1335.679199
+L 302.000000 1404.961182
+L 422.000000 1474.243164
+L 422.000000 1404.961182
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 371.000000 1389.372803 L 353.000000 1420.549561 L 369.392314 1416.157292 M 353.000000 1420.549561 L 348.607731 1404.157247 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="1409.46">2.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 1023.909973
+L 422.000000 989.268982
+L 302.000000 1058.551025
+L 362.000000 1093.192017
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 401.000000 1056.818970 L 383.000000 1025.641968 L 378.607675 1042.034267 M 383.000000 1025.641968 L 399.392300 1030.034293 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="1038.23">4.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="1053.23">2.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 902.666443
+L 572.000000 833.384399
+L 452.000000 764.102356
+L 452.000000 833.384399
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 503.000000 848.972839 L 521.000000 817.795898 L 504.607697 822.188209 M 521.000000 817.795898 L 525.392311 834.188201 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="830.384">2.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="845.384">6.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 902.000000 400.371704
+L 962.000000 365.730682
+L 962.000000 227.166626
+L 902.000000 261.807617
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 914.000000 313.769165 L 950.000000 313.769165 L 938.000000 301.769165 M 950.000000 313.769165 L 938.000000 325.769165 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="932" y="318.269">3.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 1006.589478
+L 512.000000 1041.230469
+L 512.000000 1179.794556
+L 572.000000 1145.153564
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 560.000000 1093.192017 L 524.000000 1093.192017 L 536.000000 1105.192017 M 524.000000 1093.192017 L 536.000000 1081.192017 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="1097.69">3.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 486.974243
+L 872.000000 417.692200
+L 752.000000 348.410187
+L 752.000000 417.692200
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 803.000000 433.280670 L 821.000000 402.103729 L 804.607697 406.496040 M 821.000000 402.103729 L 825.392311 418.496032 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="812" y="422.192">4.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 812.000000 764.102356
+L 872.000000 729.461365
+L 872.000000 590.897278
+L 812.000000 625.538330
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 824.000000 677.499878 L 860.000000 677.499878 L 848.000000 665.499878 M 860.000000 677.499878 L 848.000000 689.499878 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="682">2.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 850.704895
+L 782.000000 781.422852
+L 662.000000 712.140869
+L 662.000000 781.422852
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 713.000000 797.011353 L 731.000000 765.834412 L 714.607697 770.226722 M 731.000000 765.834412 L 735.392311 782.226714 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="785.923">3.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 209.846100
+L 212.000000 244.487152
+L 242.000000 261.807617
+L 362.000000 192.525574
+L 302.000000 157.884583
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="214.346">6.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 417.692200
+L 152.000000 452.333252
+L 182.000000 469.653748
+L 302.000000 400.371704
+L 242.000000 365.730682
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="422.192">10.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 261.807617
+L 212.000000 244.487152
+L 182.000000 261.807617
+L 182.000000 400.371704
+L 242.000000 365.730682
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="318.269">7.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 469.653748
+L 152.000000 452.333252
+L 122.000000 469.653748
+L 122.000000 608.217773
+L 182.000000 573.576782
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="152" y="526.115">9.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 62.000000 781.422852
+L 62.000000 816.063904
+L 92.000000 833.384399
+L 212.000000 764.102356
+L 152.000000 729.461365
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="778.423">8.5</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="793.423">4.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 92.000000 833.384399
+L 62.000000 816.063904
+L 32.000000 833.384399
+L 32.000000 971.948486
+L 92.000000 937.307434
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="62" y="889.846">5.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 417.692200
+L 362.000000 400.371704
+L 362.000000 365.730682
+L 242.000000 296.448669
+L 242.000000 365.730682
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="362.731">10.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="377.731">7.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 365.730682
+L 362.000000 400.371704
+L 392.000000 417.692200
+L 512.000000 348.410187
+L 452.000000 313.769135
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="362.731">8.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="377.731">9.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 157.884583
+L 482.000000 123.243530
+L 452.000000 105.923096
+L 332.000000 175.205109
+L 392.000000 209.846100
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="162.385">5.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 105.923096
+L 482.000000 123.243530
+L 482.000000 157.884583
+L 602.000000 227.166626
+L 602.000000 157.884583
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="154.885">8.8</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="169.885">4.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 2.000000 1093.192017
+L 32.000000 1110.512573
+L 62.000000 1093.192017
+L 62.000000 954.627930
+L 2.000000 989.268982
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="32" y="1045.73">6.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 417.692200
+L 362.000000 400.371704
+L 332.000000 417.692200
+L 332.000000 556.256287
+L 392.000000 521.615234
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="459.154">7.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="474.154">8.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="489.154">6.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 62.000000 1093.192017
+L 32.000000 1110.512573
+L 32.000000 1145.153564
+L 152.000000 1214.435547
+L 152.000000 1145.153564
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="1149.65">7.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 677.499817
+L 332.000000 694.820312
+L 362.000000 677.499817
+L 362.000000 538.935791
+L 302.000000 573.576782
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="622.538">5.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="637.538">5.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 729.461365
+L 332.000000 694.820312
+L 302.000000 677.499817
+L 182.000000 746.781860
+L 242.000000 781.422852
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="718.961">4.5</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="733.961">11.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="748.961">8.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 677.499817
+L 332.000000 694.820312
+L 332.000000 729.461365
+L 452.000000 798.743408
+L 452.000000 729.461365
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="726.461">6.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="741.461">12.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 1041.230469
+L 242.000000 1058.551025
+L 272.000000 1041.230469
+L 272.000000 902.666443
+L 212.000000 937.307434
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="986.269">8.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="1001.27">9.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 1249.076660
+L 182.000000 1266.397095
+L 212.000000 1249.076660
+L 212.000000 1110.512573
+L 152.000000 1145.153564
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="1201.62">10.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 1093.192017
+L 242.000000 1058.551025
+L 212.000000 1041.230469
+L 92.000000 1110.512573
+L 152.000000 1145.153564
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="1090.19">10.6</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="1105.19">7.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 1041.230469
+L 242.000000 1058.551025
+L 242.000000 1093.192017
+L 362.000000 1162.474121
+L 362.000000 1093.192017
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="1082.69">7.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="1097.69">8.10</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="1112.69">6.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 692.000000 313.769135
+L 722.000000 296.448669
+L 722.000000 261.807617
+L 602.000000 192.525574
+L 602.000000 261.807617
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="251.308">11.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="266.308">4.8</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="281.308">8.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 261.807617
+L 722.000000 296.448669
+L 752.000000 313.769135
+L 872.000000 244.487152
+L 812.000000 209.846100
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="258.808">5.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="273.808">5.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 53.961548
+L 842.000000 19.320557
+L 812.000000 2.000000
+L 692.000000 71.282043
+L 752.000000 105.923096
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="58.4615">9.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 2.000000
+L 842.000000 19.320557
+L 842.000000 53.961548
+L 962.000000 123.243530
+L 962.000000 53.961548
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="902" y="58.4615">10.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 1249.076660
+L 182.000000 1266.397095
+L 182.000000 1301.038086
+L 302.000000 1370.320190
+L 302.000000 1301.038086
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="1305.54">9.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 313.769135
+L 722.000000 296.448669
+L 692.000000 313.769135
+L 692.000000 452.333252
+L 752.000000 417.692200
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="362.731">12.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="377.731">6.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 602.000000 677.499817
+L 632.000000 660.179321
+L 632.000000 625.538330
+L 512.000000 556.256287
+L 512.000000 625.538330
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="622.538">9.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="637.538">9.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 625.538330
+L 632.000000 660.179321
+L 662.000000 677.499817
+L 782.000000 608.217773
+L 722.000000 573.576782
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="615.038">10.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="630.038">4.9</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="645.038">7.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 677.499817
+L 632.000000 660.179321
+L 602.000000 677.499817
+L 602.000000 816.063904
+L 662.000000 781.422852
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="726.461">10.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="741.461">5.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 962.000000 157.884583
+L 992.000000 175.205109
+L 1022.000000 157.884583
+L 1022.000000 19.320557
+L 962.000000 53.961548
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="992" y="110.423">7.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 937.307434
+L 602.000000 954.627930
+L 632.000000 937.307434
+L 632.000000 798.743408
+L 572.000000 833.384399
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="874.846">7.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="889.846">6.9</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="904.846">10.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 992.000000 209.846100
+L 992.000000 175.205109
+L 962.000000 157.884583
+L 842.000000 227.166626
+L 902.000000 261.807617
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="932" y="206.846">8.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="932" y="221.846">6.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 452.000000 1249.076660
+L 482.000000 1231.756104
+L 482.000000 1197.115112
+L 362.000000 1127.833008
+L 362.000000 1197.115112
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="1194.12">4.10</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="1209.12">5.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 1197.115112
+L 482.000000 1231.756104
+L 512.000000 1249.076660
+L 632.000000 1179.794556
+L 572.000000 1145.153564
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="1201.62">5.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 602.000000 989.268982
+L 602.000000 954.627930
+L 572.000000 937.307434
+L 452.000000 1006.589478
+L 512.000000 1041.230469
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="986.269">9.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="1001.27">9.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 937.307434
+L 602.000000 954.627930
+L 602.000000 989.268982
+L 722.000000 1058.551025
+L 722.000000 989.268982
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="986.269">7.9</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="1001.27">10.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 521.615234
+L 902.000000 538.935791
+L 932.000000 521.615234
+L 932.000000 383.051208
+L 872.000000 417.692200
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="902" y="474.154">9.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 1249.076660
+L 482.000000 1231.756104
+L 452.000000 1249.076660
+L 452.000000 1387.640625
+L 512.000000 1352.999756
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="1305.54">4.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 902.000000 573.576782
+L 902.000000 538.935791
+L 872.000000 521.615234
+L 752.000000 590.897278
+L 812.000000 625.538330
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="570.577">8.9</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="585.577">10.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 1508.884277
+L 452.000000 1526.204712
+L 482.000000 1508.884277
+L 482.000000 1370.320190
+L 422.000000 1404.961182
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="1461.42">8.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 885.345947
+L 812.000000 902.666443
+L 842.000000 885.345947
+L 842.000000 746.781860
+L 782.000000 781.422852
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="812" y="837.884">9.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 1093.192017
+L 752.000000 1110.512573
+L 782.000000 1093.192017
+L 782.000000 954.627930
+L 722.000000 989.268982
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="1045.73">7.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 812.000000 937.307434
+L 812.000000 902.666443
+L 782.000000 885.345947
+L 662.000000 954.627930
+L 722.000000 989.268982
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="941.807">10.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 1145.153564
+L 752.000000 1110.512573
+L 722.000000 1093.192017
+L 602.000000 1162.474121
+L 662.000000 1197.115112
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="1149.65">6.10</text>
+</svg>
--- /dev/null
+++ b/aux/doc/metamap-H.svg
@@ -1,0 +1,819 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="1356" height="1427">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 157.884583
+L 242.000000 140.564056
+L 122.000000 209.846100
+L 122.000000 244.487091
+L 242.000000 313.769165
+L 272.000000 296.448639
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 279.128113 L 197.000000 201.185837 L 192.607696 217.578142 M 197.000000 201.185837 L 213.392305 205.578141 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="231.667">0.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 105.923065
+L 332.000000 123.243530
+L 332.000000 261.807617
+L 362.000000 279.128143
+L 482.000000 209.846100
+L 482.000000 175.205109
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 452.000000 192.525604 L 362.000000 192.525589 L 373.999998 204.525590 M 362.000000 192.525589 L 374.000001 180.525591 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="197.026">1.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 469.653717
+L 422.000000 452.333221
+L 422.000000 313.769165
+L 392.000000 296.448639
+L 272.000000 365.730652
+L 272.000000 400.371704
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 383.051178 L 392.000000 383.051208 L 380.000004 371.051204 M 392.000000 383.051208 L 379.999996 395.051204 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="387.551">0.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 209.846100
+L 572.000000 227.166626
+L 692.000000 157.884583
+L 692.000000 123.243530
+L 572.000000 53.961487
+L 542.000000 71.282043
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 88.602531 L 617.000000 166.544830 L 621.392306 150.152525 M 617.000000 166.544830 L 600.607695 162.152524 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="145.064">1.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 573.576782
+L 392.000000 538.935730
+L 272.000000 469.653717
+L 242.000000 486.974243
+L 242.000000 625.538269
+L 272.000000 642.858826
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 608.217773 L 317.000000 530.275513 L 300.607695 534.667815 M 317.000000 530.275513 L 321.392303 546.667818 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="560.756">1.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 417.692200
+L 512.000000 435.012695
+L 632.000000 365.730652
+L 632.000000 331.089661
+L 512.000000 261.807617
+L 482.000000 279.128143
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 296.448669 L 557.000000 374.390930 L 561.392303 357.998625 M 557.000000 374.390930 L 540.607695 369.998628 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="352.91">0.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 833.384399
+L 332.000000 816.063904
+L 332.000000 677.499817
+L 302.000000 660.179321
+L 182.000000 729.461304
+L 182.000000 764.102356
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 746.781860 L 302.000000 746.781860 L 290.000000 734.781860 M 302.000000 746.781860 L 290.000000 758.781860 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="751.282">0.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 452.000000 573.576782
+L 482.000000 590.897278
+L 602.000000 521.615234
+L 602.000000 486.974243
+L 482.000000 417.692200
+L 452.000000 435.012695
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 452.333191 L 527.000000 530.275513 L 531.392308 513.883209 M 527.000000 530.275513 L 510.607696 525.883204 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="508.795">1.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 261.807617
+L 632.000000 296.448639
+L 752.000000 365.730652
+L 782.000000 348.410156
+L 782.000000 209.846100
+L 752.000000 192.525574
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 227.166595 L 707.000000 305.108887 L 723.392304 300.716582 M 707.000000 305.108887 L 702.607695 288.716583 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="283.628">0.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 937.307495
+L 302.000000 902.666382
+L 182.000000 833.384399
+L 152.000000 850.704895
+L 152.000000 989.268982
+L 182.000000 1006.589478
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 971.948425 L 227.000000 894.006165 L 210.607695 898.398467 M 227.000000 894.006165 L 231.392303 910.398470 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="924.487">1.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 781.422852
+L 422.000000 798.743347
+L 542.000000 729.461304
+L 542.000000 694.820312
+L 422.000000 625.538269
+L 392.000000 642.858826
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 660.179321 L 467.000000 738.121521 L 471.392297 721.729214 M 467.000000 738.121521 L 450.607693 733.729224 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="716.641">0.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 365.730652
+L 602.000000 383.051208
+L 602.000000 521.615234
+L 632.000000 538.935730
+L 752.000000 469.653717
+L 752.000000 435.012695
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 452.333191 L 632.000000 452.333191 L 644.000000 464.333191 M 632.000000 452.333191 L 644.000000 440.333191 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="456.833">2.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 937.307495
+L 392.000000 954.627930
+L 512.000000 885.345947
+L 512.000000 850.704895
+L 392.000000 781.422852
+L 362.000000 798.743347
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 816.063843 L 437.000000 894.006165 L 441.392308 877.613861 M 437.000000 894.006165 L 420.607696 889.613856 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="872.525">1.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 625.538269
+L 542.000000 660.179321
+L 662.000000 729.461304
+L 692.000000 712.140808
+L 692.000000 573.576782
+L 662.000000 556.256287
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 590.897278 L 617.000000 668.839539 L 633.392305 664.447236 M 617.000000 668.839539 L 612.607697 652.447233 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="647.359">0.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 1145.153564
+L 332.000000 1162.474121
+L 452.000000 1093.192017
+L 452.000000 1058.551025
+L 332.000000 989.268982
+L 302.000000 1006.589478
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 1023.909973 L 377.000000 1101.852295 L 381.392308 1085.459991 M 377.000000 1101.852295 L 360.607696 1097.459987 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="1080.37">1.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 729.461304
+L 512.000000 746.781860
+L 512.000000 885.345947
+L 542.000000 902.666382
+L 662.000000 833.384399
+L 662.000000 798.743347
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 816.063843 L 542.000000 816.063843 L 554.000000 828.063843 M 542.000000 816.063843 L 554.000000 804.063843 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="820.564">2.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 1197.114990
+L 392.000000 1231.756104
+L 512.000000 1301.038086
+L 542.000000 1283.717651
+L 542.000000 1145.153564
+L 512.000000 1127.833008
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 1162.473999 L 467.000000 1240.416260 L 483.392305 1236.023957 M 467.000000 1240.416260 L 462.607697 1224.023954 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="1218.94">0.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 521.615234
+L 752.000000 538.935730
+L 752.000000 677.499817
+L 782.000000 694.820312
+L 902.000000 625.538269
+L 902.000000 590.897278
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 608.217773 L 782.000000 608.217773 L 794.000000 620.217773 M 782.000000 608.217773 L 794.000000 596.217773 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="812" y="612.718">1.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 812.000000 469.653717
+L 842.000000 486.974243
+L 962.000000 417.692200
+L 962.000000 383.051208
+L 842.000000 313.769165
+L 812.000000 331.089661
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 348.410187 L 887.000000 426.352448 L 891.392303 409.960142 M 887.000000 426.352448 L 870.607695 421.960145 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="872" y="404.872">1.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 1093.192017
+L 602.000000 1075.871460
+L 602.000000 937.307495
+L 572.000000 919.986938
+L 452.000000 989.268982
+L 452.000000 1023.909973
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 1006.589478 L 572.000000 1006.589478 L 560.000000 994.589478 M 572.000000 1006.589478 L 560.000000 1018.589478 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="1011.09">1.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 902.000000 521.615234
+L 902.000000 556.256287
+L 1022.000000 625.538269
+L 1052.000000 608.217773
+L 1052.000000 469.653717
+L 1022.000000 452.333221
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 1022.000000 486.974213 L 977.000000 564.916504 L 993.392304 560.524199 M 977.000000 564.916504 L 972.607695 548.524200 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="992" y="543.436">0.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 1041.230469
+L 692.000000 1058.551025
+L 812.000000 989.268982
+L 812.000000 954.627930
+L 692.000000 885.345947
+L 662.000000 902.666382
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 692.000000 919.986938 L 737.000000 997.929321 L 741.392314 981.537019 M 737.000000 997.929321 L 720.607697 993.537007 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="976.448">0.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 902.000000 625.538269
+L 872.000000 642.858826
+L 872.000000 781.422852
+L 902.000000 798.743347
+L 1022.000000 729.461304
+L 1022.000000 694.820312
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 992.000000 712.140808 L 902.000000 712.140869 L 914.000009 724.140861 M 902.000000 712.140869 L 913.999992 700.140861 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="932" y="716.641">0.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 781.422852
+L 872.000000 746.781860
+L 752.000000 677.499817
+L 722.000000 694.820312
+L 722.000000 833.384399
+L 752.000000 850.704895
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 816.063904 L 797.000000 738.121643 L 780.607695 742.513946 M 797.000000 738.121643 L 801.392303 754.513948 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="768.602">2.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 962.000000 833.384399
+L 932.000000 816.063904
+L 812.000000 885.345947
+L 812.000000 919.986938
+L 932.000000 989.268982
+L 962.000000 971.948486
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 932.000000 954.628052 L 887.000000 876.685730 L 882.607692 893.078034 M 887.000000 876.685730 L 903.392304 881.078038 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="902" y="907.166">0.12</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1052.000000 781.422852
+L 1022.000000 798.743347
+L 1022.000000 937.307495
+L 1052.000000 954.627930
+L 1172.000000 885.345947
+L 1172.000000 850.704895
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 1142.000000 868.025391 L 1052.000000 868.025391 L 1064.000000 880.025391 M 1052.000000 868.025391 L 1064.000000 856.025391 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1082" y="872.525">1.12</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1232.000000 573.576782
+L 1262.000000 556.256287
+L 1262.000000 417.692200
+L 1232.000000 400.371704
+L 1112.000000 469.653717
+L 1112.000000 504.294739
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 1142.000000 486.974213 L 1232.000000 486.974213 L 1220.000000 474.974213 M 1232.000000 486.974213 L 1220.000000 498.974213 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1202" y="491.474">0.11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1232.000000 677.499817
+L 1232.000000 642.858826
+L 1112.000000 573.576782
+L 1082.000000 590.897278
+L 1082.000000 729.461304
+L 1112.000000 746.781860
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 1112.000000 712.140808 L 1157.000000 634.198547 L 1140.607695 638.590850 M 1157.000000 634.198547 L 1161.392303 650.590853 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1142" y="664.679">1.11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 602.000000 383.051208
+L 512.000000 435.012695
+L 602.000000 486.974243
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 593.000000 398.639648 L 566.000000 445.405029 L 582.392305 441.012723 M 566.000000 445.405029 L 561.607694 429.012724 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="439.513">3.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 746.781860
+L 422.000000 798.743347
+L 512.000000 850.704895
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 503.000000 762.370300 L 476.000000 809.135620 L 492.392307 804.743323 M 476.000000 809.135620 L 471.607703 792.743313 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="803.243">3.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 746.781860
+L 872.000000 642.858826
+L 782.000000 694.820312
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 863.000000 731.193420 L 836.000000 684.428040 L 831.607694 700.820345 M 836.000000 684.428040 L 852.392305 688.820346 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="699.32">3.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 140.564056
+L 182.000000 105.923065
+L 62.000000 175.205109
+L 122.000000 209.846100
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 161.000000 173.473022 L 143.000000 142.296143 L 138.607703 158.688449 M 143.000000 142.296143 L 159.392307 146.688439 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="152" y="162.385">2.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 123.243530
+L 272.000000 157.884583
+L 272.000000 296.448639
+L 332.000000 261.807617
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 320.000000 209.846100 L 284.000000 209.846100 L 296.000000 221.846100 M 284.000000 209.846100 L 296.000000 197.846100 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="214.346">3.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 660.179321
+L 242.000000 625.538269
+L 242.000000 486.974243
+L 182.000000 521.615234
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 194.000000 573.576782 L 230.000000 573.576782 L 218.000000 561.576782 M 230.000000 573.576782 L 218.000000 585.576782 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="578.077">2.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 452.333221
+L 482.000000 417.692200
+L 482.000000 279.128143
+L 422.000000 313.769165
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 434.000000 365.730652 L 470.000000 365.730652 L 458.000000 353.730652 M 470.000000 365.730652 L 458.000000 377.730652 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="362.731">4.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="377.731">3.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 538.935730
+L 392.000000 469.653717
+L 272.000000 400.371704
+L 272.000000 469.653717
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 323.000000 485.242188 L 341.000000 454.065277 L 324.607695 458.457581 M 341.000000 454.065277 L 345.392304 470.457582 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="474.154">4.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 227.166626
+L 632.000000 261.807617
+L 752.000000 192.525574
+L 692.000000 157.884583
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 653.000000 194.257660 L 671.000000 225.434540 L 675.392297 209.042233 M 671.000000 225.434540 L 654.607693 221.042243 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="214.346">3.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 816.063904
+L 392.000000 781.422852
+L 392.000000 642.858826
+L 332.000000 677.499817
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 344.000000 729.461304 L 380.000000 729.461304 L 368.000000 717.461304 M 380.000000 729.461304 L 368.000000 741.461304 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="726.461">4.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="741.461">2.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 296.448639
+L 632.000000 365.730652
+L 752.000000 435.012695
+L 752.000000 365.730652
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 701.000000 350.142212 L 683.000000 381.319122 L 699.392305 376.926818 M 683.000000 381.319122 L 678.607696 364.926817 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="362.731">5.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="377.731">2.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 902.666382
+L 302.000000 833.384399
+L 182.000000 764.102356
+L 182.000000 833.384399
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 233.000000 848.972839 L 251.000000 817.795898 L 234.607697 822.188209 M 251.000000 817.795898 L 255.392311 834.188201 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="837.884">3.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 590.897278
+L 542.000000 625.538269
+L 662.000000 556.256287
+L 602.000000 521.615234
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 563.000000 557.988281 L 581.000000 589.165161 L 585.392297 572.772854 M 581.000000 589.165161 L 564.607693 584.772864 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="570.577">6.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="585.577">3.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 660.179321
+L 542.000000 729.461304
+L 662.000000 798.743347
+L 662.000000 729.461304
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 611.000000 713.872925 L 593.000000 745.049805 L 609.392307 740.657508 M 593.000000 745.049805 L 588.607703 728.657498 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="726.461">5.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="741.461">2.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 954.627930
+L 452.000000 989.268982
+L 572.000000 919.986938
+L 512.000000 885.345947
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 473.000000 921.718933 L 491.000000 952.895874 L 495.392311 936.503572 M 491.000000 952.895874 L 474.607697 948.503563 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="934.307">6.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="949.307">2.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 244.487091
+L 842.000000 313.769165
+L 962.000000 383.051208
+L 962.000000 313.769165
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 911.000000 298.180725 L 893.000000 329.357605 L 909.392307 324.965308 M 893.000000 329.357605 L 888.607703 312.965298 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="902" y="318.269">2.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 1162.474121
+L 392.000000 1197.114990
+L 512.000000 1127.833008
+L 452.000000 1093.192017
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 413.000000 1129.565186 L 431.000000 1160.741943 L 435.392269 1144.349629 M 431.000000 1160.741943 L 414.607686 1156.349674 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="1149.65">3.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 538.935730
+L 692.000000 573.576782
+L 692.000000 712.140808
+L 752.000000 677.499817
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 740.000000 625.538269 L 704.000000 625.538269 L 716.000000 637.538269 M 704.000000 625.538269 L 716.000000 613.538269 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="622.538">1.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="637.538">6.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 1231.756104
+L 392.000000 1301.038086
+L 512.000000 1370.320068
+L 512.000000 1301.038086
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 461.000000 1285.449585 L 443.000000 1316.626587 L 459.392300 1312.234262 M 443.000000 1316.626587 L 438.607675 1300.234287 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="1305.54">2.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 486.974243
+L 902.000000 521.615234
+L 1022.000000 452.333221
+L 962.000000 417.692200
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 923.000000 454.065277 L 941.000000 485.242188 L 945.392304 468.849882 M 941.000000 485.242188 L 924.607695 480.849884 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="932" y="474.154">4.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 602.000000 1075.871460
+L 662.000000 1041.230469
+L 662.000000 902.666382
+L 602.000000 937.307495
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 614.000000 989.268921 L 650.000000 989.268921 L 638.000000 977.268921 M 650.000000 989.268921 L 638.000000 1001.268921 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="993.769">4.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 902.000000 556.256287
+L 902.000000 625.538269
+L 1022.000000 694.820312
+L 1022.000000 625.538269
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 971.000000 609.949829 L 953.000000 641.126770 L 969.392303 636.734459 M 953.000000 641.126770 L 948.607689 624.734468 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="962" y="622.538">4.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="962" y="637.538">3.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 692.000000 1058.551025
+L 752.000000 1093.192017
+L 872.000000 1023.909973
+L 812.000000 989.268982
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 773.000000 1025.641968 L 791.000000 1056.818970 L 795.392325 1040.426670 M 791.000000 1056.818970 L 774.607700 1052.426645 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="1045.73">3.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 932.000000 816.063904
+L 872.000000 781.422852
+L 752.000000 850.704895
+L 812.000000 885.345947
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 851.000000 848.972839 L 833.000000 817.795898 L 828.607689 834.188201 M 833.000000 817.795898 L 849.392303 822.188209 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="830.384">5.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="845.384">2.12</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1022.000000 798.743347
+L 962.000000 833.384399
+L 962.000000 971.948486
+L 1022.000000 937.307495
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 1010.000000 885.345886 L 974.000000 885.345886 L 986.000000 897.345886 M 974.000000 885.345886 L 986.000000 873.345886 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="992" y="889.846">3.12</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1262.000000 556.256287
+L 1322.000000 521.615234
+L 1322.000000 383.051208
+L 1262.000000 417.692200
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 1274.000000 469.653717 L 1310.000000 469.653717 L 1298.000000 457.653717 M 1310.000000 469.653717 L 1298.000000 481.653717 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1292" y="474.154">2.11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1232.000000 642.858826
+L 1232.000000 573.576782
+L 1112.000000 504.294739
+L 1112.000000 573.576782
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 1163.000000 589.165161 L 1181.000000 557.988281 L 1164.607693 562.380578 M 1181.000000 557.988281 L 1185.392297 574.380588 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1172" y="578.077">3.11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 32.000000 157.884583
+L 2.000000 175.205109
+L 2.000000 209.846100
+L 122.000000 279.128143
+L 122.000000 209.846100
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="62" y="214.346">8.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 365.730652
+L 242.000000 348.410156
+L 242.000000 313.769165
+L 122.000000 244.487091
+L 122.000000 313.769165
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="318.269">4.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 313.769165
+L 242.000000 348.410156
+L 272.000000 365.730652
+L 392.000000 296.448639
+L 332.000000 261.807617
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="310.769">5.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="325.769">5.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 105.923065
+L 362.000000 71.282043
+L 332.000000 53.961487
+L 212.000000 123.243530
+L 272.000000 157.884583
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="110.423">9.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 53.961487
+L 362.000000 71.282043
+L 362.000000 105.923065
+L 482.000000 175.205109
+L 482.000000 105.923065
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="110.423">10.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 365.730652
+L 242.000000 348.410156
+L 212.000000 365.730652
+L 212.000000 504.294739
+L 272.000000 469.653717
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="422.192">6.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 677.499817
+L 152.000000 712.140808
+L 182.000000 729.461304
+L 302.000000 660.179321
+L 242.000000 625.538269
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="674.5">7.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="689.5">4.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 729.461304
+L 152.000000 712.140808
+L 122.000000 729.461304
+L 122.000000 868.025391
+L 182.000000 833.384399
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="152" y="785.923">5.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 209.846100
+L 512.000000 227.166626
+L 542.000000 209.846100
+L 542.000000 71.282043
+L 482.000000 105.923065
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="154.885">10.8</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="169.885">7.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 53.961487
+L 572.000000 19.320496
+L 542.000000 2.000000
+L 422.000000 71.282043
+L 482.000000 105.923065
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="58.4615">7.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 602.000000 2.000000
+L 572.000000 19.320496
+L 572.000000 53.961487
+L 692.000000 123.243530
+L 692.000000 53.961487
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="58.4615">6.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 92.000000 989.268982
+L 122.000000 1006.589478
+L 152.000000 989.268982
+L 152.000000 850.704895
+L 92.000000 885.345947
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="941.807">6.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 261.807617
+L 512.000000 227.166626
+L 482.000000 209.846100
+L 362.000000 279.128143
+L 422.000000 313.769165
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="251.308">7.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="266.308">8.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="281.308">6.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 209.846100
+L 512.000000 227.166626
+L 512.000000 261.807617
+L 632.000000 331.089661
+L 632.000000 261.807617
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="258.808">8.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="273.808">9.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 989.268982
+L 122.000000 1006.589478
+L 122.000000 1041.230469
+L 242.000000 1110.512451
+L 242.000000 1041.230469
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="1045.73">7.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 573.576782
+L 422.000000 590.897278
+L 452.000000 573.576782
+L 452.000000 435.012695
+L 392.000000 469.653717
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="518.615">9.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="533.615">9.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 625.538269
+L 422.000000 590.897278
+L 392.000000 573.576782
+L 272.000000 642.858826
+L 332.000000 677.499817
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="615.038">7.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="630.038">10.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="645.038">8.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 452.000000 573.576782
+L 422.000000 590.897278
+L 422.000000 625.538269
+L 542.000000 694.820312
+L 542.000000 625.538269
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="615.038">10.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="630.038">8.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="645.038">6.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 937.307495
+L 332.000000 954.627930
+L 362.000000 937.307495
+L 362.000000 798.743347
+L 302.000000 833.384399
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="882.346">9.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="897.346">9.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 1145.153564
+L 272.000000 1162.474121
+L 302.000000 1145.153564
+L 302.000000 1006.589478
+L 242.000000 1041.230469
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="1097.69">10.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 989.268982
+L 332.000000 954.627930
+L 302.000000 937.307495
+L 182.000000 1006.589478
+L 242.000000 1041.230469
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="986.269">10.9</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="1001.27">7.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 937.307495
+L 332.000000 954.627930
+L 332.000000 989.268982
+L 452.000000 1058.551025
+L 452.000000 989.268982
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="978.769">10.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="993.769">6.10</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="1008.77">7.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 209.846100
+L 812.000000 192.525574
+L 812.000000 157.884583
+L 692.000000 88.602539
+L 692.000000 157.884583
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="162.385">5.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 1145.153564
+L 272.000000 1162.474121
+L 272.000000 1197.114990
+L 392.000000 1266.397095
+L 392.000000 1197.114990
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="1201.61">9.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 209.846100
+L 812.000000 192.525574
+L 782.000000 209.846100
+L 782.000000 348.410156
+L 842.000000 313.769165
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="812" y="258.808">7.5</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="812" y="273.808">4.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 469.653717
+L 782.000000 486.974243
+L 812.000000 469.653717
+L 812.000000 331.089661
+L 752.000000 365.730652
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="407.192">11.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="422.192">10.5</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="437.192">8.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 521.615234
+L 782.000000 486.974243
+L 752.000000 469.653717
+L 632.000000 538.935730
+L 692.000000 573.576782
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="511.115">12.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="526.115">5.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="541.115">10.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 812.000000 469.653717
+L 782.000000 486.974243
+L 782.000000 521.615234
+L 902.000000 590.897278
+L 902.000000 521.615234
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="518.615">9.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="533.615">9.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 833.384399
+L 692.000000 850.704895
+L 722.000000 833.384399
+L 722.000000 694.820312
+L 662.000000 729.461304
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="770.923">11.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="785.923">4.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="800.923">12.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 1145.153564
+L 572.000000 1127.833008
+L 572.000000 1093.192017
+L 452.000000 1023.909973
+L 452.000000 1093.192017
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="1090.19">5.10</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="1105.19">10.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 1093.192017
+L 572.000000 1127.833008
+L 602.000000 1145.153564
+L 722.000000 1075.871460
+L 662.000000 1041.230469
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="1097.69">9.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 692.000000 885.345947
+L 692.000000 850.704895
+L 662.000000 833.384399
+L 542.000000 902.666382
+L 602.000000 937.307495
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="882.346">12.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="897.346">6.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 833.384399
+L 692.000000 850.704895
+L 692.000000 885.345947
+L 812.000000 954.627930
+L 812.000000 885.345947
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="874.846">11.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="889.846">5.6</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="904.846">8.12</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 602.000000 1145.153564
+L 572.000000 1127.833008
+L 542.000000 1145.153564
+L 542.000000 1283.717651
+L 602.000000 1249.076660
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="1201.62">4.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 1404.961182
+L 542.000000 1422.281616
+L 572.000000 1404.961182
+L 572.000000 1266.397095
+L 512.000000 1301.038086
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="1357.5">8.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1052.000000 469.653717
+L 1082.000000 452.333221
+L 1082.000000 417.692200
+L 962.000000 348.410156
+L 962.000000 417.692200
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1022" y="422.192">6.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1082.000000 417.692200
+L 1082.000000 452.333221
+L 1112.000000 469.653717
+L 1232.000000 400.371704
+L 1172.000000 365.730652
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1142" y="422.192">4.11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1112.000000 469.653717
+L 1082.000000 452.333221
+L 1052.000000 469.653717
+L 1052.000000 608.217773
+L 1112.000000 573.576782
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1082" y="518.615">5.5</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1082" y="533.615">5.11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1022.000000 729.461304
+L 1052.000000 746.781860
+L 1082.000000 729.461304
+L 1082.000000 590.897278
+L 1022.000000 625.538269
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1052" y="667">7.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1052" y="682">8.5</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1052" y="697">6.11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 902.000000 1041.230469
+L 932.000000 1023.909973
+L 932.000000 989.268982
+L 812.000000 919.986938
+L 812.000000 989.268982
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="872" y="986.269">8.6</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="872" y="1001.27">4.12</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 932.000000 989.268982
+L 932.000000 1023.909973
+L 962.000000 1041.230469
+L 1082.000000 971.948486
+L 1022.000000 937.307495
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="992" y="993.769">5.12</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1052.000000 781.422852
+L 1052.000000 746.781860
+L 1022.000000 729.461304
+L 902.000000 798.743347
+L 962.000000 833.384399
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="992" y="778.423">8.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="992" y="793.423">9.12</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1082.000000 729.461304
+L 1052.000000 746.781860
+L 1052.000000 781.422852
+L 1172.000000 850.704895
+L 1172.000000 781.422852
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1112" y="778.423">10.12</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1112" y="793.423">7.11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1352.000000 365.730652
+L 1352.000000 331.089661
+L 1322.000000 313.769165
+L 1202.000000 383.051208
+L 1262.000000 417.692200
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1292" y="370.231">8.11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1232.000000 677.499817
+L 1262.000000 694.820312
+L 1292.000000 677.499817
+L 1292.000000 538.935730
+L 1232.000000 573.576782
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1262" y="630.038">9.11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1172.000000 885.345947
+L 1202.000000 902.666382
+L 1232.000000 885.345947
+L 1232.000000 746.781860
+L 1172.000000 781.422852
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1202" y="837.884">7.12</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1262.000000 729.461304
+L 1262.000000 694.820312
+L 1232.000000 677.499817
+L 1112.000000 746.781860
+L 1172.000000 781.422852
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1202" y="733.961">10.11</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1202.000000 937.307495
+L 1202.000000 902.666382
+L 1172.000000 885.345947
+L 1052.000000 954.627930
+L 1112.000000 989.268982
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1142" y="941.807">6.12</text>
+</svg>
--- /dev/null
+++ b/aux/doc/metamap-P.svg
@@ -1,0 +1,708 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="1086" height="1357">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 469.653748
+L 242.000000 504.294739
+L 362.000000 573.576782
+L 392.000000 556.256287
+L 392.000000 417.692200
+L 362.000000 400.371704
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 435.012695 L 317.000000 512.955017 L 333.392304 508.562709 M 317.000000 512.955017 L 312.607692 496.562713 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="491.474">1.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 573.576782
+L 212.000000 590.897278
+L 212.000000 729.461365
+L 242.000000 746.781860
+L 362.000000 677.499817
+L 362.000000 642.858826
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 660.179321 L 242.000000 660.179321 L 254.000000 672.179321 M 242.000000 660.179321 L 254.000000 648.179321 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="664.679">0.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 365.730682
+L 452.000000 348.410187
+L 452.000000 209.846100
+L 422.000000 192.525574
+L 302.000000 261.807617
+L 302.000000 296.448669
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 279.128143 L 422.000000 279.128143 L 410.000000 267.128143 M 422.000000 279.128143 L 410.000000 291.128143 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="283.628">1.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 313.769135
+L 542.000000 331.089661
+L 662.000000 261.807617
+L 662.000000 227.166626
+L 542.000000 157.884583
+L 512.000000 175.205109
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 192.525604 L 587.000000 270.467865 L 591.392303 254.075560 M 587.000000 270.467865 L 570.607695 266.075562 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="248.987">0.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 937.307434
+L 302.000000 919.986938
+L 302.000000 781.422852
+L 272.000000 764.102356
+L 152.000000 833.384399
+L 152.000000 868.025391
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 850.704895 L 272.000000 850.704895 L 260.000000 838.704895 M 272.000000 850.704895 L 260.000000 862.704895 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="855.205">0.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 602.000000 365.730682
+L 602.000000 400.371704
+L 722.000000 469.653748
+L 752.000000 452.333252
+L 752.000000 313.769135
+L 722.000000 296.448669
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 331.089661 L 677.000000 409.031952 L 693.392304 404.639647 M 677.000000 409.031952 L 672.607695 392.639648 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="387.551">2.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 1041.230469
+L 272.000000 1006.589478
+L 152.000000 937.307434
+L 122.000000 954.627930
+L 122.000000 1093.192017
+L 152.000000 1110.512573
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 1075.871460 L 197.000000 997.929321 L 180.607692 1002.321612 M 197.000000 997.929321 L 201.392291 1014.321630 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="1028.41">1.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 885.345947
+L 392.000000 902.666443
+L 512.000000 833.384399
+L 512.000000 798.743408
+L 392.000000 729.461365
+L 362.000000 746.781860
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 764.102356 L 437.000000 842.044617 L 441.392303 825.652311 M 437.000000 842.044617 L 420.607695 837.652314 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="820.564">2.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 521.615234
+L 602.000000 504.294739
+L 602.000000 365.730682
+L 572.000000 348.410187
+L 452.000000 417.692200
+L 452.000000 452.333252
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 435.012695 L 572.000000 435.012695 L 560.000000 423.012695 M 572.000000 435.012695 L 560.000000 447.012695 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="439.513">0.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 812.000000 105.923096
+L 782.000000 88.602539
+L 662.000000 157.884583
+L 662.000000 192.525574
+L 782.000000 261.807617
+L 812.000000 244.487152
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 227.166626 L 737.000000 149.224335 L 732.607695 165.616639 M 737.000000 149.224335 L 753.392304 153.616640 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="179.705">0.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 1301.038086
+L 212.000000 1283.717529
+L 212.000000 1145.153564
+L 182.000000 1127.833008
+L 62.000000 1197.115112
+L 62.000000 1231.756104
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 92.000000 1214.435547 L 182.000000 1214.435547 L 170.000000 1202.435547 M 182.000000 1214.435547 L 170.000000 1226.435547 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="152" y="1218.94">1.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 625.538330
+L 572.000000 590.897278
+L 452.000000 521.615234
+L 422.000000 538.935791
+L 422.000000 677.499817
+L 452.000000 694.820312
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 452.000000 660.179321 L 497.000000 582.237000 L 480.607696 586.629308 M 497.000000 582.237000 L 501.392308 598.629303 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="612.718">0.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 902.000000 53.961548
+L 872.000000 71.282043
+L 872.000000 209.846100
+L 902.000000 227.166626
+L 1022.000000 157.884583
+L 1022.000000 123.243530
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 992.000000 140.564056 L 902.000000 140.564056 L 914.000000 152.564056 M 902.000000 140.564056 L 914.000000 128.564056 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="932" y="145.064">1.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 1249.076660
+L 302.000000 1266.397095
+L 422.000000 1197.115112
+L 422.000000 1162.474121
+L 302.000000 1093.192017
+L 272.000000 1110.512573
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 1127.833008 L 347.000000 1205.775391 L 351.392314 1189.383088 M 347.000000 1205.775391 L 330.607697 1201.383077 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="1184.29">0.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 989.268982
+L 482.000000 954.627930
+L 362.000000 885.345947
+L 332.000000 902.666443
+L 332.000000 1041.230469
+L 362.000000 1058.551025
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 1023.909973 L 407.000000 945.967651 L 390.607696 950.359960 M 407.000000 945.967651 L 411.392308 962.359955 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="976.448">0.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 677.499817
+L 632.000000 660.179321
+L 512.000000 729.461365
+L 512.000000 764.102356
+L 632.000000 833.384399
+L 662.000000 816.063904
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 798.743347 L 587.000000 720.801086 L 582.607697 737.193392 M 587.000000 720.801086 L 603.392305 725.193389 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="751.282">1.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 692.000000 625.538330
+L 722.000000 608.217773
+L 722.000000 469.653748
+L 692.000000 452.333252
+L 572.000000 521.615234
+L 572.000000 556.256287
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 602.000000 538.935791 L 692.000000 538.935791 L 680.000000 526.935791 M 692.000000 538.935791 L 680.000000 550.935791 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="543.436">1.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 1041.230469
+L 542.000000 1023.909973
+L 422.000000 1093.192017
+L 422.000000 1127.833008
+L 542.000000 1197.115112
+L 572.000000 1179.794556
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 1162.473999 L 497.000000 1084.531860 L 492.607709 1100.924169 M 497.000000 1084.531860 L 513.392308 1088.924151 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="1115.01">0.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 937.307434
+L 632.000000 902.666443
+L 512.000000 833.384399
+L 482.000000 850.704895
+L 482.000000 989.268982
+L 512.000000 1006.589478
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 971.948425 L 557.000000 894.006165 L 540.607695 898.398467 M 557.000000 894.006165 L 561.392303 910.398470 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="924.487">1.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 932.000000 417.692200
+L 962.000000 400.371704
+L 962.000000 261.807617
+L 932.000000 244.487152
+L 812.000000 313.769135
+L 812.000000 348.410187
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 331.089661 L 932.000000 331.089661 L 920.000000 319.089661 M 932.000000 331.089661 L 920.000000 343.089661 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="902" y="335.59">0.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 989.268982
+L 632.000000 1006.589478
+L 632.000000 1145.153564
+L 662.000000 1162.474121
+L 782.000000 1093.192017
+L 782.000000 1058.551025
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 1075.871582 L 662.000000 1075.871582 L 674.000000 1087.871582 M 662.000000 1075.871582 L 674.000000 1063.871582 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="1080.37">1.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 932.000000 521.615234
+L 932.000000 486.974243
+L 812.000000 417.692200
+L 782.000000 435.012695
+L 782.000000 573.576782
+L 812.000000 590.897278
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 812.000000 556.256287 L 857.000000 478.313965 L 840.607696 482.706273 M 857.000000 478.313965 L 861.392308 494.706269 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="508.795">1.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 781.422852
+L 872.000000 764.102356
+L 872.000000 625.538330
+L 842.000000 608.217773
+L 722.000000 677.499817
+L 722.000000 712.140869
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 694.820312 L 842.000000 694.820312 L 830.000000 682.820312 M 842.000000 694.820312 L 830.000000 706.820312 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="812" y="699.32">0.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 885.345947
+L 842.000000 850.704895
+L 722.000000 781.422852
+L 692.000000 798.743408
+L 692.000000 937.307434
+L 722.000000 954.627930
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 919.986938 L 767.000000 842.044617 L 750.607696 846.436925 M 767.000000 842.044617 L 771.392308 858.436921 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="872.525">1.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 602.000000 400.371704
+L 602.000000 504.294739
+L 692.000000 452.333252
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 611.000000 415.960144 L 638.000000 462.725525 L 642.392306 446.333220 M 638.000000 462.725525 L 621.607695 458.333219 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="456.833">3.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 902.666443
+L 482.000000 954.627930
+L 482.000000 850.704895
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 410.000000 902.666382 L 464.000000 902.666382 L 452.000000 890.666382 M 464.000000 902.666382 L 452.000000 914.666382 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="907.166">3.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 504.294739
+L 242.000000 573.576782
+L 362.000000 642.858826
+L 362.000000 573.576782
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 311.000000 557.988281 L 293.000000 589.165161 L 309.392307 584.772864 M 293.000000 589.165161 L 288.607703 572.772854 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="578.077">3.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 590.897278
+L 152.000000 625.538330
+L 152.000000 764.102356
+L 212.000000 729.461365
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 200.000000 677.499878 L 164.000000 677.499878 L 176.000000 689.499878 M 164.000000 677.499878 L 176.000000 665.499878 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="682">2.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 452.000000 348.410187
+L 512.000000 313.769135
+L 512.000000 175.205109
+L 452.000000 209.846100
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 464.000000 261.807617 L 500.000000 261.807617 L 488.000000 249.807617 M 500.000000 261.807617 L 488.000000 273.807617 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="266.308">3.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 62.000000 1127.833008
+L 122.000000 1093.192017
+L 122.000000 954.627930
+L 62.000000 989.268982
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 74.000000 1041.230469 L 110.000000 1041.230469 L 98.000000 1029.230469 M 110.000000 1041.230469 L 98.000000 1053.230469 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="1045.73">2.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 331.089661
+L 602.000000 365.730682
+L 722.000000 296.448669
+L 662.000000 261.807617
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 623.000000 298.180725 L 641.000000 329.357605 L 645.392297 312.965298 M 641.000000 329.357605 L 624.607693 324.965308 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="310.769">5.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="325.769">2.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 919.986938
+L 362.000000 885.345947
+L 362.000000 746.781860
+L 302.000000 781.422852
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 314.000000 833.384399 L 350.000000 833.384399 L 338.000000 821.384399 M 350.000000 833.384399 L 338.000000 845.384399 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="830.384">5.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="845.384">3.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 88.602539
+L 722.000000 53.961548
+L 602.000000 123.243530
+L 662.000000 157.884583
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 701.000000 121.511497 L 683.000000 90.334595 L 678.607697 106.726900 M 683.000000 90.334595 L 699.392305 94.726897 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="110.423">2.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 1006.589478
+L 272.000000 937.307434
+L 152.000000 868.025391
+L 152.000000 937.307434
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 203.000000 952.895874 L 221.000000 921.718933 L 204.607697 926.111244 M 221.000000 921.718933 L 225.392311 938.111236 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="941.807">4.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 590.897278
+L 572.000000 521.615234
+L 452.000000 452.333252
+L 452.000000 521.615234
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 503.000000 537.203735 L 521.000000 506.026794 L 504.607697 510.419105 M 521.000000 506.026794 L 525.392311 522.419097 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="518.615">4.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="533.615">3.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 71.282043
+L 812.000000 105.923096
+L 812.000000 244.487152
+L 872.000000 209.846100
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 860.000000 157.884598 L 824.000000 157.884613 L 836.000006 169.884608 M 824.000000 157.884613 L 835.999995 145.884607 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="162.385">3.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 1283.717529
+L 272.000000 1249.076660
+L 272.000000 1110.512573
+L 212.000000 1145.153564
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 224.000000 1197.114990 L 260.000000 1197.114990 L 248.000000 1185.114990 M 260.000000 1197.114990 L 248.000000 1209.114990 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="1201.61">3.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 660.179321
+L 572.000000 625.538330
+L 452.000000 694.820312
+L 512.000000 729.461365
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 551.000000 693.088257 L 533.000000 661.911316 L 528.607689 678.303618 M 533.000000 661.911316 L 549.392303 666.303627 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="682">4.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 1266.397095
+L 362.000000 1301.038086
+L 482.000000 1231.756104
+L 422.000000 1197.115112
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 383.000000 1233.488281 L 401.000000 1264.665039 L 405.392269 1248.272725 M 401.000000 1264.665039 L 384.607686 1260.272770 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="1253.58">2.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 608.217773
+L 782.000000 573.576782
+L 782.000000 435.012695
+L 722.000000 469.653748
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 734.000000 521.615234 L 770.000000 521.615234 L 758.000000 509.615234 M 770.000000 521.615234 L 758.000000 533.615234 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="518.615">6.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="533.615">2.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 1023.909973
+L 482.000000 989.268982
+L 362.000000 1058.551025
+L 422.000000 1093.192017
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 461.000000 1056.818970 L 443.000000 1025.641968 L 438.607675 1042.034267 M 443.000000 1025.641968 L 459.392300 1030.034293 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="1038.23">4.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="1053.23">2.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 902.666443
+L 632.000000 833.384399
+L 512.000000 764.102356
+L 512.000000 833.384399
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 563.000000 848.972839 L 581.000000 817.795898 L 564.607697 822.188209 M 581.000000 817.795898 L 585.392311 834.188201 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="830.384">2.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="845.384">6.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 962.000000 400.371704
+L 1022.000000 365.730682
+L 1022.000000 227.166626
+L 962.000000 261.807617
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 974.000000 313.769165 L 1010.000000 313.769165 L 998.000000 301.769165 M 1010.000000 313.769165 L 998.000000 325.769165 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="992" y="318.269">3.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 1006.589478
+L 572.000000 1041.230469
+L 572.000000 1179.794556
+L 632.000000 1145.153564
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 620.000000 1093.192017 L 584.000000 1093.192017 L 596.000000 1105.192017 M 584.000000 1093.192017 L 596.000000 1081.192017 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="1097.69">3.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 932.000000 486.974243
+L 932.000000 417.692200
+L 812.000000 348.410187
+L 812.000000 417.692200
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 863.000000 433.280670 L 881.000000 402.103729 L 864.607697 406.496040 M 881.000000 402.103729 L 885.392311 418.496032 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="872" y="422.192">4.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 764.102356
+L 932.000000 729.461365
+L 932.000000 590.897278
+L 872.000000 625.538330
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 884.000000 677.499878 L 920.000000 677.499878 L 908.000000 665.499878 M 920.000000 677.499878 L 908.000000 689.499878 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="902" y="682">2.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 850.704895
+L 842.000000 781.422852
+L 722.000000 712.140869
+L 722.000000 781.422852
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 773.000000 797.011353 L 791.000000 765.834412 L 774.607697 770.226722 M 791.000000 765.834412 L 795.392311 782.226714 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="785.923">3.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 209.846100
+L 272.000000 244.487152
+L 302.000000 261.807617
+L 422.000000 192.525574
+L 362.000000 157.884583
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="214.346">6.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 417.692200
+L 212.000000 452.333252
+L 242.000000 469.653748
+L 362.000000 400.371704
+L 302.000000 365.730682
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="422.192">10.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 261.807617
+L 272.000000 244.487152
+L 242.000000 261.807617
+L 242.000000 400.371704
+L 302.000000 365.730682
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="318.269">7.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 469.653748
+L 212.000000 452.333252
+L 182.000000 469.653748
+L 182.000000 608.217773
+L 242.000000 573.576782
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="526.115">9.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 122.000000 781.422852
+L 122.000000 816.063904
+L 152.000000 833.384399
+L 272.000000 764.102356
+L 212.000000 729.461365
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="778.423">8.6</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="793.423">5.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 833.384399
+L 122.000000 816.063904
+L 92.000000 833.384399
+L 92.000000 971.948486
+L 152.000000 937.307434
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="889.846">6.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 417.692200
+L 422.000000 400.371704
+L 422.000000 365.730682
+L 302.000000 296.448669
+L 302.000000 365.730682
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="362.731">10.5</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="377.731">7.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 365.730682
+L 422.000000 400.371704
+L 452.000000 417.692200
+L 572.000000 348.410187
+L 512.000000 313.769135
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="362.731">8.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="377.731">9.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 157.884583
+L 542.000000 123.243530
+L 512.000000 105.923096
+L 392.000000 175.205109
+L 452.000000 209.846100
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="162.385">5.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 105.923096
+L 542.000000 123.243530
+L 542.000000 157.884583
+L 662.000000 227.166626
+L 662.000000 157.884583
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="154.885">8.8</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="169.885">4.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 32.000000 1145.153564
+L 32.000000 1179.794556
+L 62.000000 1197.115112
+L 182.000000 1127.833008
+L 122.000000 1093.192017
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="1142.15">7.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="1157.15">6.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 452.000000 417.692200
+L 422.000000 400.371704
+L 392.000000 417.692200
+L 392.000000 556.256287
+L 452.000000 521.615234
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="459.154">7.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="474.154">8.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="489.154">6.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 62.000000 1197.115112
+L 32.000000 1179.794556
+L 2.000000 1197.115112
+L 2.000000 1335.679199
+L 62.000000 1301.038086
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="32" y="1253.58">7.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 677.499817
+L 392.000000 694.820312
+L 422.000000 677.499817
+L 422.000000 538.935791
+L 362.000000 573.576782
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="622.538">5.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="637.538">5.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 729.461365
+L 392.000000 694.820312
+L 362.000000 677.499817
+L 242.000000 746.781860
+L 302.000000 781.422852
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="718.961">4.6</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="733.961">11.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="748.961">8.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 677.499817
+L 392.000000 694.820312
+L 392.000000 729.461365
+L 512.000000 798.743408
+L 512.000000 729.461365
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="726.461">6.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="741.461">12.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 1041.230469
+L 302.000000 1058.551025
+L 332.000000 1041.230469
+L 332.000000 902.666443
+L 272.000000 937.307434
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="986.269">8.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="1001.27">9.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 1352.999756
+L 182.000000 1335.679199
+L 182.000000 1301.038086
+L 62.000000 1231.756104
+L 62.000000 1301.038086
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="1305.54">10.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 1301.038086
+L 182.000000 1335.679199
+L 212.000000 1352.999756
+L 332.000000 1283.717529
+L 272.000000 1249.076660
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="1305.54">9.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 1093.192017
+L 302.000000 1058.551025
+L 272.000000 1041.230469
+L 152.000000 1110.512573
+L 212.000000 1145.153564
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="1090.19">10.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="1105.19">5.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 1041.230469
+L 302.000000 1058.551025
+L 302.000000 1093.192017
+L 422.000000 1162.474121
+L 422.000000 1093.192017
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="1082.69">7.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="1097.69">8.10</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="1112.69">4.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 313.769135
+L 782.000000 296.448669
+L 782.000000 261.807617
+L 662.000000 192.525574
+L 662.000000 261.807617
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="251.308">11.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="266.308">4.8</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="281.308">8.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 261.807617
+L 782.000000 296.448669
+L 812.000000 313.769135
+L 932.000000 244.487152
+L 872.000000 209.846100
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="258.808">5.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="273.808">5.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 902.000000 53.961548
+L 902.000000 19.320557
+L 872.000000 2.000000
+L 752.000000 71.282043
+L 812.000000 105.923096
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="58.4615">9.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 932.000000 2.000000
+L 902.000000 19.320557
+L 902.000000 53.961548
+L 1022.000000 123.243530
+L 1022.000000 53.961548
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="962" y="58.4615">10.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 812.000000 313.769135
+L 782.000000 296.448669
+L 752.000000 313.769135
+L 752.000000 452.333252
+L 812.000000 417.692200
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="362.731">12.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="377.731">6.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 677.499817
+L 692.000000 660.179321
+L 692.000000 625.538330
+L 572.000000 556.256287
+L 572.000000 625.538330
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="622.538">9.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="637.538">9.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 692.000000 625.538330
+L 692.000000 660.179321
+L 722.000000 677.499817
+L 842.000000 608.217773
+L 782.000000 573.576782
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="615.038">10.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="630.038">4.9</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="645.038">7.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 677.499817
+L 692.000000 660.179321
+L 662.000000 677.499817
+L 662.000000 816.063904
+L 722.000000 781.422852
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="726.461">10.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="741.461">5.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1022.000000 157.884583
+L 1052.000000 175.205109
+L 1082.000000 157.884583
+L 1082.000000 19.320557
+L 1022.000000 53.961548
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="1052" y="110.423">7.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 937.307434
+L 662.000000 954.627930
+L 692.000000 937.307434
+L 692.000000 798.743408
+L 632.000000 833.384399
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="874.846">7.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="889.846">6.9</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="904.846">10.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 1052.000000 209.846100
+L 1052.000000 175.205109
+L 1022.000000 157.884583
+L 902.000000 227.166626
+L 962.000000 261.807617
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="992" y="206.846">8.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="992" y="221.846">6.8</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 1249.076660
+L 542.000000 1231.756104
+L 542.000000 1197.115112
+L 422.000000 1127.833008
+L 422.000000 1197.115112
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="1194.12">4.10</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="1209.12">8.7</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 1197.115112
+L 542.000000 1231.756104
+L 572.000000 1249.076660
+L 692.000000 1179.794556
+L 632.000000 1145.153564
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="1201.62">5.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 989.268982
+L 662.000000 954.627930
+L 632.000000 937.307434
+L 512.000000 1006.589478
+L 572.000000 1041.230469
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="986.269">9.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="1001.27">9.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 692.000000 937.307434
+L 662.000000 954.627930
+L 662.000000 989.268982
+L 782.000000 1058.551025
+L 782.000000 989.268982
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="986.269">7.9</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="1001.27">10.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 932.000000 521.615234
+L 962.000000 538.935791
+L 992.000000 521.615234
+L 992.000000 383.051208
+L 932.000000 417.692200
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="962" y="474.154">9.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 962.000000 573.576782
+L 962.000000 538.935791
+L 932.000000 521.615234
+L 812.000000 590.897278
+L 872.000000 625.538330
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="902" y="570.577">8.9</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="902" y="585.577">10.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 885.345947
+L 872.000000 902.666443
+L 902.000000 885.345947
+L 902.000000 746.781860
+L 842.000000 781.422852
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="872" y="837.884">9.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 782.000000 1093.192017
+L 812.000000 1110.512573
+L 842.000000 1093.192017
+L 842.000000 954.627930
+L 782.000000 989.268982
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="812" y="1045.73">7.10</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 937.307434
+L 872.000000 902.666443
+L 842.000000 885.345947
+L 722.000000 954.627930
+L 782.000000 989.268982
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="812" y="941.807">10.9</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 812.000000 1145.153564
+L 812.000000 1110.512573
+L 782.000000 1093.192017
+L 662.000000 1162.474121
+L 722.000000 1197.115112
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="1149.65">6.10</text>
+</svg>
--- /dev/null
+++ b/aux/doc/metamap-T.svg
@@ -1,0 +1,459 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="1056" height="1063">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 175.205109
+L 242.000000 209.846100
+L 362.000000 279.128143
+L 392.000000 261.807617
+L 392.000000 123.243530
+L 362.000000 105.923096
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 140.564072 L 317.000000 218.506348 L 333.392305 214.114044 M 317.000000 218.506348 L 312.607696 202.114042 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="197.026">1.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 279.128143
+L 212.000000 296.448669
+L 212.000000 435.012695
+L 242.000000 452.333252
+L 362.000000 383.051208
+L 362.000000 348.410187
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 365.730713 L 242.000000 365.730682 L 253.999996 377.730687 M 242.000000 365.730682 L 254.000004 353.730687 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="370.231">0.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 642.858826
+L 302.000000 625.538330
+L 302.000000 486.974243
+L 272.000000 469.653748
+L 152.000000 538.935791
+L 152.000000 573.576782
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 556.256287 L 272.000000 556.256287 L 260.000000 544.256287 M 272.000000 556.256287 L 260.000000 568.256287 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="560.756">0.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 746.781860
+L 272.000000 712.140869
+L 152.000000 642.858826
+L 122.000000 660.179321
+L 122.000000 798.743408
+L 152.000000 816.063904
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 781.422974 L 197.000000 703.480652 L 180.607696 707.872960 M 197.000000 703.480652 L 201.392308 719.872956 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="733.961">1.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 590.897278
+L 392.000000 608.217773
+L 512.000000 538.935791
+L 512.000000 504.294739
+L 392.000000 435.012695
+L 362.000000 452.333252
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 469.653717 L 437.000000 547.596008 L 441.392305 531.203704 M 437.000000 547.596008 L 420.607696 543.203703 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="526.115">2.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 1006.589478
+L 212.000000 989.268982
+L 212.000000 850.704895
+L 182.000000 833.384399
+L 62.000000 902.666443
+L 62.000000 937.307434
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 92.000000 919.986938 L 182.000000 919.986938 L 170.000000 907.986938 M 182.000000 919.986938 L 170.000000 931.986938 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="152" y="924.487">1.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 331.089661
+L 572.000000 296.448669
+L 452.000000 227.166626
+L 422.000000 244.487152
+L 422.000000 383.051208
+L 452.000000 400.371704
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 452.000000 365.730682 L 497.000000 287.788391 L 480.607696 292.180696 M 497.000000 287.788391 L 501.392305 304.180695 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="318.269">0.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 954.627930
+L 302.000000 971.948486
+L 422.000000 902.666443
+L 422.000000 868.025391
+L 302.000000 798.743408
+L 272.000000 816.063904
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 833.384460 L 347.000000 911.326782 L 351.392308 894.934478 M 347.000000 911.326782 L 330.607696 906.934474 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="889.846">0.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 482.000000 694.820312
+L 482.000000 660.179321
+L 362.000000 590.897278
+L 332.000000 608.217773
+L 332.000000 746.781860
+L 362.000000 764.102356
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 729.461365 L 407.000000 651.519104 L 390.607695 655.911407 M 407.000000 651.519104 L 411.392303 667.911409 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="682">0.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 383.051208
+L 632.000000 365.730682
+L 512.000000 435.012695
+L 512.000000 469.653748
+L 632.000000 538.935791
+L 662.000000 521.615234
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 504.294739 L 587.000000 426.352448 L 582.607695 442.744751 M 587.000000 426.352448 L 603.392304 430.744753 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="456.833">1.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 746.781860
+L 542.000000 729.461365
+L 422.000000 798.743408
+L 422.000000 833.384399
+L 542.000000 902.666443
+L 572.000000 885.345947
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 868.025513 L 497.000000 790.083191 L 492.607692 806.475495 M 497.000000 790.083191 L 513.392304 794.475499 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="820.564">0.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 642.858826
+L 632.000000 608.217773
+L 512.000000 538.935791
+L 482.000000 556.256287
+L 482.000000 694.820312
+L 512.000000 712.140869
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 677.499817 L 557.000000 599.557495 L 540.607696 603.949803 M 557.000000 599.557495 L 561.392308 615.949799 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="630.038">1.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 694.820312
+L 632.000000 712.140869
+L 632.000000 850.704895
+L 662.000000 868.025391
+L 782.000000 798.743408
+L 782.000000 764.102356
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 752.000000 781.422852 L 662.000000 781.422852 L 674.000000 793.422852 M 662.000000 781.422852 L 674.000000 769.422852 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="785.923">1.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 590.897278
+L 842.000000 556.256287
+L 722.000000 486.974243
+L 692.000000 504.294739
+L 692.000000 642.858826
+L 722.000000 660.179321
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 625.538269 L 767.000000 547.596008 L 750.607695 551.988311 M 767.000000 547.596008 L 771.392303 563.988314 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="578.077">0.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 932.000000 642.858826
+L 902.000000 625.538330
+L 782.000000 694.820312
+L 782.000000 729.461365
+L 902.000000 798.743408
+L 932.000000 781.422852
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 902.000000 764.102356 L 857.000000 686.160034 L 852.607692 702.552338 M 857.000000 686.160034 L 873.392304 690.552342 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="872" y="716.641">1.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 608.217773
+L 482.000000 660.179321
+L 482.000000 556.256287
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 410.000000 608.217773 L 464.000000 608.217773 L 452.000000 596.217773 M 464.000000 608.217773 L 452.000000 620.217773 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="612.718">3.0</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 209.846100
+L 242.000000 279.128143
+L 362.000000 348.410187
+L 362.000000 279.128143
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 311.000000 263.539703 L 293.000000 294.716614 L 309.392305 290.324310 M 293.000000 294.716614 L 288.607696 278.324308 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="283.628">3.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 296.448669
+L 152.000000 331.089661
+L 152.000000 469.653748
+L 212.000000 435.012695
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 200.000000 383.051178 L 164.000000 383.051178 L 176.000000 395.051178 M 164.000000 383.051178 L 176.000000 371.051178 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="387.551">2.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 62.000000 833.384399
+L 122.000000 798.743408
+L 122.000000 660.179321
+L 62.000000 694.820312
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 74.000000 746.781860 L 110.000000 746.781860 L 98.000000 734.781860 M 110.000000 746.781860 L 98.000000 758.781860 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="751.282">2.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 625.538330
+L 362.000000 590.897278
+L 362.000000 452.333252
+L 302.000000 486.974243
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 314.000000 538.935791 L 350.000000 538.935791 L 338.000000 526.935791 M 350.000000 538.935791 L 338.000000 550.935791 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="535.936">5.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="550.936">3.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 712.140869
+L 272.000000 642.858826
+L 152.000000 573.576782
+L 152.000000 642.858826
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 203.000000 658.447266 L 221.000000 627.270386 L 204.607693 631.662683 M 221.000000 627.270386 L 225.392297 643.662693 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="647.359">4.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 572.000000 296.448669
+L 572.000000 227.166626
+L 452.000000 157.884583
+L 452.000000 227.166626
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 503.000000 242.755081 L 521.000000 211.578171 L 504.607695 215.970475 M 521.000000 211.578171 L 525.392304 227.970476 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="512" y="231.667">3.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 989.268982
+L 272.000000 954.627930
+L 272.000000 816.063904
+L 212.000000 850.704895
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 224.000000 902.666382 L 260.000000 902.666382 L 248.000000 890.666382 M 260.000000 902.666382 L 248.000000 914.666382 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="907.166">3.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 365.730682
+L 572.000000 331.089661
+L 452.000000 400.371704
+L 512.000000 435.012695
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 551.000000 398.639618 L 533.000000 367.462738 L 528.607703 383.855045 M 533.000000 367.462738 L 549.392307 371.855035 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="542" y="387.551">4.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 971.948486
+L 362.000000 1006.589478
+L 482.000000 937.307434
+L 422.000000 902.666443
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 383.000000 939.039551 L 401.000000 970.216431 L 405.392297 953.824124 M 401.000000 970.216431 L 384.607693 965.824134 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="959.128">2.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 729.461365
+L 482.000000 694.820312
+L 362.000000 764.102356
+L 422.000000 798.743408
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 461.000000 762.370300 L 443.000000 731.193420 L 438.607703 747.585727 M 443.000000 731.193420 L 459.392307 735.585717 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="743.782">4.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="758.782">3.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 608.217773
+L 632.000000 538.935791
+L 512.000000 469.653748
+L 512.000000 538.935791
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 563.000000 554.524231 L 581.000000 523.347290 L 564.607697 527.739601 M 581.000000 523.347290 L 585.392311 539.739593 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="535.936">6.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="572" y="550.936">2.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 712.140869
+L 572.000000 746.781860
+L 572.000000 885.345947
+L 632.000000 850.704895
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 620.000000 798.743408 L 584.000000 798.743408 L 596.000000 810.743408 M 584.000000 798.743408 L 596.000000 786.743408 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="803.243">4.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 556.256287
+L 842.000000 486.974243
+L 722.000000 417.692200
+L 722.000000 486.974243
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 773.000000 502.562653 L 791.000000 471.385742 L 774.607695 475.778046 M 791.000000 471.385742 L 795.392304 487.778048 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="782" y="491.474">2.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 902.000000 625.538330
+L 842.000000 590.897278
+L 722.000000 660.179321
+L 782.000000 694.820312
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 821.000000 658.447266 L 803.000000 627.270386 L 798.607703 643.662693 M 803.000000 627.270386 L 819.392307 631.662683 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="812" y="647.359">3.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 842.000000 833.384399
+L 782.000000 798.743408
+L 662.000000 868.025391
+L 722.000000 902.666443
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 761.000000 866.293335 L 743.000000 835.116394 L 738.607689 851.508697 M 743.000000 835.116394 L 759.392303 839.508705 " />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="752" y="855.205">2.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 212.000000 123.243530
+L 212.000000 157.884583
+L 242.000000 175.205109
+L 362.000000 105.923096
+L 302.000000 71.282043
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="272" y="127.744">10.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 242.000000 175.205109
+L 212.000000 157.884583
+L 182.000000 175.205109
+L 182.000000 313.769135
+L 242.000000 279.128143
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="212" y="231.667">9.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 122.000000 486.974243
+L 122.000000 521.615234
+L 152.000000 538.935791
+L 272.000000 469.653748
+L 212.000000 435.012695
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="483.974">8.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="182" y="498.974">5.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 538.935791
+L 122.000000 521.615234
+L 92.000000 538.935791
+L 92.000000 677.499817
+L 152.000000 642.858826
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="595.397">6.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 123.243530
+L 422.000000 105.923096
+L 422.000000 71.282043
+L 302.000000 2.000000
+L 302.000000 71.282043
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="75.782">7.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 32.000000 850.704895
+L 32.000000 885.345947
+L 62.000000 902.666443
+L 182.000000 833.384399
+L 122.000000 798.743408
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="847.705">7.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="92" y="862.705">6.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 452.000000 123.243530
+L 422.000000 105.923096
+L 392.000000 123.243530
+L 392.000000 261.807617
+L 452.000000 227.166626
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="172.205">8.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="422" y="187.205">6.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 62.000000 902.666443
+L 32.000000 885.345947
+L 2.000000 902.666443
+L 2.000000 1041.230469
+L 62.000000 1006.589478
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="32" y="959.128">7.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 362.000000 383.051208
+L 392.000000 400.371704
+L 422.000000 383.051208
+L 422.000000 244.487152
+L 362.000000 279.128143
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="328.09">5.2</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="392" y="343.09">5.4</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 392.000000 435.012695
+L 392.000000 400.371704
+L 362.000000 383.051208
+L 242.000000 452.333252
+L 302.000000 486.974243
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="424.513">11.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="439.513">4.4</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="332" y="454.513">8.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 422.000000 383.051208
+L 392.000000 400.371704
+L 392.000000 435.012695
+L 512.000000 504.294739
+L 512.000000 435.012695
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="432.013">12.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="452" y="447.013">6.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 272.000000 746.781860
+L 302.000000 764.102356
+L 332.000000 746.781860
+L 332.000000 608.217773
+L 272.000000 642.858826
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="691.82">8.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="302" y="706.82">9.1</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 152.000000 1058.551025
+L 182.000000 1041.230469
+L 182.000000 1006.589478
+L 62.000000 937.307434
+L 62.000000 1006.589478
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="122" y="1011.09">10.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 182.000000 1006.589478
+L 182.000000 1041.230469
+L 212.000000 1058.551025
+L 332.000000 989.268982
+L 272.000000 954.627930
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="1011.09">9.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 302.000000 798.743408
+L 302.000000 764.102356
+L 272.000000 746.781860
+L 152.000000 816.063904
+L 212.000000 850.704895
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="795.743">10.1</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="242" y="810.743">5.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 332.000000 746.781860
+L 302.000000 764.102356
+L 302.000000 798.743408
+L 422.000000 868.025391
+L 422.000000 798.743408
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="788.243">7.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="803.243">8.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="362" y="818.243">4.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 383.051208
+L 692.000000 365.730682
+L 692.000000 331.089661
+L 572.000000 261.807617
+L 572.000000 331.089661
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="632" y="335.59">9.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 722.000000 383.051208
+L 692.000000 365.730682
+L 662.000000 383.051208
+L 662.000000 521.615234
+L 722.000000 486.974243
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="432.013">8.6</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="692" y="447.013">10.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 632.000000 642.858826
+L 662.000000 660.179321
+L 692.000000 642.858826
+L 692.000000 504.294739
+L 632.000000 538.935791
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="580.397">10.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="595.397">4.6</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="662" y="610.397">7.2</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 512.000000 954.627930
+L 542.000000 937.307434
+L 542.000000 902.666443
+L 422.000000 833.384399
+L 422.000000 902.666443
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="899.666">5.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="482" y="914.666">8.5</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 542.000000 902.666443
+L 542.000000 937.307434
+L 572.000000 954.627930
+L 692.000000 885.345947
+L 632.000000 850.704895
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="907.166">6.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 662.000000 694.820312
+L 662.000000 660.179321
+L 632.000000 642.858826
+L 512.000000 712.140869
+L 572.000000 746.781860
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="691.82">9.0</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="602" y="706.82">9.3</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 692.000000 642.858826
+L 662.000000 660.179321
+L 662.000000 694.820312
+L 782.000000 764.102356
+L 782.000000 694.820312
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="691.82">10.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="722" y="706.82">5.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 932.000000 642.858826
+L 962.000000 625.538330
+L 962.000000 590.897278
+L 842.000000 521.615234
+L 842.000000 590.897278
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="902" y="595.397">9.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 872.000000 850.704895
+L 902.000000 833.384399
+L 902.000000 798.743408
+L 782.000000 729.461365
+L 782.000000 798.743408
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="795.743">7.3</text>
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="842" y="810.743">6.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 902.000000 798.743408
+L 902.000000 833.384399
+L 932.000000 850.704895
+L 1052.000000 781.422852
+L 992.000000 746.781860
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="962" y="803.243">7.6</text>
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 992.000000 642.858826
+L 962.000000 625.538330
+L 932.000000 642.858826
+L 932.000000 781.422852
+L 992.000000 746.781860
+z" />
+<text style="fill: black; font-family: Sans; font-size: 15; text-anchor: middle; text-align: center; " x="962" y="699.32">10.6</text>
+</svg>
--- /dev/null
+++ b/aux/doc/single-F.svg
@@ -1,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="66" height="162">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 2.000000 140.564056
+L 32.000000 157.884567
+L 62.000000 140.564056
+L 62.000000 2.000000
+L 2.000000 36.641014
+z" />
+</svg>
--- /dev/null
+++ b/aux/doc/single-H.svg
@@ -1,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="156" height="180">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 2.000000 157.884567
+L 32.000000 175.205078
+L 152.000000 105.923050
+L 152.000000 71.282021
+L 32.000000 2.000000
+L 2.000000 19.320511
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 32.000000 36.641014 L 77.000000 114.583298 L 81.392305 98.190992 M 77.000000 114.583298 L 60.607695 110.190993 " />
+</svg>
--- /dev/null
+++ b/aux/doc/single-P.svg
@@ -1,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="66" height="180">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 2.000000 175.205093
+L 62.000000 140.564087
+L 62.000000 2.000000
+L 2.000000 36.641037
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 14.000000 88.602562 L 50.000000 88.602554 L 37.999997 76.602557 M 50.000000 88.602554 L 38.000003 100.602557 " />
+</svg>
--- /dev/null
+++ b/aux/doc/single-T.svg
@@ -1,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="96" height="110">
+<path style="fill: none; stroke: black; stroke-width: 2.000000; stroke-linejoin: round; stroke-linecap: round; " d="M 2.000000 105.923042
+L 92.000000 53.961521
+L 2.000000 2.000000
+z" />
+<path style="fill: none; stroke: black; stroke-width: 9.000000; stroke-opacity: 0.2; stroke-linejoin: round; stroke-linecap: round; " d="M 11.000000 90.334587 L 38.000000 43.569218 L 21.607695 47.961522 M 38.000000 43.569218 L 42.392305 59.961523 " />
+</svg>
--- /dev/null
+++ b/aux/hatgen-images.sh
@@ -1,0 +1,23 @@
+#!/bin/sh
+
+# Regenerate all the SVG images in the aux/doc directory for hats.html
+# and hatmap.html.
+
+set -e
+
+hatgen=$1
+
+if ! test -x "$hatgen"; then
+ echo "Provide pathname to hatgen as an argument" >&2
+ exit 1
+fi
+
+for tile in H T P F; do
+ "$hatgen" "$tile" > single-"$tile".svg
+ "$hatgen" c"$tile" > expanded-"$tile".svg
+ "$hatgen" h"$tile" > hats-single-"$tile".svg
+ "$hatgen" H"$tile" > kitemap-"$tile".svg
+ "$hatgen" C"$tile" > metamap-"$tile".svg
+done
+
+"$hatgen" --hat > hat-kites.svg
--- /dev/null
+++ b/aux/hatgen.c
@@ -1,0 +1,1713 @@
+/*
+ * Generate patches of tiling by the 'hat' aperiodic monotile
+ * discovered in 2023.
+ *
+ * This implementation of hat-tiling generation was intended to be the
+ * basis for generating hat grids for Loopy. However, it turned out
+ * that I found a better strategy, so this source file isn't used by
+ * the main puzzle system. I've kept it anyway because I ended up
+ * adapting it to generate the file hat-tables.h containing the lookup
+ * tables for the algorithm I _did_ end up using. It also generates
+ * diagrams that are useful for understanding that algorithm, and for
+ * debugging it if anything still turns out to be wrong with it.
+ *
+ * Discoverers' website: https://cs.uwaterloo.ca/~csk/hat/
+ * Preprint of paper: https://arxiv.org/abs/2303.10798
+ */
+
+#include <assert.h>
+#include <math.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "puzzles.h"
+#include "tree234.h"
+#include "hat.h"
+
+/*
+ * General strategy:
+ *
+ * We construct the hat tiling by means of a substitution system of
+ * 'metatiles' which come in four types, called H,T,P,F. A (valid)
+ * tiling of these metatiles can be expanded to a larger one by a set
+ * of recursive subdivision rules. Once we have a large enough patch
+ * of metatiles, we apply a final transformation that converts each
+ * metatile into 1, 2 or 4 instances of the aperiodically tiling
+ * 'hat'.
+ *
+ * Unlike the similar substitution system for Penrose tilings, the
+ * expansion rules are not geometrically precise: the larger versions
+ * of each metatile fit together combinatorially in the same way, but
+ * their shapes are distorted slightly. So we must construct our
+ * expanded meta-tiling by breadth-first search out from a starting
+ * metatile, because we won't quite know the coordinates of the
+ * expanded version of each metatile until we know one of the ones
+ * next to it.
+ */
+
+/*
+ * Coordinate system:
+ *
+ * Everything in this code lives on the tiling known to grid.c as
+ * 'Kites', which can be viewed as a tiling of hexagons each of which
+ * is subdivided into six kites sharing their pointy vertex, or
+ * (equivalently) a tiling of equilateral triangles each subdivided
+ * into three kits sharing their blunt vertex.
+ *
+ * We express coordinates in this system relative to the basis (1, r)
+ * where r = (1 + sqrt(3)i) / 2 is a primitive 6th root of unity. This
+ * gives us a system in which two integer coordinates can address any
+ * grid point, provided we scale up so that the side length of the
+ * equilateral triangles in the tiling is 6.
+ */
+
+typedef struct Point {
+ int x, y; /* represents x + yr */
+} Point;
+
+static inline Point left6(Point p)
+{
+ /* r satisfies the equation r^2 = r-1. Hence, multiplying by r
+ * (achieving a rotation anticlockwise by 1/6 turn) transforms
+ * x+yr into xr+yr^2 = xr+y(r-1) = (-y) + (x+y)r.
+ *
+ * It's easy to check that iterating this transformation six times
+ * gives you back the same coordinates you started with. */
+ Point q = { -p.y, p.x + p.y };
+ return q;
+}
+
+static inline Point right6(Point p)
+{
+ /* Conversely, 1/r = 1 - r, so dividing by r turns x+yr into x/r+y
+ * = x(1-r) + y = (x+y) + (-x)r. */
+ Point q = { p.x + p.y, -p.x };
+ return q;
+}
+
+typedef enum MetatileType { MT_H, MT_T, MT_P, MT_F } MetatileType;
+typedef struct Metatile Metatile;
+typedef struct MetaCoord {
+ Metatile *parent;
+ int index;
+} MetaCoord;
+
+struct Metatile {
+ /* Data fields describing the metatile and its position. */
+ MetatileType type;
+ Point start, orientation;
+
+ MetaCoord coords[4];
+ size_t ncoords;
+
+ /* Auxiliary fields used to store the progress of the expansion
+ * algorithm. */
+ bool queued;
+ Metatile *qnext;
+};
+
+#define MT_MAXVERT 6 /* largest number of vertices of any metatile */
+#define MT_MAXVDEGREE 3 /* largest degree of any vertex of a meta-tiling */
+#define MT_MAXEXPAND 13 /* largest number of metatiles in any expansion */
+#define MT_MAXHAT 4 /* largest number of hats in a metatile */
+#define HAT_NVERT 14 /* vertices of a single hat (counting the straight one) */
+#define HAT_NKITE 8 /* kites in a single hat */
+
+static int metatile_cmp(void *av, void *bv)
+{
+ Metatile *a = (Metatile *)av, *b = (Metatile *)bv;
+ if (a->type < b->type) return -1;
+ if (a->type > b->type) return +1;
+ if (a->start.x < b->start.x) return -1;
+ if (a->start.x > b->start.x) return +1;
+ if (a->start.y < b->start.y) return -1;
+ if (a->start.y > b->start.y) return +1;
+ if (a->orientation.x < b->orientation.x) return -1;
+ if (a->orientation.x > b->orientation.x) return +1;
+ if (a->orientation.y < b->orientation.y) return -1;
+ if (a->orientation.y > b->orientation.y) return +1;
+ return 0;
+}
+
+/*
+ * Return the coordinates of the vertices of a metatile, given the
+ * coordinates of the vertex we deem to be distinguished, and a vector
+ * of Euclidean length 1 showing its direction.
+ *
+ * If 'expanded' is true, we instead return the coordinates of the
+ * corresponding vertices of the expanded version of the same
+ * metatile.
+ */
+static size_t metatile_vertices(Metatile m, Point *out, bool expanded)
+{
+ static const Point vertices_H[] = {
+ {0, 0}, {4, -2}, {12, 6}, {10, 10}, {-6, 18}, {-8, 16},
+ };
+ static const Point vertices_T[] = {
+ {0, 0}, {6, 6}, {-6, 12},
+ };
+ static const Point vertices_P[] = {
+ {0, 0}, {4, 4}, {-4, 20}, {-8, 16},
+ };
+ static const Point vertices_F[] = {
+ {0, 0}, {4, -2}, {6, 0}, {-2, 16}, {-6, 12},
+ };
+
+ static const Point expanded_H[] = {
+ {0, 0}, {12, -6}, {30, 12}, {24, 24}, {-12, 42}, {-18, 36},
+ };
+ static const Point expanded_T[] = {
+ {0, 0}, {12, 12}, {-12, 24},
+ };
+ static const Point expanded_P[] = {
+ {0, 0}, {14, 8}, {-4, 44}, {-18, 36},
+ };
+ static const Point expanded_F[] = {
+ {0, 0}, {14, -4}, {18, 6}, {0, 42}, {-14, 34},
+ };
+
+ const Point *vertices;
+ size_t nvertices;
+ size_t i;
+
+ switch (m.type) {
+ case MT_H:
+ vertices = expanded ? expanded_H : vertices_H;
+ nvertices = lenof(vertices_H);
+ break;
+ case MT_T:
+ vertices = expanded ? expanded_T : vertices_T;
+ nvertices = lenof(vertices_T);
+ break;
+ case MT_P:
+ vertices = expanded ? expanded_P : vertices_P;
+ nvertices = lenof(vertices_P);
+ break;
+ default /* case MT_F */:
+ vertices = expanded ? expanded_F : vertices_F;
+ nvertices = lenof(vertices_F);
+ break;
+ }
+ assert(nvertices <= MT_MAXVERT);
+
+ Point orientation_r = left6(m.orientation);
+ for (i = 0; i < nvertices; i++) {
+ Point v = vertices[i];
+ out[i].x = m.start.x + v.x * m.orientation.x + v.y * orientation_r.x;
+ out[i].y = m.start.y + v.x * m.orientation.y + v.y * orientation_r.y;
+ }
+ return nvertices;
+}
+
+/*
+ * Return a list of metatiles that arise from expanding a given tile.
+ */
+static size_t metatile_expand(Metatile m, Metatile *out)
+{
+ static const Metatile tiles_H[] = {
+ {MT_H, {-4, 20}, {1, 0}},
+ {MT_H, {2, 2}, {1, 0}},
+ {MT_H, {8, 26}, {0, -1}},
+ {MT_T, {6, 24}, {-1, 0}},
+ {MT_P, {-8, 16}, {1, 0}},
+ {MT_P, {4, 34}, {0, -1}},
+ {MT_P, {6, 0}, {1, -1}},
+ {MT_F, {-10, 38}, {-1, 1}},
+ {MT_F, {-10, 44}, {0, -1}},
+ {MT_F, {-4, 2}, {1, 0}},
+ {MT_F, {2, 2}, {0, -1}},
+ {MT_F, {26, 14}, {1, 0}},
+ {MT_F, {32, 8}, {-1, 1}},
+ };
+ static const Metatile tiles_T[] = {
+ {MT_H, {10, 10}, {-1, 1}},
+ {MT_P, {-6, 0}, {1, 0}},
+ {MT_P, {8, 14}, {0, 1}},
+ {MT_P, {18, 6}, {-1, 1}},
+ {MT_F, {-14, 34}, {-1, 0}},
+ {MT_F, {-8, -2}, {1, -1}},
+ {MT_F, {22, 4}, {0, 1}},
+ };
+ static const Metatile tiles_P[] = {
+ {MT_H, {4, 22}, {0, 1}},
+ {MT_H, {10, 10}, {-1, 1}},
+ {MT_P, {-6, 0}, {1, 0}},
+ {MT_P, {6, 24}, {1, 0}},
+ {MT_P, {8, 14}, {0, 1}},
+ {MT_F, {-20, 40}, {1, -1}},
+ {MT_F, {-14, 34}, {-1, 0}},
+ {MT_F, {-8, -2}, {1, -1}},
+ {MT_F, {4, 46}, {-1, 1}},
+ {MT_F, {10, 10}, {1, 0}},
+ {MT_F, {16, 4}, {-1, 1}},
+ };
+ static const Metatile tiles_F[] = {
+ {MT_H, {8, 20}, {0, 1}},
+ {MT_H, {14, 8}, {-1, 1}},
+ {MT_P, {10, 22}, {1, 0}},
+ {MT_P, {12, 12}, {0, 1}},
+ {MT_F, {-16, 38}, {1, -1}},
+ {MT_F, {-10, 32}, {-1, 0}},
+ {MT_F, {-4, 2}, {1, 0}},
+ {MT_F, {2, 2}, {0, -1}},
+ {MT_F, {8, 44}, {-1, 1}},
+ {MT_F, {14, 8}, {1, 0}},
+ {MT_F, {20, 2}, {-1, 1}},
+ };
+
+ const Metatile *tiles;
+ size_t ntiles;
+ size_t i;
+
+ switch (m.type) {
+ case MT_H:
+ tiles = tiles_H;
+ ntiles = lenof(tiles_H);
+ break;
+ case MT_T:
+ tiles = tiles_T;
+ ntiles = lenof(tiles_T);
+ break;
+ case MT_P:
+ tiles = tiles_P;
+ ntiles = lenof(tiles_P);
+ break;
+ default /* case MT_F */:
+ tiles = tiles_F;
+ ntiles = lenof(tiles_F);
+ break;
+ }
+ assert(ntiles <= MT_MAXEXPAND);
+
+ Point orientation_r = left6(m.orientation);
+ for (i = 0; i < ntiles; i++) {
+ Metatile t = tiles[i];
+ out[i].type = t.type;
+ out[i].start.x = (m.start.x + t.start.x * m.orientation.x +
+ t.start.y * orientation_r.x);
+ out[i].start.y = (m.start.y + t.start.x * m.orientation.y +
+ t.start.y * orientation_r.y);
+ out[i].orientation.x = (t.orientation.x * m.orientation.x +
+ t.orientation.y * orientation_r.x);
+ out[i].orientation.y = (t.orientation.x * m.orientation.y +
+ t.orientation.y * orientation_r.y);
+ }
+ return ntiles;
+}
+
+/* Store data about each vertex during an expansion. */
+typedef struct VertexMapping {
+ Point in;
+
+ /* Metatiles sharing this vertex */
+ Metatile *tiles[MT_MAXVDEGREE];
+ size_t ntiles;
+
+ /* The expanded coordinates of this vertex, if known */
+ bool mapped;
+ Point out;
+} VertexMapping;
+
+static int vertexmapping_cmp(void *av, void *bv)
+{
+ VertexMapping *a = (VertexMapping *)av, *b = (VertexMapping *)bv;
+ if (a->in.x < b->in.x) return -1;
+ if (a->in.x > b->in.x) return +1;
+ if (a->in.y < b->in.y) return -1;
+ if (a->in.y > b->in.y) return +1;
+ return 0;
+}
+
+static int vertexmapping_find(void *av, void *bv)
+{
+ Point *a = (Point *)av;
+ VertexMapping *b = (VertexMapping *)bv;
+ if (a->x < b->in.x) return -1;
+ if (a->x > b->in.x) return +1;
+ if (a->y < b->in.y) return -1;
+ if (a->y > b->in.y) return +1;
+ return 0;
+}
+
+typedef struct MetatileSet {
+ /* The tiles in the set */
+ tree234 *tiles;
+
+ /*
+ * Bounding box of a rectangular region within the original single
+ * tile this set was expanded from. We need this in order to pick
+ * a random chunk out of the tiling to return to our client: this
+ * box is the limit of where we might select our chunk from.
+ *
+ * The box is obtained by starting from the two obtuse vertices of
+ * the starting P metatile, and then mapping those two vertices
+ * through each expansion pass. This wouldn't work for the _other_
+ * two vertices of the P metatile, which end up in the middle of
+ * another metatile after the first expansion, so that the next
+ * expansion wouldn't find that point in its VertexMapping. But
+ * luckily the two inner P vertices do continue working: they
+ * alternate in subsequent expansions between vertex 1 and vertex
+ * 4 of an F metatile. And those are the ones we need to define a
+ * reliable bounding box - phew!
+ */
+ Point vertices[2];
+ size_t nvertices;
+} MetatileSet;
+
+static MetatileSet *metatile_initial_set(MetatileType type)
+{
+ MetatileSet *s;
+ Metatile *m;
+ Point vertices[MT_MAXVERT];
+ size_t nv;
+
+ s = snew(MetatileSet);
+ s->tiles = newtree234(metatile_cmp);
+
+ m = snew(Metatile);
+ m->type = type;
+ m->start.x = 0;
+ m->start.y = 0;
+ m->orientation.x = 1;
+ m->orientation.y = 0;
+ m->ncoords = 0;
+ add234(s->tiles, m);
+
+ if (type == MT_P) {
+ nv = metatile_vertices(*m, vertices, false);
+ assert(nv == 4);
+ s->vertices[0] = vertices[1];
+ s->vertices[1] = vertices[3];
+ s->nvertices = 2;
+ } else {
+ s->nvertices = 0;
+ }
+
+ return s;
+}
+
+static void metatile_free_set(MetatileSet *s)
+{
+ Metatile *m;
+
+ while ((m = delpos234(s->tiles, 0)) != NULL)
+ sfree(m);
+ freetree234(s->tiles);
+ sfree(s);
+}
+
+typedef struct Queue {
+ Metatile *head, *tail;
+} Queue;
+
+static void map_vertex(VertexMapping *vm, Point out, Queue *queue)
+{
+ size_t i;
+
+ debug(("map_vertex %d,%d -> %d,%d", vm->in.x, vm->in.y, out.x, out.y));
+ if (vm->mapped) {
+ debug((" (already done)\n"));
+ return;
+ }
+ debug(("\n"));
+
+ vm->mapped = true;
+ vm->out = out;
+
+ for (i = 0; i < vm->ntiles; i++) {
+ Metatile *t = vm->tiles[i];
+ if (!t->queued) {
+ t->queued = true;
+ t->qnext = NULL;
+ if (queue->tail)
+ queue->tail->qnext = t;
+ else
+ queue->head = t;
+ queue->tail = t;
+ debug(("queued %c @ %d,%d d=%d,%d\n", "HTPF"[t->type], t->start.x,
+ t->start.y, t->orientation.x, t->orientation.y));
+ }
+ }
+}
+
+/*
+ * Expand a set of metatiles into its next-generation set. Returns the
+ * new set. The old set is not freed, but the auxiliary fields of its
+ * Metatile structures will be used as intermediate storage.
+ */
+static MetatileSet *metatile_set_expand(MetatileSet *si)
+{
+ tree234 *vmap;
+ VertexMapping *vm;
+ Metatile *m;
+ Queue queue = { NULL, NULL };
+ size_t i, j;
+ MetatileSet *so = snew(MetatileSet);
+
+ so->tiles = newtree234(metatile_cmp);
+
+ /*
+ * Enumerate all the vertices in our tiling, and store the set of
+ * tiles they belong to.
+ */
+ vmap = newtree234(vertexmapping_cmp);
+ for (i = 0; (m = index234(si->tiles, i)) != NULL; i++) {
+ Point vertices[MT_MAXVERT];
+ size_t nv = metatile_vertices(*m, vertices, false);
+
+ for (j = 0; j < nv; j++) {
+ VertexMapping *newvm = snew(VertexMapping);
+ newvm->in = vertices[j];
+ newvm->ntiles = 0;
+ newvm->mapped = false;
+
+ vm = add234(vmap, newvm);
+ if (vm != newvm)
+ sfree(newvm);
+
+ assert(vm->ntiles < MT_MAXVDEGREE);
+ vm->tiles[vm->ntiles++] = m;
+ }
+
+ m->queued = false;
+ }
+
+ for (i = 0; (vm = index234(vmap, i)) != NULL; i++) {
+ debug(("vertex @ %d,%d {", vm->in.x, vm->in.y));
+ for (j = 0; j < vm->ntiles; j++) {
+ m = vm->tiles[j];
+ debug(("%s%c @ %d,%d d=%d,%d", j?", ":"", "HTPF"[m->type],
+ m->start.x, m->start.y, m->orientation.x,
+ m->orientation.y));
+ }
+ debug(("}\n"));
+ }
+
+ /*
+ * Initialise an arbitrary vertex to a known location.
+ */
+ {
+ Point p = {0, 0};
+ m = index234(si->tiles, 0);
+ vm = find234(vmap, &m->start, vertexmapping_find);
+ map_vertex(vm, p, &queue);
+ }
+
+ /*
+ * Now process the queue of tiles to be expanded.
+ */
+ debug(("-- start\n"));
+ while (queue.head) {
+ Metatile *m, m_moved;
+ Metatile t[MT_MAXEXPAND];
+ Point vi[MT_MAXVERT], vo[MT_MAXVERT];
+ size_t nv, nt;
+
+ m = queue.head;
+ queue.head = queue.head->qnext;
+ if (!queue.head)
+ queue.tail = NULL;
+
+ debug(("unqueued %c @ %d,%d d=%d,%d\n", "HTPF"[m->type],
+ m->start.x, m->start.y, m->orientation.x, m->orientation.y));
+
+ nv = metatile_vertices(*m, vi, false);
+ metatile_vertices(*m, vo, true);
+
+ /* Find a vertex of this tile that's already mapped, and use
+ * it to determine the placement. */
+ int dx, dy;
+ for (i = 0; i < nv; i++) {
+ vm = find234(vmap, &vi[i], vertexmapping_find);
+ assert(vm);
+ if (vm->mapped) {
+ dx = vm->out.x - vo[i].x;
+ dy = vm->out.y - vo[i].y;
+ debug(("found mapped vertex %d,%d -> %d,%d: "
+ "offset=%d,%d\n",
+ vm->in.x, vm->in.y, vm->out.x, vm->out.y, dx, dy));
+ break;
+ }
+ }
+ assert(i < nv && "Why was this tile queued without a mapped vertex?");
+
+ /* Now map all the rest of the vertices of the tile. */
+ for (i = 0; i < nv; i++) {
+ vm = find234(vmap, &vi[i], vertexmapping_find);
+ vo[i].x += dx;
+ vo[i].y += dy;
+ map_vertex(vm, vo[i], &queue);
+ }
+
+ /* And expand it, substituting in its new starting coordinate. */
+ m_moved = *m; /* structure copy */
+ m_moved.start = vo[0];
+ nt = metatile_expand(m_moved, t);
+ for (i = 0; i < nt; i++) {
+ Metatile *newmt = snew(Metatile);
+ *newmt = t[i]; /* structure copy */
+ newmt->ncoords = 0;
+ debug(("expanded %c @ %d,%d d=%d,%d\n", "HTPF"[newmt->type],
+ newmt->start.x, newmt->start.y, newmt->orientation.x,
+ newmt->orientation.y));
+
+ Metatile *added = add234(so->tiles, newmt);
+ if (added != newmt)
+ sfree(newmt);
+ assert(added->ncoords < lenof(added->coords));
+ added->coords[added->ncoords].parent = m;
+ added->coords[added->ncoords].index = i;
+ added->ncoords++;
+ }
+ }
+
+ for (i = 0; (m = index234(si->tiles, i)) != NULL; i++) {
+ if (!m->queued)
+ debug(("OMITTED %c @ %d,%d d=%d,%d\n", "HTPF"[m->type],
+ m->start.x, m->start.y, m->orientation.x,
+ m->orientation.y));
+ }
+
+ /*
+ * Write out the remapped versions of the tile set's bounding
+ * vertices.
+ */
+ for (i = 0; i < si->nvertices; i++) {
+ vm = find234(vmap, &si->vertices[i], vertexmapping_find);
+ so->vertices[i] = vm->out;
+ }
+ so->nvertices = si->nvertices;
+
+ while ((vm = delpos234(vmap, 0)) != NULL)
+ sfree(vm);
+ freetree234(vmap);
+
+ return so;
+}
+
+typedef struct Hat {
+ Point start, orientation;
+ bool reversed;
+ const Metatile *parent;
+ int index;
+} Hat;
+
+static size_t metatile_hats(const Metatile *m, Hat *out)
+{
+ static const Hat hats_H[] = {
+ {{6, 0}, {1, 0}, false},
+ {{6, 6}, {0, -1}, false},
+ {{0, 12}, {1, 0}, false},
+ {{0, 6}, {-1, 0}, true},
+ };
+ static const Hat hats_T[] = {
+ {{-2, 10}, {-1, 1}, false},
+ };
+ static const Hat hats_P[] = {
+ {{-2, 10}, {-1, 1}, false},
+ {{-2, 16}, {0, 1}, false},
+ };
+ static const Hat hats_F[] = {
+ {{0, 6}, {-1, 1}, false},
+ {{0, 12}, {0, 1}, false},
+ };
+
+ const Hat *hats;
+ size_t nhats;
+ size_t i;
+
+ switch (m->type) {
+ case MT_H:
+ hats = hats_H;
+ nhats = lenof(hats_H);
+ break;
+ case MT_T:
+ hats = hats_T;
+ nhats = lenof(hats_T);
+ break;
+ case MT_P:
+ hats = hats_P;
+ nhats = lenof(hats_P);
+ break;
+ default /* case MT_F */:
+ hats = hats_F;
+ nhats = lenof(hats_F);
+ break;
+ }
+ assert(nhats <= MT_MAXHAT);
+
+ Point orientation_r = left6(m->orientation);
+ for (i = 0; i < nhats; i++) {
+ Hat h = hats[i];
+ out[i].parent = m;
+ out[i].index = i;
+ out[i].start.x = (m->start.x + h.start.x * m->orientation.x +
+ h.start.y * orientation_r.x);
+ out[i].start.y = (m->start.y + h.start.x * m->orientation.y +
+ h.start.y * orientation_r.y);
+ out[i].orientation.x = (h.orientation.x * m->orientation.x +
+ h.orientation.y * orientation_r.x);
+ out[i].orientation.y = (h.orientation.x * m->orientation.y +
+ h.orientation.y * orientation_r.y);
+ out[i].reversed = h.reversed;
+ }
+ return nhats;
+}
+
+static size_t hat_vertices(Hat h, Point *out)
+{
+ static const Point reference_hat[] = {
+ {0, 0}, {3, 0}, {2, 2}, {0, 3}, {-2, 4}, {-3, 3}, {-6, 6}, {-9, 6},
+ {-8, 4}, {-6, 3}, {-6, 0}, {-3, -3}, {-2, -2}, {0, -3},
+ };
+
+ size_t i;
+
+ Point orientation_r;
+ if (h.reversed)
+ orientation_r = right6(h.orientation);
+ else
+ orientation_r = left6(h.orientation);
+ assert(lenof(reference_hat) == HAT_NVERT);
+
+ for (i = 0; i < lenof(reference_hat); i++) {
+ Point v = reference_hat[h.reversed ? HAT_NVERT-1-i : i];
+ out[i].x = h.start.x + v.x * h.orientation.x + v.y * orientation_r.x;
+ out[i].y = h.start.y + v.x * h.orientation.y + v.y * orientation_r.y;
+ }
+ return lenof(reference_hat);
+}
+
+typedef struct BoundingBox {
+ Point bl, tr;
+} BoundingBox;
+
+static bool point_in_bbox(Point p, const BoundingBox *bbox)
+{
+ int xl, xr, x;
+
+ if (!bbox)
+ return true;
+
+ /*
+ * Bounding boxes have vertical edges, not aligned with our basis
+ * vector r. So the 'true' x coordinate of (x,y) is proportional
+ * to 2x+y.
+ */
+ if (p.y < bbox->bl.y || p.y > bbox->tr.y)
+ return false;
+
+ xl = 2*bbox->bl.x + bbox->bl.y;
+ xr = 2*bbox->tr.x + bbox->tr.y;
+ x = 2*p.x + p.y;
+
+ if (x < xl || x > xr)
+ return false;
+
+ return true;
+}
+
+static bool hat_in_bbox(Hat h, const BoundingBox *bbox)
+{
+ Point p[HAT_NVERT];
+ size_t i, np;
+
+ if (!bbox)
+ return true;
+
+ np = hat_vertices(h, p);
+ for (i = 0; i < np; i++)
+ if (!point_in_bbox(p[i], bbox))
+ return false;
+
+ return true;
+}
+
+static Hat *metatile_set_to_hats(MetatileSet *s, size_t *nhats,
+ const BoundingBox *bbox)
+{
+ Metatile *m;
+ size_t i, j, k, n;
+ Hat *h;
+
+ n = 0;
+ for (i = 0; (m = index234(s->tiles, i)) != NULL; i++) {
+ Hat htmp[MT_MAXHAT];
+ size_t nthis = metatile_hats(m, htmp);
+ for (k = 0; k < nthis; k++)
+ if (hat_in_bbox(htmp[k], bbox))
+ n++;
+ }
+
+ *nhats = n;
+ h = snewn(n, Hat);
+
+ j = 0;
+ for (i = 0; (m = index234(s->tiles, i)) != NULL; i++) {
+ Hat htmp[MT_MAXHAT];
+ size_t nthis = metatile_hats(m, htmp);
+ for (k = 0; k < nthis; k++) {
+ if (hat_in_bbox(htmp[k], bbox)) {
+ assert(j < n);
+ h[j++] = htmp[k]; /* structure copy */
+ }
+ }
+ }
+
+ assert(j == n);
+ return h;
+}
+
+#if 0
+void hat_tiling_randomise(struct HatPatchParams *params, random_state *rs)
+{
+ MetatileSet *s, *s2;
+ int x0, x1, y0, y1;
+
+ /*
+ * Iterate until we have a good-sized patch to select a rectangle
+ * from.
+ */
+ s = metatile_initial_set(MT_P);
+ params->iterations = 0;
+
+ while (true) {
+ x0 = 2 * s->vertices[0].x + s->vertices[0].y;
+ x1 = 2 * s->vertices[1].x + s->vertices[1].y;
+ if (x1 < x0) {
+ int t = x1;
+ x1 = x0;
+ x0 = t;
+ }
+ y0 = s->vertices[0].y;
+ y1 = s->vertices[1].y;
+ if (y1 < y0) {
+ int t = y1;
+ y1 = y0;
+ y0 = t;
+ }
+
+ if (50*params->w <= x1-x0 && 50*params->h <= y1-y0)
+ break;
+
+ params->iterations++;
+ s2 = metatile_set_expand(s);
+ metatile_free_set(s);
+ s = s2;
+ }
+
+ /*
+ * Now select that rectangle.
+ */
+ params->x = x0 + random_upto(rs, x1 - x0 - params->w + 1);
+ params->y = y0 + random_upto(rs, y1 - y0 - params->h + 1);
+}
+
+void hat_tiling_generate(struct HatPatchParams *params,
+ hat_tile_callback_fn cb, void *cbctx)
+{
+ MetatileSet *s, *s2;
+ unsigned i;
+ size_t j, nh;
+ BoundingBox bbox;
+ Hat *hats;
+
+ s = metatile_initial_set(MT_P);
+ for (i = 0; i < params->iterations; i++) {
+ s2 = metatile_set_expand(s);
+ metatile_free_set(s);
+ s = s2;
+ }
+
+ bbox.bl.x = (params->x - params->y) / 2;
+ bbox.tr.x = ((params->x + params->w) - (params->y + params->h)) / 2;
+ bbox.bl.y = params->y;
+ bbox.tr.y = params->y + params->h;
+ hats = metatile_set_to_hats(s, &nh, &bbox);
+ for (j = 0; j < nh; j++) {
+ Point vertices[HAT_NVERT];
+ size_t nv = hat_vertices(hats[j], vertices);
+ int out[2 * HAT_NVERT];
+ size_t k;
+
+ for (k = 0; k < nv; k++) {
+ out[2*k] = 2 * vertices[k].x + vertices[k].y;
+ out[2*k+1] = vertices[k].y;
+ }
+
+ cb(cbctx, nv, out);
+ }
+ sfree(hats);
+
+ metatile_free_set(s);
+}
+
+#endif
+
+#ifdef TEST_HAT
+
+/*
+ * Assortment of test modes that output Postscript diagrams.
+ */
+
+static size_t hat_kite_centres(Hat h, Point *out)
+{
+ static const Point reference_hat[] = {
+ {-7,5},{-5,4},{-5,1},{-4,-1},{-1,-1},{-2,1},{-1,2},{1,1},
+ };
+
+ size_t i;
+
+ Point orientation_r;
+ if (h.reversed)
+ orientation_r = right6(h.orientation);
+ else
+ orientation_r = left6(h.orientation);
+ assert(lenof(reference_hat) == HAT_NKITE);
+
+ for (i = 0; i < lenof(reference_hat); i++) {
+ Point v = reference_hat[i];
+ out[i].x = h.start.x + v.x * h.orientation.x + v.y * orientation_r.x;
+ out[i].y = h.start.y + v.x * h.orientation.y + v.y * orientation_r.y;
+ }
+ return lenof(reference_hat);
+}
+
+static inline int round6(int x)
+{
+ int sign = x<0 ? -1 : +1;
+ x *= sign;
+ x += 3;
+ x /= 6;
+ x *= 6;
+ x *= sign;
+ return x;
+}
+
+static inline Point kite_left(Point k)
+{
+ Point centre = { round6(k.x), round6(k.y) };
+ Point offset = { k.x - centre.x, k.y - centre.y };
+ offset = left6(offset);
+ Point r = { centre.x + offset.x, centre.y + offset.y };
+ return r;
+}
+
+static inline Point kite_right(Point k)
+{
+ Point centre = { round6(k.x), round6(k.y) };
+ Point offset = { k.x - centre.x, k.y - centre.y };
+ offset = right6(offset);
+ Point r = { centre.x + offset.x, centre.y + offset.y };
+ return r;
+}
+
+static inline Point kite_forward_left(Point k)
+{
+ Point centre = { round6(k.x), round6(k.y) };
+ Point offset = { k.x - centre.x, k.y - centre.y };
+ Point rotate = left6(offset);
+ Point r = { k.x + rotate.x + offset.x, k.y + rotate.y + offset.y };
+ return r;
+}
+
+static inline Point kite_forward_right(Point k)
+{
+ Point centre = { round6(k.x), round6(k.y) };
+ Point offset = { k.x - centre.x, k.y - centre.y };
+ Point rotate = right6(offset);
+ Point r = { k.x + rotate.x + offset.x, k.y + rotate.y + offset.y };
+ return r;
+}
+
+typedef struct pspoint {
+ float x, y;
+} pspoint;
+
+static inline pspoint pscoords(Point p)
+{
+ pspoint q = { p.x + p.y / 2.0F, p.y * sqrt(0.75) };
+ return q;
+}
+
+typedef struct psbbox {
+ bool started;
+ pspoint bl, tr;
+} psbbox;
+
+static inline void psbbox_add(psbbox *bbox, pspoint p)
+{
+ if (!bbox->started || bbox->bl.x > p.x)
+ bbox->bl.x = p.x;
+ if (!bbox->started || bbox->tr.x < p.x)
+ bbox->tr.x = p.x;
+ if (!bbox->started || bbox->bl.y > p.y)
+ bbox->bl.y = p.y;
+ if (!bbox->started || bbox->tr.y < p.y)
+ bbox->tr.y = p.y;
+ bbox->started = true;
+}
+
+static void draw_metatiles_svg(const Metatile *tiles, size_t n,
+ const Point *bounds, bool coords)
+{
+ size_t i, j;
+ psbbox bbox = { false };
+
+ for (i = 0; i < n; i++) {
+ Point vertices[MT_MAXVERT];
+ size_t nv = metatile_vertices(tiles[i], vertices, false);
+ for (j = 0; j < nv; j++)
+ psbbox_add(&bbox, pscoords(vertices[j]));
+ }
+
+ float ascale = 10, xscale = ascale, yscale = -ascale;
+ float border = 0.2 * ascale; /* leave room for strokes at the edges */
+ float ox = -xscale * bbox.bl.x + border;
+ float oy = -yscale * bbox.tr.y + border;
+
+ printf("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n");
+ printf("<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" "
+ "width=\"%g\" height=\"%g\">\n",
+ ceil(ox + xscale * bbox.tr.x + 2*border),
+ ceil(oy + yscale * bbox.bl.y + 2*border));
+
+ for (i = 0; i < n; i++) {
+ Point vertices[MT_MAXVERT];
+ size_t nv = metatile_vertices(tiles[i], vertices, false);
+ pspoint pp[MT_MAXVERT];
+
+ for (j = 0; j < nv; j++) {
+ pp[j] = pscoords(vertices[j]);
+ pp[j].x = ox + xscale * pp[j].x;
+ pp[j].y = oy + yscale * pp[j].y;
+ }
+
+ printf("<path style=\""
+ "fill: none; "
+ "stroke: black; "
+ "stroke-width: %f; "
+ "stroke-linejoin: round; "
+ "stroke-linecap: round; "
+ "\" d=\"", 0.2 * ascale);
+ for (j = 0; j < nv; j++)
+ printf("%s %f %f \n", j ? "L" : "M", pp[j].x, pp[j].y);
+ printf("z\" />\n");
+
+ if (tiles[i].type != MT_F) {
+ /*
+ * Mark arrows on three of the metatile types (H, T, P),
+ * following the diagrams in the paper. (The metatile
+ * shapes other than F each have some symmetry, but their
+ * roles in the metatile substitution system are not
+ * similarly symmetric, so for diagnostic diagrams you
+ * want to mark their orientation.)
+ */
+ pspoint lstart, lend;
+ pspoint astart, aend, aforward, aleft;
+ double d;
+
+ /*
+ * Determine endpoints of a line crossing the polygon in
+ * the appropriate direction, by case analysis on the
+ * individual tile types.
+ */
+ switch (tiles[i].type) {
+ case MT_H:
+ lstart.x = (pp[4].x + pp[5].x) / 2;
+ lstart.y = (pp[4].y + pp[5].y) / 2;
+ lend.x = (pp[1].x + pp[2].x) / 2;
+ lend.y = (pp[1].y + pp[2].y) / 2;
+ break;
+ case MT_T:
+ lstart = pp[0];
+ lend.x = (pp[1].x + pp[2].x) / 2;
+ lend.y = (pp[1].y + pp[2].y) / 2;
+ break;
+ default /* case MT_P */:
+ lstart.x = (5*pp[3].x + 3*pp[0].x) / 8;
+ lstart.y = (5*pp[3].y + 3*pp[0].y) / 8;
+ lend.x = (5*pp[1].x + 3*pp[2].x) / 8;
+ lend.y = (5*pp[1].y + 3*pp[2].y) / 8;
+ break;
+ }
+
+ /*
+ * Now shorten that line a little and give it an arrowhead.
+ */
+ astart.x = (4 * lstart.x + lend.x) / 5;
+ astart.y = (4 * lstart.y + lend.y) / 5;
+ aend.x = (lstart.x + 4 * lend.x) / 5;
+ aend.y = (lstart.y + 4 * lend.y) / 5;
+ aforward.x = aend.x - astart.x;
+ aforward.y = aend.y - astart.y;
+ d = sqrt(aforward.x*aforward.x + aforward.y*aforward.y);
+ aforward.x /= d;
+ aforward.y /= d;
+ aleft.x = -aforward.y;
+ aleft.y = +aforward.x;
+
+ printf("<path style=\""
+ "fill: none; "
+ "stroke: black; "
+ "stroke-width: %f; "
+ "stroke-opacity: 0.2; "
+ "stroke-linejoin: round; "
+ "stroke-linecap: round; "
+ "\" d=\"", 0.9 * ascale);
+
+ printf("M %f %f L %f %f ", astart.x, astart.y,
+ aend.x, aend.y);
+ printf("L %f %f ",
+ aend.x - 1.2 * ascale * (aforward.x + aleft.x),
+ aend.y - 1.2 * ascale * (aforward.y + aleft.y));
+ printf("M %f %f L %f %f ", aend.x, aend.y,
+ aend.x - 1.2 * ascale * (aforward.x - aleft.x),
+ aend.y - 1.2 * ascale * (aforward.y - aleft.y));
+ printf("\" />\n");
+ }
+
+ if (coords) {
+ /*
+ * Print each tile's coordinates.
+ */
+ pspoint centre;
+ size_t j;
+
+ switch (tiles[i].type) {
+ case MT_H:
+ centre.x = (pp[0].x + pp[2].x + pp[4].x) / 3;
+ centre.y = (pp[0].y + pp[2].y + pp[4].y) / 3;
+ break;
+ case MT_T:
+ centre.x = (pp[0].x + pp[1].x + pp[2].x) / 3;
+ centre.y = (pp[0].y + pp[1].y + pp[2].y) / 3;
+ break;
+ case MT_P:
+ centre.x = (pp[0].x + pp[2].x) / 2;
+ centre.y = (pp[0].y + pp[2].y) / 2;
+ break;
+ default /* case MT_F */:
+ centre.x = (pp[2].x + pp[4].x) / 2;
+ centre.y = (pp[2].y + pp[4].y) / 2;
+ break;
+ }
+
+ double lineheight = ascale * 1.5;
+ double charheight = lineheight * 0.6; /* close enough */
+ double allheight = lineheight * (tiles[i].ncoords-1) + charheight;
+
+ for (j = 0; j < tiles[i].ncoords; j++) {
+ const Metatile *it;
+ unsigned cindex;
+
+ printf("<text style=\""
+ "fill: black; "
+ "font-family: Sans; "
+ "font-size: %g; "
+ "text-anchor: middle; "
+ "text-align: center; "
+ "\" x=\"%g\" y=\"%g\">", lineheight,
+ centre.x,
+ centre.y - allheight/2 + charheight + lineheight*j);
+
+ it = &tiles[i];
+ cindex = j;
+ while (cindex < it->ncoords) {
+ if (it != &tiles[i])
+ printf(".");
+ printf("%d", (int)it->coords[cindex].index);
+
+ it = it->coords[cindex].parent;
+ cindex = 0; /* BODGING AHOY */
+ }
+
+ printf("</text>\n");
+ }
+ }
+
+ }
+
+ printf("</svg>\n");
+}
+
+static void draw_metatile_set_svg(
+ MetatileSet *tiles, const Point *bounds, bool coords)
+{
+ /*
+ * Slurp the tree234 of tiles into an array for display.
+ * Tedious, but this test code doesn't have to be particularly
+ * efficient.
+ */
+ size_t nt = count234(tiles->tiles);
+ Metatile *t = snewn(nt, Metatile);
+ size_t i;
+ for (i = 0; i < nt; i++) {
+ Metatile *m = index234(tiles->tiles, i);
+ t[i] = *m; /* structure copy */
+ }
+ draw_metatiles_svg(t, nt, bounds, coords);
+ sfree(t);
+}
+
+static void draw_hats_svg(const Hat *hats, size_t n,
+ const Point *bounds, bool kites, char coordtype)
+{
+ size_t i, j;
+ psbbox bbox = { false };
+
+ for (i = 0; i < n; i++) {
+ Point vertices[HAT_NVERT];
+ size_t nv = hat_vertices(hats[i], vertices);
+ for (j = 0; j < nv; j++)
+ psbbox_add(&bbox, pscoords(vertices[j]));
+ }
+
+ float ascale = (coordtype == 'k' || coordtype == 'K' ? 20 : 10);
+ float xscale = ascale, yscale = -ascale;
+ float border = 0.2 * ascale; /* leave room for strokes at the edges */
+ float ox = -xscale * bbox.bl.x + border;
+ float oy = -yscale * bbox.tr.y + border;
+
+ printf("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n");
+ printf("<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" "
+ "width=\"%g\" height=\"%g\">\n",
+ ceil(ox + xscale * bbox.tr.x + 2*border),
+ ceil(oy + yscale * bbox.bl.y + 2*border));
+
+ for (i = 0; i < n; i++) {
+ Point vertices[HAT_NVERT];
+ pspoint psvs[HAT_NVERT];
+ size_t nv = hat_vertices(hats[i], vertices);
+ int is = hats[i].reversed ? -1 : +1;
+ int io = hats[i].reversed ? 13 : 0;
+
+ printf("<path style=\""
+ "fill: %s; "
+ "stroke: black; "
+ "stroke-width: %f; "
+ "stroke-linejoin: round; "
+ "stroke-linecap: round; "
+ "\" d=\"",
+ hats[i].reversed ? "rgba(0,0,0,0.2)" : "none",
+ 0.2 * ascale);
+ for (j = 0; j < nv; j++) {
+ psvs[j] = pscoords(vertices[j]);
+ printf("%s %f %f\n", j ? "L" : "M",
+ ox + xscale * psvs[j].x, oy + yscale * psvs[j].y);
+ }
+ printf("z\" />\n");
+
+ if (kites) {
+ /*
+ * Draw internal lines within each hat dividing it into
+ * kites. This is done in a rather bodgy way, sorry.
+ */
+ const char *fmt = "<path style=\""
+ "fill: none; "
+ "stroke: rgba(0,0,0,0.2); "
+ "stroke-width: %f; "
+ "stroke-linejoin: round; "
+ "stroke-linecap: round; "
+ "\" d=\"M %f %f L %f %f\" />\n";
+ float strokewidth = 0.1 * ascale;
+
+ printf(fmt, strokewidth,
+ ox + xscale * psvs[io+is*0].x,
+ oy + yscale * psvs[io+is*0].y,
+ ox + xscale * psvs[io+is*3].x,
+ oy + yscale * psvs[io+is*3].y);
+
+ printf(fmt, strokewidth,
+ ox + xscale * psvs[io+is*0].x,
+ oy + yscale * psvs[io+is*0].y,
+ ox + xscale * psvs[io+is*5].x,
+ oy + yscale * psvs[io+is*5].y);
+
+ printf(fmt, strokewidth,
+ ox + xscale * psvs[io+is*6].x,
+ oy + yscale * psvs[io+is*6].y,
+ ox + xscale * psvs[io+is*9].x,
+ oy + yscale * psvs[io+is*9].y);
+
+ printf(fmt, strokewidth,
+ ox + xscale * psvs[io+is*0].x,
+ oy + yscale * psvs[io+is*0].y,
+ ox + xscale * psvs[io+is*10].x,
+ oy + yscale * psvs[io+is*10].y);
+
+ printf(fmt, strokewidth,
+ ox + xscale * psvs[io+is*9].x,
+ oy + yscale * psvs[io+is*9].y,
+ ox + xscale * (psvs[io+is*6].x + psvs[io+is*12].x) / 2,
+ oy + yscale * (psvs[io+is*6].y + psvs[io+is*12].y) / 2);
+
+ printf(fmt, strokewidth,
+ ox + xscale * psvs[io+is*5].x,
+ oy + yscale * psvs[io+is*5].y,
+ ox + xscale * (psvs[io+is*6].x + psvs[io+is*12].x) / 2,
+ oy + yscale * (psvs[io+is*6].y + psvs[io+is*12].y) / 2);
+
+ printf(fmt, strokewidth,
+ ox + xscale * psvs[io+is*12].x,
+ oy + yscale * psvs[io+is*12].y,
+ ox + xscale * (psvs[io+is*6].x + psvs[io+is*12].x) / 2,
+ oy + yscale * (psvs[io+is*6].y + psvs[io+is*12].y) / 2);
+ }
+
+ if (coordtype == 'h') {
+ double lineheight = ascale * 2;
+ double charheight = lineheight * 0.6; /* close enough */
+
+ printf("<text style=\""
+ "fill: black; "
+ "font-family: Sans; "
+ "font-size: %gpx; "
+ "text-anchor: middle; "
+ "text-align: center; "
+ "\" x=\"%g\" y=\"%g\">", lineheight,
+ ox + xscale * (psvs[io+is*0].x + psvs[io+is*10].x) / 2,
+ oy + yscale * (psvs[io+is*0].y + psvs[io+is*10].y) / 2
+ + charheight/2);
+ printf("%d", (int)i);
+ printf("</text>\n");
+ } else if (coordtype == 'k') {
+ Point kites[HAT_NKITE];
+ size_t nk = hat_kite_centres(hats[i], kites);
+
+ double lineheight = ascale * 0.5;
+ double charheight = lineheight * 0.6; /* close enough */
+
+ for (j = 0; j < nk; j++) {
+ pspoint p = pscoords(kites[j]);
+
+ printf("<text style=\""
+ "fill: black; "
+ "font-family: Sans; "
+ "font-size: %gpx; "
+ "text-anchor: middle; "
+ "text-align: center; "
+ "\" x=\"%g\" y=\"%g\">", lineheight,
+ ox + xscale * p.x,
+ oy + yscale * p.y + charheight/2);
+
+ printf("%d.%d.%d", (int)j, hats[i].index,
+ hats[i].parent->coords[0].index);
+
+ printf("</text>\n");
+ }
+ } else if (coordtype == 'K') {
+ Point kites[HAT_NKITE];
+ size_t nk = hat_kite_centres(hats[i], kites);
+
+ double lineheight = ascale * 1.1;
+ double charheight = lineheight * 0.6; /* close enough */
+
+ for (j = 0; j < nk; j++) {
+ pspoint p = pscoords(kites[j]);
+
+ printf("<text style=\""
+ "fill: black; "
+ "font-family: Sans; "
+ "font-size: %gpx; "
+ "text-anchor: middle; "
+ "text-align: center; "
+ "\" x=\"%g\" y=\"%g\">", lineheight,
+ ox + xscale * p.x,
+ oy + yscale * p.y + charheight/2);
+ printf("%d", (int)j);
+ printf("</text>\n");
+ }
+ }
+ }
+
+ printf("</svg>\n");
+}
+
+typedef enum KiteStep { KS_LEFT, KS_RIGHT, KS_F_LEFT, KS_F_RIGHT } KiteStep;
+
+static inline Point kite_step(Point k, KiteStep step)
+{
+ switch (step) {
+ case KS_LEFT: return kite_left(k);
+ case KS_RIGHT: return kite_right(k);
+ case KS_F_LEFT: return kite_forward_left(k);
+ default /* case KS_F_RIGHT */: return kite_forward_right(k);
+ }
+}
+
+int main(int argc, char **argv)
+{
+ if (argc <= 1) {
+ printf("usage: hat-test <mode>\n");
+ printf("modes: H,T,P,F display a single unexpanded tile\n");
+ printf(" xH,xT,xP,xF display the expansion of one tile\n");
+ printf(" cH,cT,cP,cF display expansion with tile coords\n");
+ printf(" CH,CT,CP,CF display double expansion with coords\n");
+ printf(" hH,hT,hP,hF display the hats from one tile\n");
+ printf(" HH,HT,HP,HF hats from an expansion, with coords\n");
+ printf(" m1, m2, ... nth expansion of one H metatile\n");
+ printf(" M1, M2, ... nth expansion turned into real hats\n");
+ printf(" --hat show the kites in a single hat\n");
+ printf(" --tables generate hat-tables.h for hat.c\n");
+ return 0;
+ }
+
+ if (!strcmp(argv[1], "H") || !strcmp(argv[1], "T") ||
+ !strcmp(argv[1], "P") || !strcmp(argv[1], "F")) {
+ MetatileType type = (argv[1][0] == 'H' ? MT_H :
+ argv[1][0] == 'T' ? MT_T :
+ argv[1][0] == 'P' ? MT_P : MT_F);
+ Metatile m = {type, {0, 0}, {1, 0}};
+ draw_metatiles_svg(&m, 1, NULL, false);
+ return 0;
+ }
+
+ if (!strcmp(argv[1], "xH") || !strcmp(argv[1], "xT") ||
+ !strcmp(argv[1], "xP") || !strcmp(argv[1], "xF")) {
+ MetatileType type = (argv[1][1] == 'H' ? MT_H :
+ argv[1][1] == 'T' ? MT_T :
+ argv[1][1] == 'P' ? MT_P : MT_F);
+ Metatile m = {type, {0, 0}, {1, 0}};
+ Metatile t[MT_MAXEXPAND];
+ size_t nt = metatile_expand(m, t);
+ draw_metatiles_svg(t, nt, NULL, false);
+ return 0;
+ }
+
+ if (argv[1][0] && argv[1][1] &&
+ strchr("cC", argv[1][0]) && strchr("HTPF", argv[1][1])) {
+ MetatileType type = (argv[1][1] == 'H' ? MT_H :
+ argv[1][1] == 'T' ? MT_T :
+ argv[1][1] == 'P' ? MT_P : MT_F);
+ MetatileSet *t[3];
+ int nsets = (argv[1][0] == 'c' ? 2 : 3);
+ int i;
+
+ t[0] = metatile_initial_set(type);
+ for (i = 1; i < nsets; i++)
+ t[i] = metatile_set_expand(t[i-1]);
+ draw_metatile_set_svg(t[nsets-1], NULL, true);
+ for (i = 0; i < nsets; i++)
+ metatile_free_set(t[i]);
+ return 0;
+ }
+
+ if (!strcmp(argv[1], "hH") || !strcmp(argv[1], "hT") ||
+ !strcmp(argv[1], "hP") || !strcmp(argv[1], "hF")) {
+ MetatileType type = (
+ !strcmp(argv[1], "hH") ? MT_H :
+ !strcmp(argv[1], "hT") ? MT_T :
+ !strcmp(argv[1], "hP") ? MT_P : MT_F);
+ Metatile m = {type, {0, 0}, {1, 0}};
+ Hat h[MT_MAXHAT];
+ size_t nh = metatile_hats(&m, h);
+ draw_hats_svg(h, nh, NULL, false, 'h');
+ return 0;
+ }
+
+ if (!strcmp(argv[1], "--hat")) {
+ Hat h = { { 0, 0 }, { 1, 0 }, false, NULL, 0 };
+ draw_hats_svg(&h, 1, NULL, true, 'K');
+ return 0;
+ }
+
+ if (argv[1][0] == 'H' && argv[1][1] && strchr("HTPF", argv[1][1])) {
+ MetatileType type = (argv[1][1] == 'H' ? MT_H :
+ argv[1][1] == 'T' ? MT_T :
+ argv[1][1] == 'P' ? MT_P : MT_F);
+ MetatileSet *t[2];
+ size_t i, nh;
+
+ t[0] = metatile_initial_set(type);
+ t[1] = metatile_set_expand(t[0]);
+ Hat *h = metatile_set_to_hats(t[1], &nh, NULL);
+ draw_hats_svg(h, nh, NULL, true, 'k');
+ sfree(h);
+ for (i = 0; i < 2; i++)
+ metatile_free_set(t[i]);
+ return 0;
+ }
+
+ if (argv[1][0] == 'm' || argv[1][0] == 'M') {
+ int niter = atoi(argv[1] + 1);
+ MetatileSet *tiles = metatile_initial_set(MT_P);
+
+ while (niter-- > 0) {
+ MetatileSet *t2 = metatile_set_expand(tiles);
+ metatile_free_set(tiles);
+ tiles = t2;
+ }
+
+ if (argv[1][0] == 'M') {
+ size_t nh;
+ Hat *h = metatile_set_to_hats(tiles, &nh, NULL);
+ draw_hats_svg(h, nh, tiles->vertices, false, 0);
+ sfree(h);
+ } else {
+ draw_metatile_set_svg(tiles, tiles->vertices, false);
+ }
+
+ metatile_free_set(tiles);
+
+ return 0;
+ }
+
+ if (!strcmp(argv[1], "--tables")) {
+ size_t i, j, k;
+
+ printf("/*\n"
+ " * Header file autogenerated by aux/hatgen.c\n"
+ " *\n"
+ " * To regenerate, run 'hatgen --tables > hat-tables.h'\n"
+ " */\n\n");
+
+ static const char HTPF[] = "HTPF";
+
+ printf("static const unsigned hats_in_metatile[] = {");
+ for (i = 0; i < 4; i++) {
+ Metatile m = {i, {0, 0}, {1, 0}};
+ Hat h[MT_MAXHAT];
+ size_t nh = metatile_hats(&m, h);
+ printf(" %zu,", nh);
+ }
+ printf(" };\n\n");
+
+ {
+ struct Parent {
+ MetatileType t;
+ unsigned index;
+ } parents[4][4*MT_MAXEXPAND];
+ size_t psizes[4] = {0, 0, 0, 0};
+ size_t csizes[4] = {0, 0, 0, 0};
+
+ for (i = 0; i < 4; i++) {
+ Metatile m = {i, {0, 0}, {1, 0}};
+ Metatile t[MT_MAXEXPAND];
+ size_t nt = metatile_expand(m, t);
+
+ printf("static const TileType children_%c[] = {\n"
+ " ", HTPF[i]);
+ for (j = 0; j < nt; j++) {
+ MetatileType c = t[j].type;
+ parents[c][psizes[c]].t = i;
+ parents[c][psizes[c]].index = j;
+ psizes[c]++;
+ csizes[i]++;
+ printf(" TT_%c,", HTPF[c]);
+ }
+ printf("\n};\n");
+ }
+
+ printf("static const TileType *const children[] = {\n");
+ for (i = 0; i < 4; i++)
+ printf(" children_%c,\n", HTPF[i]);
+ printf("};\n");
+ printf("static const size_t nchildren[] = {\n");
+ for (i = 0; i < 4; i++)
+ printf(" %u,\n", (unsigned)csizes[i]);
+ printf("};\n\n");
+
+ for (i = 0; i < 4; i++) {
+ printf("static const MetatilePossibleParent "
+ "permitted_parents_%c[] = {\n", HTPF[i]);
+ for (j = 0; j < psizes[i]; j++)
+ printf(" { TT_%c, %u },\n", HTPF[parents[i][j].t],
+ parents[i][j].index);
+ printf("};\n");
+ }
+
+ printf("static const MetatilePossibleParent *const "
+ "permitted_parents[] = {\n");
+ for (i = 0; i < 4; i++)
+ printf(" permitted_parents_%c,\n", HTPF[i]);
+ printf("};\n");
+
+ printf("static const size_t n_permitted_parents[] = {\n");
+ for (i = 0; i < 4; i++)
+ printf(" %u,\n", (unsigned)psizes[i]);
+ printf("};\n\n");
+ }
+
+ {
+ for (i = 0; i < 4; i++) {
+ MetatileSet *t[2];
+ size_t j, k, nh, nmeta, ti;
+ struct list {
+ Point kite;
+ unsigned ik, ih, im;
+ } list[8*MT_MAXHAT*MT_MAXEXPAND];
+ size_t len = 0;
+
+ t[0] = metatile_initial_set(i);
+ t[1] = metatile_set_expand(t[0]);
+ Hat *h = metatile_set_to_hats(t[1], &nh, NULL);
+
+ printf("static const KitemapEntry kitemap_%c[] = {\n",
+ HTPF[i]);
+
+ Point origin = h[0].start;
+ for (j = 0; j < nh; j++) {
+ Point kites[HAT_NKITE];
+ size_t nk = hat_kite_centres(h[j], kites);
+ for (k = 0; k < nk; k++) {
+ struct list *le = &list[len++];
+ le->kite.x = kites[k].x - origin.x;
+ le->kite.y = kites[k].y - origin.y;
+ le->ik = k;
+ le->ih = h[j].index;
+ le->im = h[j].parent->coords[0].index;
+#if 0
+ printf("// %d,%d = %u.%u.%u\n", le->kite.x, le->kite.y, le->ik, le->ih, le->im);
+#endif
+ }
+ }
+
+ nmeta = count234(t[1]->tiles);
+ for (ti = 0; ti < 8 * 4 * nmeta; ti++) {
+ unsigned ik = ti % 8;
+ unsigned ih = ti / 8 % 4;
+ unsigned im = ti / (8*4);
+ struct list *src = NULL, *dst = NULL;
+ int istep;
+
+ for (j = 0; j < len; j++) {
+ struct list *tmp = &list[j];
+ if (tmp->ik == ik && tmp->ih == ih && tmp->im == im) {
+ src = tmp;
+ break;
+ }
+ }
+ if (ik == 0) {
+ printf(" /* hat #%u in metatile #%u (type %c)",
+ ih, im, HTPF[((Metatile *)index234(
+ t[1]->tiles, im))->type]);
+ if (!src)
+ printf(" does not exist");
+ printf(" */\n");
+ }
+#if 0
+ if (src)
+ printf(" // src=%d,%d\n", src->kite.x, src->kite.y);
+#endif
+ printf(" ");
+
+ for (istep = 0; istep < 4; istep++) {
+ KiteStep step = istep;
+ dst = NULL;
+ if (src) {
+ Point pdst = kite_step(src->kite, step);
+#if 0
+ printf(" /* dst=%d,%d */", pdst.x, pdst.y);
+#endif
+ for (k = 0; k < len; k++) {
+ struct list *tmp = &list[k];
+ if (tmp->kite.x == pdst.x &&
+ tmp->kite.y == pdst.y) {
+ dst = tmp;
+ break;
+ }
+ }
+ }
+ if (!dst) {
+ printf(" {-1,-1,-1},");
+ } else {
+ printf(" {%u,%u,%u},", dst->ik, dst->ih, dst->im);
+ }
+ }
+ printf("\n");
+ }
+ printf("};\n");
+
+ sfree(h);
+ for (j = 0; j < 2; j++)
+ metatile_free_set(t[j]);
+ }
+
+ printf("static const KitemapEntry *const "
+ "kitemap[] = {\n");
+ for (i = 0; i < 4; i++)
+ printf(" kitemap_%c,\n", HTPF[i]);
+ printf("};\n\n");
+
+ }
+
+ {
+ for (i = 0; i < 4; i++) {
+ MetatileSet *t[3];
+ Metatile *m;
+ int map[MT_MAXEXPAND * MT_MAXEXPAND];
+ size_t maplen;
+
+ for (j = 0; j < lenof(map); j++)
+ map[j] = -1;
+
+ t[0] = metatile_initial_set(i);
+ for (j = 1; j < 3; j++)
+ t[j] = metatile_set_expand(t[j-1]);
+
+ for (j = 0; (m = index234(t[2]->tiles, j)) != NULL; j++) {
+ unsigned coords[4];
+ size_t ncoords = 0;
+ int cindex;
+
+#if 0
+ printf("// ***\n");
+#endif
+ for (cindex = 0; cindex < m->ncoords; cindex++) {
+#if 0
+ printf("// %d.%d\n", (int)m->coords[cindex].index,
+ (int)m->coords[cindex].parent->coords[0].index);
+#endif
+ coords[ncoords++] = (
+ m->coords[cindex].index + MT_MAXEXPAND *
+ m->coords[cindex].parent->coords[0].index);
+ }
+
+ unsigned prev = ncoords-1;
+ for (k = 0; k < ncoords; k++) {
+ map[coords[prev]] = coords[k];
+ prev = k;
+ }
+ }
+
+ printf("static const MetamapEntry metamap_%c[] = {\n",
+ HTPF[i]);
+ maplen = MT_MAXEXPAND * count234(t[1]->tiles);
+ for (j = 0; j < maplen; j++) {
+ printf(" /* %u, %u -> */ ",
+ (unsigned)(j % MT_MAXEXPAND),
+ (unsigned)(j / MT_MAXEXPAND));
+ if (map[j] == -1) {
+ printf("{-1,-1}, /* does not exist */\n");
+ } else {
+ printf("{%u, %u},",
+ (unsigned)(map[j] % MT_MAXEXPAND),
+ (unsigned)(map[j] / MT_MAXEXPAND));
+ if (map[j] == j)
+ printf(" /* no alternatives */");
+ printf("\n");
+ }
+ }
+ printf("};\n");
+
+ for (j = 0; j < 3; j++)
+ metatile_free_set(t[j]);
+ }
+
+ printf("static const MetamapEntry *const "
+ "metamap[] = {\n");
+ for (i = 0; i < 4; i++)
+ printf(" metamap_%c,\n", HTPF[i]);
+ printf("};\n");
+ }
+
+ return 0;
+ }
+
+ fprintf(stderr, "unknown test mode '%s'\n", argv[1]);
+ return 1;
+}
+#endif
--- a/grid.c
+++ b/grid.c
@@ -19,6 +19,7 @@
#include "tree234.h"
#include "grid.h"
#include "penrose.h"
+#include "hat.h"
/* Debugging options */
@@ -3401,6 +3402,159 @@
return grid_new_penrose(width, height, PENROSE_P3, desc);
}
+#define HATS_TILESIZE 32
+#define HATS_XSQUARELEN 4
+#define HATS_YSQUARELEN 6
+#define HATS_XUNIT 14
+#define HATS_YUNIT 8
+
+static const char *grid_validate_params_hats(
+ int width, int height)
+{
+ int l = HATS_TILESIZE;
+
+ if (width > INT_MAX / l || /* xextent */
+ height > INT_MAX / l || /* yextent */
+ width > INT_MAX / (6 * height)) /* max_dots */
+ return "Grid must not be unreasonably large";
+ return NULL;
+}
+
+static void grid_size_hats(int width, int height,
+ int *tilesize, int *xextent, int *yextent)
+{
+ *tilesize = HATS_TILESIZE;
+ *xextent = width * HATS_XUNIT * HATS_XSQUARELEN;
+ *yextent = height * HATS_YUNIT * HATS_YSQUARELEN;
+}
+
+static char *grid_new_desc_hats(
+ grid_type type, int width, int height, random_state *rs)
+{
+ char *buf, *p;
+ size_t bufmax, i;
+ struct HatPatchParams hp;
+
+ hat_tiling_randomise(&hp, width, height, rs);
+
+ bufmax = 3 * hp.ncoords + 2;
+ buf = snewn(bufmax, char);
+ p = buf;
+ for (i = 0; i < hp.ncoords; i++) {
+ assert(hp.coords[i] < 100); /* at most 2 digits */
+ assert(p - buf <= bufmax-4); /* room for 2 digits, comma and NUL */
+ p += sprintf(p, "%d,", (int)hp.coords[i]);
+ }
+ assert(p - buf <= bufmax-2); /* room for final letter and NUL */
+ p[0] = hp.final_metatile;
+ p[1] = '\0';
+
+ sfree(hp.coords);
+ return buf;
+}
+
+/* Shared code between validating and reading grid descs.
+ * Always allocates hp->coords, whether or not it returns an error. */
+static const char *grid_desc_to_hat_params(
+ const char *desc, struct HatPatchParams *hp)
+{
+ size_t maxcoords;
+ const char *p = desc;
+
+ maxcoords = (strlen(desc) + 1) / 2;
+ hp->coords = snewn(maxcoords, unsigned char);
+ hp->ncoords = 0;
+
+ while (isdigit((unsigned char)*p)) {
+ const char *p_orig = p;
+ int n = atoi(p);
+ while (*p && isdigit((unsigned char)*p)) p++;
+ if (*p != ',')
+ return "expected ',' in grid description";
+ if (p - p_orig > 2 || n > 0xFF)
+ return "too-large coordinate in grid description";
+ p++; /* eat the comma */
+
+ /* This assert should be guaranteed by the way we calculated
+ * maxcoords, so a failure of this check is a bug in this
+ * function, not an indication of an invalid input string */
+ assert(hp->ncoords < maxcoords);
+ hp->coords[hp->ncoords++] = n;
+ }
+
+ if (*p == 'H' || *p == 'T' || *p == 'P' || *p == 'F')
+ hp->final_metatile = *p;
+ else
+ return "invalid character in grid description";
+
+ return NULL;
+}
+
+static const char *grid_validate_desc_hats(
+ grid_type type, int width, int height, const char *desc)
+{
+ struct HatPatchParams hp;
+ const char *error = NULL;
+
+ error = grid_desc_to_hat_params(desc, &hp);
+ if (!error)
+ error = hat_tiling_params_invalid(&hp);
+
+ sfree(hp.coords);
+ return error;
+}
+
+struct hatcontext {
+ grid *g;
+ tree234 *points;
+};
+
+static void grid_hats_callback(void *vctx, size_t nvertices, int *coords)
+{
+ struct hatcontext *ctx = (struct hatcontext *)vctx;
+ size_t i;
+
+ grid_face_add_new(ctx->g, nvertices);
+ for (i = 0; i < nvertices; i++) {
+ grid_dot *d = grid_get_dot(
+ ctx->g, ctx->points,
+ coords[2*i] * HATS_XUNIT,
+ coords[2*i+1] * HATS_YUNIT);
+ grid_face_set_dot(ctx->g, d, i);
+ }
+}
+
+static grid *grid_new_hats(int width, int height, const char *desc)
+{
+ struct HatPatchParams hp;
+ const char *error = NULL;
+
+ error = grid_desc_to_hat_params(desc, &hp);
+ assert(error == NULL && "grid_validate_desc_hats should have failed");
+
+ /* Upper bounds - don't have to be exact */
+ int max_faces = (width * height * 6 + 7) / 8;
+ int max_dots = width * height * 6 + width * 2 + height * 2 + 1;
+
+ struct hatcontext ctx[1];
+
+ ctx->g = grid_empty();
+ ctx->g->tilesize = HATS_TILESIZE;
+ ctx->g->faces = snewn(max_faces, grid_face);
+ ctx->g->dots = snewn(max_dots, grid_dot);
+
+ ctx->points = newtree234(grid_point_cmp_fn);
+
+ hat_tiling_generate(&hp, width, height, grid_hats_callback, ctx);
+
+ freetree234(ctx->points);
+ sfree(hp.coords);
+
+ grid_trim_vigorously(ctx->g);
+ grid_make_consistent(ctx->g);
+ return ctx->g;
+}
+
/* ----------- End of grid generators ------------- */
#define FNVAL(upper,lower) &grid_validate_params_ ## lower,
@@ -3425,6 +3579,8 @@
{
if (type == GRID_PENROSE_P2 || type == GRID_PENROSE_P3) {
return grid_new_desc_penrose(type, width, height, rs);
+ } else if (type == GRID_HATS) {
+ return grid_new_desc_hats(type, width, height, rs);
} else if (type == GRID_TRIANGULAR) {
return dupstr("0"); /* up-to-date version of triangular grid */
} else {
@@ -3437,6 +3593,8 @@
{
if (type == GRID_PENROSE_P2 || type == GRID_PENROSE_P3) {
return grid_validate_desc_penrose(type, width, height, desc);
+ } else if (type == GRID_HATS) {
+ return grid_validate_desc_hats(type, width, height, desc);
} else if (type == GRID_TRIANGULAR) {
return grid_validate_desc_triangular(type, width, height, desc);
} else {
--- a/grid.h
+++ b/grid.h
@@ -109,7 +109,9 @@
A(GREATGREATDODECAGONAL,greatgreatdodecagonal) \
A(COMPASSDODECAGONAL,compassdodecagonal) \
A(PENROSE_P2,penrose_p2_kite) \
- A(PENROSE_P3,penrose_p3_thick)
+ A(PENROSE_P3,penrose_p3_thick) \
+ A(HATS,hats) \
+ /* end of list */
#define ENUM(upper,lower) GRID_ ## upper,
typedef enum grid_type { GRIDGEN_LIST(ENUM) GRID_TYPE_MAX } grid_type;
--- /dev/null
+++ b/hat-tables.h
@@ -1,0 +1,2183 @@
+/*
+ * Header file autogenerated by aux/hatgen.c
+ *
+ * To regenerate, run 'hatgen --tables > hat-tables.h'
+ */
+
+static const unsigned hats_in_metatile[] = { 4, 1, 2, 2, };
+
+static const TileType children_H[] = {
+ TT_H, TT_H, TT_H, TT_T, TT_P, TT_P, TT_P, TT_F, TT_F, TT_F, TT_F, TT_F, TT_F,
+};
+static const TileType children_T[] = {
+ TT_H, TT_P, TT_P, TT_P, TT_F, TT_F, TT_F,
+};
+static const TileType children_P[] = {
+ TT_H, TT_H, TT_P, TT_P, TT_P, TT_F, TT_F, TT_F, TT_F, TT_F, TT_F,
+};
+static const TileType children_F[] = {
+ TT_H, TT_H, TT_P, TT_P, TT_F, TT_F, TT_F, TT_F, TT_F, TT_F, TT_F,
+};
+static const TileType *const children[] = {
+ children_H,
+ children_T,
+ children_P,
+ children_F,
+};
+static const size_t nchildren[] = {
+ 13,
+ 7,
+ 11,
+ 11,
+};
+
+static const MetatilePossibleParent permitted_parents_H[] = {
+ { TT_H, 0 },
+ { TT_H, 1 },
+ { TT_H, 2 },
+ { TT_T, 0 },
+ { TT_P, 0 },
+ { TT_P, 1 },
+ { TT_F, 0 },
+ { TT_F, 1 },
+};
+static const MetatilePossibleParent permitted_parents_T[] = {
+ { TT_H, 3 },
+};
+static const MetatilePossibleParent permitted_parents_P[] = {
+ { TT_H, 4 },
+ { TT_H, 5 },
+ { TT_H, 6 },
+ { TT_T, 1 },
+ { TT_T, 2 },
+ { TT_T, 3 },
+ { TT_P, 2 },
+ { TT_P, 3 },
+ { TT_P, 4 },
+ { TT_F, 2 },
+ { TT_F, 3 },
+};
+static const MetatilePossibleParent permitted_parents_F[] = {
+ { TT_H, 7 },
+ { TT_H, 8 },
+ { TT_H, 9 },
+ { TT_H, 10 },
+ { TT_H, 11 },
+ { TT_H, 12 },
+ { TT_T, 4 },
+ { TT_T, 5 },
+ { TT_T, 6 },
+ { TT_P, 5 },
+ { TT_P, 6 },
+ { TT_P, 7 },
+ { TT_P, 8 },
+ { TT_P, 9 },
+ { TT_P, 10 },
+ { TT_F, 4 },
+ { TT_F, 5 },
+ { TT_F, 6 },
+ { TT_F, 7 },
+ { TT_F, 8 },
+ { TT_F, 9 },
+ { TT_F, 10 },
+};
+static const MetatilePossibleParent *const permitted_parents[] = {
+ permitted_parents_H,
+ permitted_parents_T,
+ permitted_parents_P,
+ permitted_parents_F,
+};
+static const size_t n_permitted_parents[] = {
+ 8,
+ 1,
+ 11,
+ 22,
+};
+
+static const KitemapEntry kitemap_H[] = {
+ /* hat #0 in metatile #0 (type H) */
+ {1,0,0}, {7,3,0}, {3,0,4}, {4,0,4},
+ {4,3,0}, {0,0,0}, {5,0,0}, {2,0,0},
+ {3,0,4}, {3,0,0}, {1,0,0}, {5,0,0},
+ {2,0,0}, {1,2,1}, {4,0,0}, {6,2,1},
+ {3,0,3}, {5,0,0}, {6,2,1}, {3,0,0},
+ {4,0,0}, {6,0,0}, {2,0,0}, {1,0,0},
+ {5,0,0}, {7,0,0}, {4,3,0}, {3,3,0},
+ {6,0,0}, {2,0,3}, {7,1,0}, {0,0,3},
+ /* hat #1 in metatile #0 (type H) */
+ {1,1,0}, {2,0,5}, {7,1,8}, {0,0,5},
+ {3,0,2}, {0,1,0}, {5,1,0}, {2,1,0},
+ {7,1,8}, {3,1,0}, {1,1,0}, {5,1,0},
+ {2,1,0}, {4,1,8}, {4,1,0}, {0,3,0},
+ {2,3,0}, {5,1,0}, {0,3,0}, {3,1,0},
+ {4,1,0}, {6,1,0}, {2,1,0}, {1,1,0},
+ {5,1,0}, {7,1,0}, {3,0,2}, {4,0,2},
+ {6,1,0}, {3,3,0}, {0,0,3}, {7,0,0},
+ /* hat #2 in metatile #0 (type H) */
+ {1,2,0}, {1,0,7}, {7,1,4}, {6,0,7},
+ {3,0,8}, {0,2,0}, {5,2,0}, {2,2,0},
+ {7,1,4}, {3,2,0}, {1,2,0}, {5,2,0},
+ {2,2,0}, {4,1,4}, {4,2,0}, {6,3,0},
+ {1,3,0}, {5,2,0}, {6,3,0}, {3,2,0},
+ {4,2,0}, {6,2,0}, {2,2,0}, {1,2,0},
+ {5,2,0}, {7,2,0}, {3,0,8}, {4,0,8},
+ {6,2,0}, {0,3,0}, {3,1,8}, {4,1,8},
+ /* hat #3 in metatile #0 (type H) */
+ {7,2,0}, {1,3,0}, {3,1,0}, {4,1,0},
+ {0,3,0}, {4,2,0}, {2,3,0}, {5,3,0},
+ {3,3,0}, {4,1,0}, {5,3,0}, {1,3,0},
+ {7,1,0}, {2,3,0}, {6,0,0}, {4,3,0},
+ {5,3,0}, {1,0,0}, {3,3,0}, {6,0,0},
+ {6,3,0}, {4,3,0}, {1,3,0}, {2,3,0},
+ {7,3,0}, {5,3,0}, {3,2,0}, {4,2,0},
+ {0,0,0}, {6,3,0}, {3,1,4}, {4,1,4},
+ /* hat #0 in metatile #1 (type H) */
+ {1,0,1}, {7,3,1}, {3,0,9}, {4,0,9},
+ {4,3,1}, {0,0,1}, {5,0,1}, {2,0,1},
+ {3,0,9}, {3,0,1}, {1,0,1}, {5,0,1},
+ {2,0,1}, {1,0,10}, {4,0,1}, {6,0,10},
+ {0,0,6}, {5,0,1}, {6,0,10}, {3,0,1},
+ {4,0,1}, {6,0,1}, {2,0,1}, {1,0,1},
+ {5,0,1}, {7,0,1}, {4,3,1}, {3,3,1},
+ {6,0,1}, {1,0,6}, {7,1,1}, {6,0,6},
+ /* hat #1 in metatile #1 (type H) */
+ {1,1,1}, {1,1,2}, {7,0,3}, {6,1,2},
+ {0,1,6}, {0,1,1}, {5,1,1}, {2,1,1},
+ {7,0,3}, {3,1,1}, {1,1,1}, {5,1,1},
+ {2,1,1}, {4,0,3}, {4,1,1}, {0,3,1},
+ {2,3,1}, {5,1,1}, {0,3,1}, {3,1,1},
+ {4,1,1}, {6,1,1}, {2,1,1}, {1,1,1},
+ {5,1,1}, {7,1,1}, {0,1,6}, {7,0,6},
+ {6,1,1}, {3,3,1}, {6,0,6}, {7,0,1},
+ /* hat #2 in metatile #1 (type H) */
+ {1,2,1}, {2,0,4}, {7,1,9}, {0,0,4},
+ {3,0,0}, {0,2,1}, {5,2,1}, {2,2,1},
+ {7,1,9}, {3,2,1}, {1,2,1}, {5,2,1},
+ {2,2,1}, {4,1,9}, {4,2,1}, {6,3,1},
+ {1,3,1}, {5,2,1}, {6,3,1}, {3,2,1},
+ {4,2,1}, {6,2,1}, {2,2,1}, {1,2,1},
+ {5,2,1}, {7,2,1}, {3,0,0}, {4,0,0},
+ {6,2,1}, {0,3,1}, {3,0,3}, {4,0,3},
+ /* hat #3 in metatile #1 (type H) */
+ {7,2,1}, {1,3,1}, {3,1,1}, {4,1,1},
+ {0,3,1}, {4,2,1}, {2,3,1}, {5,3,1},
+ {3,3,1}, {4,1,1}, {5,3,1}, {1,3,1},
+ {7,1,1}, {2,3,1}, {6,0,1}, {4,3,1},
+ {5,3,1}, {1,0,1}, {3,3,1}, {6,0,1},
+ {6,3,1}, {4,3,1}, {1,3,1}, {2,3,1},
+ {7,3,1}, {5,3,1}, {3,2,1}, {4,2,1},
+ {0,0,1}, {6,3,1}, {3,1,9}, {4,1,9},
+ /* hat #0 in metatile #2 (type H) */
+ {1,0,2}, {7,3,2}, {3,0,5}, {4,0,5},
+ {4,3,2}, {0,0,2}, {5,0,2}, {2,0,2},
+ {3,0,5}, {3,0,2}, {1,0,2}, {5,0,2},
+ {2,0,2}, {1,1,0}, {4,0,2}, {6,1,0},
+ {0,0,3}, {5,0,2}, {6,1,0}, {3,0,2},
+ {4,0,2}, {6,0,2}, {2,0,2}, {1,0,2},
+ {5,0,2}, {7,0,2}, {4,3,2}, {3,3,2},
+ {6,0,2}, {1,0,3}, {7,1,2}, {6,0,3},
+ /* hat #1 in metatile #2 (type H) */
+ {1,1,2}, {1,1,6}, {7,1,12}, {6,1,6},
+ {0,1,1}, {0,1,2}, {5,1,2}, {2,1,2},
+ {7,1,12}, {3,1,2}, {1,1,2}, {5,1,2},
+ {2,1,2}, {4,1,12}, {4,1,2}, {0,3,2},
+ {2,3,2}, {5,1,2}, {0,3,2}, {3,1,2},
+ {4,1,2}, {6,1,2}, {2,1,2}, {1,1,2},
+ {5,1,2}, {7,1,2}, {0,1,1}, {7,0,3},
+ {6,1,2}, {3,3,2}, {6,0,3}, {7,0,2},
+ /* hat #2 in metatile #2 (type H) */
+ {1,2,2}, {1,0,11}, {7,1,5}, {6,0,11},
+ {3,0,12}, {0,2,2}, {5,2,2}, {2,2,2},
+ {7,1,5}, {3,2,2}, {1,2,2}, {5,2,2},
+ {2,2,2}, {4,1,5}, {4,2,2}, {6,3,2},
+ {1,3,2}, {5,2,2}, {6,3,2}, {3,2,2},
+ {4,2,2}, {6,2,2}, {2,2,2}, {1,2,2},
+ {5,2,2}, {7,2,2}, {3,0,12}, {4,0,12},
+ {6,2,2}, {0,3,2}, {3,1,12}, {4,1,12},
+ /* hat #3 in metatile #2 (type H) */
+ {7,2,2}, {1,3,2}, {3,1,2}, {4,1,2},
+ {0,3,2}, {4,2,2}, {2,3,2}, {5,3,2},
+ {3,3,2}, {4,1,2}, {5,3,2}, {1,3,2},
+ {7,1,2}, {2,3,2}, {6,0,2}, {4,3,2},
+ {5,3,2}, {1,0,2}, {3,3,2}, {6,0,2},
+ {6,3,2}, {4,3,2}, {1,3,2}, {2,3,2},
+ {7,3,2}, {5,3,2}, {3,2,2}, {4,2,2},
+ {0,0,2}, {6,3,2}, {3,1,5}, {4,1,5},
+ /* hat #0 in metatile #3 (type T) */
+ {1,0,3}, {4,0,2}, {7,0,0}, {7,1,0},
+ {7,0,2}, {0,0,3}, {5,0,3}, {2,0,3},
+ {7,0,0}, {3,0,3}, {1,0,3}, {5,0,3},
+ {2,0,3}, {4,0,0}, {4,0,3}, {7,2,1},
+ {3,1,1}, {5,0,3}, {7,2,1}, {3,0,3},
+ {4,0,3}, {6,0,3}, {2,0,3}, {1,0,3},
+ {5,0,3}, {7,0,3}, {7,0,2}, {7,1,2},
+ {6,0,3}, {2,1,1}, {6,1,2}, {0,1,1},
+ /* hat #1 in metatile #3 (type T) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #2 in metatile #3 (type T) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #3 (type T) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #4 (type P) */
+ {1,0,4}, {-1,-1,-1}, {0,2,1}, {7,1,9},
+ {-1,-1,-1}, {0,0,4}, {5,0,4}, {2,0,4},
+ {0,2,1}, {3,0,4}, {1,0,4}, {5,0,4},
+ {2,0,4}, {2,0,0}, {4,0,4}, {0,0,0},
+ {3,1,4}, {5,0,4}, {0,0,0}, {3,0,4},
+ {4,0,4}, {6,0,4}, {2,0,4}, {1,0,4},
+ {5,0,4}, {7,0,4}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,4}, {2,1,4}, {-1,-1,-1}, {0,1,4},
+ /* hat #1 in metatile #4 (type P) */
+ {1,1,4}, {-1,-1,-1}, {7,0,4}, {-1,-1,-1},
+ {0,1,7}, {0,1,4}, {5,1,4}, {2,1,4},
+ {7,0,4}, {3,1,4}, {1,1,4}, {5,1,4},
+ {2,1,4}, {4,0,4}, {4,1,4}, {7,3,0},
+ {3,2,0}, {5,1,4}, {7,3,0}, {3,1,4},
+ {4,1,4}, {6,1,4}, {2,1,4}, {1,1,4},
+ {5,1,4}, {7,1,4}, {0,1,7}, {7,0,7},
+ {6,1,4}, {2,2,0}, {6,0,7}, {0,2,0},
+ /* hat #2 in metatile #4 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #4 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #5 (type P) */
+ {1,0,5}, {-1,-1,-1}, {0,1,0}, {7,1,8},
+ {-1,-1,-1}, {0,0,5}, {5,0,5}, {2,0,5},
+ {0,1,0}, {3,0,5}, {1,0,5}, {5,0,5},
+ {2,0,5}, {2,0,2}, {4,0,5}, {0,0,2},
+ {3,1,5}, {5,0,5}, {0,0,2}, {3,0,5},
+ {4,0,5}, {6,0,5}, {2,0,5}, {1,0,5},
+ {5,0,5}, {7,0,5}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,5}, {2,1,5}, {-1,-1,-1}, {0,1,5},
+ /* hat #1 in metatile #5 (type P) */
+ {1,1,5}, {-1,-1,-1}, {7,0,5}, {-1,-1,-1},
+ {0,1,11}, {0,1,5}, {5,1,5}, {2,1,5},
+ {7,0,5}, {3,1,5}, {1,1,5}, {5,1,5},
+ {2,1,5}, {4,0,5}, {4,1,5}, {7,3,2},
+ {3,2,2}, {5,1,5}, {7,3,2}, {3,1,5},
+ {4,1,5}, {6,1,5}, {2,1,5}, {1,1,5},
+ {5,1,5}, {7,1,5}, {0,1,11}, {7,0,11},
+ {6,1,5}, {2,2,2}, {6,0,11}, {0,2,2},
+ /* hat #2 in metatile #5 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #5 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #6 (type P) */
+ {1,0,6}, {4,0,1}, {0,1,10}, {7,0,10},
+ {7,0,1}, {0,0,6}, {5,0,6}, {2,0,6},
+ {0,1,10}, {3,0,6}, {1,0,6}, {5,0,6},
+ {2,0,6}, {-1,-1,-1}, {4,0,6}, {-1,-1,-1},
+ {3,1,6}, {5,0,6}, {-1,-1,-1}, {3,0,6},
+ {4,0,6}, {6,0,6}, {2,0,6}, {1,0,6},
+ {5,0,6}, {7,0,6}, {7,0,1}, {7,1,1},
+ {6,0,6}, {2,1,6}, {6,1,1}, {0,1,6},
+ /* hat #1 in metatile #6 (type P) */
+ {1,1,6}, {1,1,1}, {7,0,6}, {6,1,1},
+ {0,1,2}, {0,1,6}, {5,1,6}, {2,1,6},
+ {7,0,6}, {3,1,6}, {1,1,6}, {5,1,6},
+ {2,1,6}, {4,0,6}, {4,1,6}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,6}, {-1,-1,-1}, {3,1,6},
+ {4,1,6}, {6,1,6}, {2,1,6}, {1,1,6},
+ {5,1,6}, {7,1,6}, {0,1,2}, {7,1,12},
+ {6,1,6}, {-1,-1,-1}, {6,1,12}, {-1,-1,-1},
+ /* hat #2 in metatile #6 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #6 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #7 (type F) */
+ {1,0,7}, {2,0,8}, {-1,-1,-1}, {0,0,8},
+ {0,2,0}, {0,0,7}, {5,0,7}, {2,0,7},
+ {-1,-1,-1}, {3,0,7}, {1,0,7}, {5,0,7},
+ {2,0,7}, {-1,-1,-1}, {4,0,7}, {-1,-1,-1},
+ {3,1,7}, {5,0,7}, {-1,-1,-1}, {3,0,7},
+ {4,0,7}, {6,0,7}, {2,0,7}, {1,0,7},
+ {5,0,7}, {7,0,7}, {0,2,0}, {7,1,4},
+ {6,0,7}, {2,1,7}, {6,1,4}, {0,1,7},
+ /* hat #1 in metatile #7 (type F) */
+ {1,1,7}, {1,1,4}, {7,0,7}, {6,1,4},
+ {-1,-1,-1}, {0,1,7}, {5,1,7}, {2,1,7},
+ {7,0,7}, {3,1,7}, {1,1,7}, {5,1,7},
+ {2,1,7}, {4,0,7}, {4,1,7}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,7}, {-1,-1,-1}, {3,1,7},
+ {4,1,7}, {6,1,7}, {2,1,7}, {1,1,7},
+ {5,1,7}, {7,1,7}, {-1,-1,-1}, {-1,-1,-1},
+ {6,1,7}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #2 in metatile #7 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #7 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #8 (type F) */
+ {1,0,8}, {-1,-1,-1}, {0,0,7}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,8}, {5,0,8}, {2,0,8},
+ {0,0,7}, {3,0,8}, {1,0,8}, {5,0,8},
+ {2,0,8}, {1,2,0}, {4,0,8}, {6,2,0},
+ {3,1,8}, {5,0,8}, {6,2,0}, {3,0,8},
+ {4,0,8}, {6,0,8}, {2,0,8}, {1,0,8},
+ {5,0,8}, {7,0,8}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,8}, {2,1,8}, {-1,-1,-1}, {0,1,8},
+ /* hat #1 in metatile #8 (type F) */
+ {1,1,8}, {-1,-1,-1}, {7,0,8}, {-1,-1,-1},
+ {-1,-1,-1}, {0,1,8}, {5,1,8}, {2,1,8},
+ {7,0,8}, {3,1,8}, {1,1,8}, {5,1,8},
+ {2,1,8}, {4,0,8}, {4,1,8}, {7,2,0},
+ {3,1,0}, {5,1,8}, {7,2,0}, {3,1,8},
+ {4,1,8}, {6,1,8}, {2,1,8}, {1,1,8},
+ {5,1,8}, {7,1,8}, {-1,-1,-1}, {-1,-1,-1},
+ {6,1,8}, {2,1,0}, {0,0,5}, {0,1,0},
+ /* hat #2 in metatile #8 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #8 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #9 (type F) */
+ {1,0,9}, {-1,-1,-1}, {0,0,10}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,9}, {5,0,9}, {2,0,9},
+ {0,0,10}, {3,0,9}, {1,0,9}, {5,0,9},
+ {2,0,9}, {2,0,1}, {4,0,9}, {0,0,1},
+ {3,1,9}, {5,0,9}, {0,0,1}, {3,0,9},
+ {4,0,9}, {6,0,9}, {2,0,9}, {1,0,9},
+ {5,0,9}, {7,0,9}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,9}, {2,1,9}, {-1,-1,-1}, {0,1,9},
+ /* hat #1 in metatile #9 (type F) */
+ {1,1,9}, {-1,-1,-1}, {7,0,9}, {-1,-1,-1},
+ {-1,-1,-1}, {0,1,9}, {5,1,9}, {2,1,9},
+ {7,0,9}, {3,1,9}, {1,1,9}, {5,1,9},
+ {2,1,9}, {4,0,9}, {4,1,9}, {7,3,1},
+ {3,2,1}, {5,1,9}, {7,3,1}, {3,1,9},
+ {4,1,9}, {6,1,9}, {2,1,9}, {1,1,9},
+ {5,1,9}, {7,1,9}, {-1,-1,-1}, {-1,-1,-1},
+ {6,1,9}, {2,2,1}, {0,0,4}, {0,2,1},
+ /* hat #2 in metatile #9 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #9 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #10 (type F) */
+ {1,0,10}, {2,0,9}, {-1,-1,-1}, {0,0,9},
+ {3,0,1}, {0,0,10}, {5,0,10}, {2,0,10},
+ {-1,-1,-1}, {3,0,10}, {1,0,10}, {5,0,10},
+ {2,0,10}, {-1,-1,-1}, {4,0,10}, {-1,-1,-1},
+ {3,1,10}, {5,0,10}, {-1,-1,-1}, {3,0,10},
+ {4,0,10}, {6,0,10}, {2,0,10}, {1,0,10},
+ {5,0,10}, {7,0,10}, {3,0,1}, {4,0,1},
+ {6,0,10}, {2,1,10}, {0,0,6}, {0,1,10},
+ /* hat #1 in metatile #10 (type F) */
+ {1,1,10}, {2,0,6}, {7,0,10}, {0,0,6},
+ {-1,-1,-1}, {0,1,10}, {5,1,10}, {2,1,10},
+ {7,0,10}, {3,1,10}, {1,1,10}, {5,1,10},
+ {2,1,10}, {4,0,10}, {4,1,10}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,10}, {-1,-1,-1}, {3,1,10},
+ {4,1,10}, {6,1,10}, {2,1,10}, {1,1,10},
+ {5,1,10}, {7,1,10}, {-1,-1,-1}, {-1,-1,-1},
+ {6,1,10}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #2 in metatile #10 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #10 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #11 (type F) */
+ {1,0,11}, {2,0,12}, {-1,-1,-1}, {0,0,12},
+ {0,2,2}, {0,0,11}, {5,0,11}, {2,0,11},
+ {-1,-1,-1}, {3,0,11}, {1,0,11}, {5,0,11},
+ {2,0,11}, {-1,-1,-1}, {4,0,11}, {-1,-1,-1},
+ {3,1,11}, {5,0,11}, {-1,-1,-1}, {3,0,11},
+ {4,0,11}, {6,0,11}, {2,0,11}, {1,0,11},
+ {5,0,11}, {7,0,11}, {0,2,2}, {7,1,5},
+ {6,0,11}, {2,1,11}, {6,1,5}, {0,1,11},
+ /* hat #1 in metatile #11 (type F) */
+ {1,1,11}, {1,1,5}, {7,0,11}, {6,1,5},
+ {-1,-1,-1}, {0,1,11}, {5,1,11}, {2,1,11},
+ {7,0,11}, {3,1,11}, {1,1,11}, {5,1,11},
+ {2,1,11}, {4,0,11}, {4,1,11}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,11}, {-1,-1,-1}, {3,1,11},
+ {4,1,11}, {6,1,11}, {2,1,11}, {1,1,11},
+ {5,1,11}, {7,1,11}, {-1,-1,-1}, {-1,-1,-1},
+ {6,1,11}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #2 in metatile #11 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #11 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #12 (type F) */
+ {1,0,12}, {-1,-1,-1}, {0,0,11}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,12}, {5,0,12}, {2,0,12},
+ {0,0,11}, {3,0,12}, {1,0,12}, {5,0,12},
+ {2,0,12}, {1,2,2}, {4,0,12}, {6,2,2},
+ {3,1,12}, {5,0,12}, {6,2,2}, {3,0,12},
+ {4,0,12}, {6,0,12}, {2,0,12}, {1,0,12},
+ {5,0,12}, {7,0,12}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,12}, {2,1,12}, {-1,-1,-1}, {0,1,12},
+ /* hat #1 in metatile #12 (type F) */
+ {1,1,12}, {-1,-1,-1}, {7,0,12}, {-1,-1,-1},
+ {-1,-1,-1}, {0,1,12}, {5,1,12}, {2,1,12},
+ {7,0,12}, {3,1,12}, {1,1,12}, {5,1,12},
+ {2,1,12}, {4,0,12}, {4,1,12}, {7,2,2},
+ {3,1,2}, {5,1,12}, {7,2,2}, {3,1,12},
+ {4,1,12}, {6,1,12}, {2,1,12}, {1,1,12},
+ {5,1,12}, {7,1,12}, {-1,-1,-1}, {7,1,6},
+ {6,1,12}, {2,1,2}, {6,1,6}, {0,1,2},
+ /* hat #2 in metatile #12 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #12 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+};
+static const KitemapEntry kitemap_T[] = {
+ /* hat #0 in metatile #0 (type H) */
+ {1,0,0}, {7,3,0}, {3,0,3}, {4,0,3},
+ {4,3,0}, {0,0,0}, {5,0,0}, {2,0,0},
+ {3,0,3}, {3,0,0}, {1,0,0}, {5,0,0},
+ {2,0,0}, {1,1,6}, {4,0,0}, {6,1,6},
+ {0,0,2}, {5,0,0}, {6,1,6}, {3,0,0},
+ {4,0,0}, {6,0,0}, {2,0,0}, {1,0,0},
+ {5,0,0}, {7,0,0}, {4,3,0}, {3,3,0},
+ {6,0,0}, {1,0,2}, {7,1,0}, {6,0,2},
+ /* hat #1 in metatile #0 (type H) */
+ {1,1,0}, {1,1,4}, {7,1,1}, {6,1,4},
+ {0,1,2}, {0,1,0}, {5,1,0}, {2,1,0},
+ {7,1,1}, {3,1,0}, {1,1,0}, {5,1,0},
+ {2,1,0}, {4,1,1}, {4,1,0}, {0,3,0},
+ {2,3,0}, {5,1,0}, {0,3,0}, {3,1,0},
+ {4,1,0}, {6,1,0}, {2,1,0}, {1,1,0},
+ {5,1,0}, {7,1,0}, {0,1,2}, {7,0,2},
+ {6,1,0}, {3,3,0}, {6,0,2}, {7,0,0},
+ /* hat #2 in metatile #0 (type H) */
+ {1,2,0}, {1,1,5}, {7,1,3}, {6,1,5},
+ {3,0,1}, {0,2,0}, {5,2,0}, {2,2,0},
+ {7,1,3}, {3,2,0}, {1,2,0}, {5,2,0},
+ {2,2,0}, {4,1,3}, {4,2,0}, {6,3,0},
+ {1,3,0}, {5,2,0}, {6,3,0}, {3,2,0},
+ {4,2,0}, {6,2,0}, {2,2,0}, {1,2,0},
+ {5,2,0}, {7,2,0}, {3,0,1}, {4,0,1},
+ {6,2,0}, {0,3,0}, {3,1,1}, {4,1,1},
+ /* hat #3 in metatile #0 (type H) */
+ {7,2,0}, {1,3,0}, {3,1,0}, {4,1,0},
+ {0,3,0}, {4,2,0}, {2,3,0}, {5,3,0},
+ {3,3,0}, {4,1,0}, {5,3,0}, {1,3,0},
+ {7,1,0}, {2,3,0}, {6,0,0}, {4,3,0},
+ {5,3,0}, {1,0,0}, {3,3,0}, {6,0,0},
+ {6,3,0}, {4,3,0}, {1,3,0}, {2,3,0},
+ {7,3,0}, {5,3,0}, {3,2,0}, {4,2,0},
+ {0,0,0}, {6,3,0}, {3,1,3}, {4,1,3},
+ /* hat #0 in metatile #1 (type P) */
+ {1,0,1}, {-1,-1,-1}, {0,1,5}, {7,0,5},
+ {-1,-1,-1}, {0,0,1}, {5,0,1}, {2,0,1},
+ {0,1,5}, {3,0,1}, {1,0,1}, {5,0,1},
+ {2,0,1}, {1,2,0}, {4,0,1}, {6,2,0},
+ {3,1,1}, {5,0,1}, {6,2,0}, {3,0,1},
+ {4,0,1}, {6,0,1}, {2,0,1}, {1,0,1},
+ {5,0,1}, {7,0,1}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,1}, {2,1,1}, {-1,-1,-1}, {0,1,1},
+ /* hat #1 in metatile #1 (type P) */
+ {1,1,1}, {-1,-1,-1}, {7,0,1}, {-1,-1,-1},
+ {-1,-1,-1}, {0,1,1}, {5,1,1}, {2,1,1},
+ {7,0,1}, {3,1,1}, {1,1,1}, {5,1,1},
+ {2,1,1}, {4,0,1}, {4,1,1}, {7,2,0},
+ {3,1,0}, {5,1,1}, {7,2,0}, {3,1,1},
+ {4,1,1}, {6,1,1}, {2,1,1}, {1,1,1},
+ {5,1,1}, {7,1,1}, {-1,-1,-1}, {7,1,4},
+ {6,1,1}, {2,1,0}, {6,1,4}, {0,1,0},
+ /* hat #2 in metatile #1 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #1 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #2 (type P) */
+ {1,0,2}, {4,0,0}, {-1,-1,-1}, {7,1,6},
+ {7,0,0}, {0,0,2}, {5,0,2}, {2,0,2},
+ {-1,-1,-1}, {3,0,2}, {1,0,2}, {5,0,2},
+ {2,0,2}, {-1,-1,-1}, {4,0,2}, {-1,-1,-1},
+ {3,1,2}, {5,0,2}, {-1,-1,-1}, {3,0,2},
+ {4,0,2}, {6,0,2}, {2,0,2}, {1,0,2},
+ {5,0,2}, {7,0,2}, {7,0,0}, {7,1,0},
+ {6,0,2}, {2,1,2}, {6,1,0}, {0,1,2},
+ /* hat #1 in metatile #2 (type P) */
+ {1,1,2}, {1,1,0}, {7,0,2}, {6,1,0},
+ {0,1,4}, {0,1,2}, {5,1,2}, {2,1,2},
+ {7,0,2}, {3,1,2}, {1,1,2}, {5,1,2},
+ {2,1,2}, {4,0,2}, {4,1,2}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,2}, {-1,-1,-1}, {3,1,2},
+ {4,1,2}, {6,1,2}, {2,1,2}, {1,1,2},
+ {5,1,2}, {7,1,2}, {0,1,4}, {7,0,4},
+ {6,1,2}, {-1,-1,-1}, {6,0,4}, {-1,-1,-1},
+ /* hat #2 in metatile #2 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #2 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #3 (type P) */
+ {1,0,3}, {-1,-1,-1}, {0,1,6}, {7,0,6},
+ {-1,-1,-1}, {0,0,3}, {5,0,3}, {2,0,3},
+ {0,1,6}, {3,0,3}, {1,0,3}, {5,0,3},
+ {2,0,3}, {2,0,0}, {4,0,3}, {0,0,0},
+ {3,1,3}, {5,0,3}, {0,0,0}, {3,0,3},
+ {4,0,3}, {6,0,3}, {2,0,3}, {1,0,3},
+ {5,0,3}, {7,0,3}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,3}, {2,1,3}, {-1,-1,-1}, {0,1,3},
+ /* hat #1 in metatile #3 (type P) */
+ {1,1,3}, {-1,-1,-1}, {7,0,3}, {-1,-1,-1},
+ {-1,-1,-1}, {0,1,3}, {5,1,3}, {2,1,3},
+ {7,0,3}, {3,1,3}, {1,1,3}, {5,1,3},
+ {2,1,3}, {4,0,3}, {4,1,3}, {7,3,0},
+ {3,2,0}, {5,1,3}, {7,3,0}, {3,1,3},
+ {4,1,3}, {6,1,3}, {2,1,3}, {1,1,3},
+ {5,1,3}, {7,1,3}, {-1,-1,-1}, {7,1,5},
+ {6,1,3}, {2,2,0}, {6,1,5}, {0,2,0},
+ /* hat #2 in metatile #3 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #3 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #4 (type F) */
+ {1,0,4}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,4}, {5,0,4}, {2,0,4},
+ {-1,-1,-1}, {3,0,4}, {1,0,4}, {5,0,4},
+ {2,0,4}, {-1,-1,-1}, {4,0,4}, {-1,-1,-1},
+ {3,1,4}, {5,0,4}, {-1,-1,-1}, {3,0,4},
+ {4,0,4}, {6,0,4}, {2,0,4}, {1,0,4},
+ {5,0,4}, {7,0,4}, {-1,-1,-1}, {7,1,2},
+ {6,0,4}, {2,1,4}, {6,1,2}, {0,1,4},
+ /* hat #1 in metatile #4 (type F) */
+ {1,1,4}, {1,1,2}, {7,0,4}, {6,1,2},
+ {0,1,0}, {0,1,4}, {5,1,4}, {2,1,4},
+ {7,0,4}, {3,1,4}, {1,1,4}, {5,1,4},
+ {2,1,4}, {4,0,4}, {4,1,4}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,4}, {-1,-1,-1}, {3,1,4},
+ {4,1,4}, {6,1,4}, {2,1,4}, {1,1,4},
+ {5,1,4}, {7,1,4}, {0,1,0}, {7,1,1},
+ {6,1,4}, {-1,-1,-1}, {6,1,1}, {-1,-1,-1},
+ /* hat #2 in metatile #4 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #4 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #5 (type F) */
+ {1,0,5}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,5}, {5,0,5}, {2,0,5},
+ {-1,-1,-1}, {3,0,5}, {1,0,5}, {5,0,5},
+ {2,0,5}, {-1,-1,-1}, {4,0,5}, {-1,-1,-1},
+ {3,1,5}, {5,0,5}, {-1,-1,-1}, {3,0,5},
+ {4,0,5}, {6,0,5}, {2,0,5}, {1,0,5},
+ {5,0,5}, {7,0,5}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,5}, {2,1,5}, {0,0,1}, {0,1,5},
+ /* hat #1 in metatile #5 (type F) */
+ {1,1,5}, {2,0,1}, {7,0,5}, {0,0,1},
+ {0,2,0}, {0,1,5}, {5,1,5}, {2,1,5},
+ {7,0,5}, {3,1,5}, {1,1,5}, {5,1,5},
+ {2,1,5}, {4,0,5}, {4,1,5}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,5}, {-1,-1,-1}, {3,1,5},
+ {4,1,5}, {6,1,5}, {2,1,5}, {1,1,5},
+ {5,1,5}, {7,1,5}, {0,2,0}, {7,1,3},
+ {6,1,5}, {-1,-1,-1}, {6,1,3}, {-1,-1,-1},
+ /* hat #2 in metatile #5 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #5 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #6 (type F) */
+ {1,0,6}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,6}, {5,0,6}, {2,0,6},
+ {-1,-1,-1}, {3,0,6}, {1,0,6}, {5,0,6},
+ {2,0,6}, {-1,-1,-1}, {4,0,6}, {-1,-1,-1},
+ {3,1,6}, {5,0,6}, {-1,-1,-1}, {3,0,6},
+ {4,0,6}, {6,0,6}, {2,0,6}, {1,0,6},
+ {5,0,6}, {7,0,6}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,6}, {2,1,6}, {0,0,3}, {0,1,6},
+ /* hat #1 in metatile #6 (type F) */
+ {1,1,6}, {2,0,3}, {7,0,6}, {0,0,3},
+ {3,0,0}, {0,1,6}, {5,1,6}, {2,1,6},
+ {7,0,6}, {3,1,6}, {1,1,6}, {5,1,6},
+ {2,1,6}, {4,0,6}, {4,1,6}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,6}, {-1,-1,-1}, {3,1,6},
+ {4,1,6}, {6,1,6}, {2,1,6}, {1,1,6},
+ {5,1,6}, {7,1,6}, {3,0,0}, {4,0,0},
+ {6,1,6}, {-1,-1,-1}, {0,0,2}, {-1,-1,-1},
+ /* hat #2 in metatile #6 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #6 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+};
+static const KitemapEntry kitemap_P[] = {
+ /* hat #0 in metatile #0 (type H) */
+ {1,0,0}, {7,3,0}, {3,0,4}, {4,0,4},
+ {4,3,0}, {0,0,0}, {5,0,0}, {2,0,0},
+ {3,0,4}, {3,0,0}, {1,0,0}, {5,0,0},
+ {2,0,0}, {1,1,9}, {4,0,0}, {6,1,9},
+ {0,0,3}, {5,0,0}, {6,1,9}, {3,0,0},
+ {4,0,0}, {6,0,0}, {2,0,0}, {1,0,0},
+ {5,0,0}, {7,0,0}, {4,3,0}, {3,3,0},
+ {6,0,0}, {1,0,3}, {7,1,0}, {6,0,3},
+ /* hat #1 in metatile #0 (type H) */
+ {1,1,0}, {1,1,8}, {7,1,5}, {6,1,8},
+ {0,1,3}, {0,1,0}, {5,1,0}, {2,1,0},
+ {7,1,5}, {3,1,0}, {1,1,0}, {5,1,0},
+ {2,1,0}, {4,1,5}, {4,1,0}, {0,3,0},
+ {2,3,0}, {5,1,0}, {0,3,0}, {3,1,0},
+ {4,1,0}, {6,1,0}, {2,1,0}, {1,1,0},
+ {5,1,0}, {7,1,0}, {0,1,3}, {7,0,3},
+ {6,1,0}, {3,3,0}, {6,0,3}, {7,0,0},
+ /* hat #2 in metatile #0 (type H) */
+ {1,2,0}, {1,0,6}, {7,1,4}, {6,0,6},
+ {3,0,5}, {0,2,0}, {5,2,0}, {2,2,0},
+ {7,1,4}, {3,2,0}, {1,2,0}, {5,2,0},
+ {2,2,0}, {4,1,4}, {4,2,0}, {6,3,0},
+ {1,3,0}, {5,2,0}, {6,3,0}, {3,2,0},
+ {4,2,0}, {6,2,0}, {2,2,0}, {1,2,0},
+ {5,2,0}, {7,2,0}, {3,0,5}, {4,0,5},
+ {6,2,0}, {0,3,0}, {3,1,5}, {4,1,5},
+ /* hat #3 in metatile #0 (type H) */
+ {7,2,0}, {1,3,0}, {3,1,0}, {4,1,0},
+ {0,3,0}, {4,2,0}, {2,3,0}, {5,3,0},
+ {3,3,0}, {4,1,0}, {5,3,0}, {1,3,0},
+ {7,1,0}, {2,3,0}, {6,0,0}, {4,3,0},
+ {5,3,0}, {1,0,0}, {3,3,0}, {6,0,0},
+ {6,3,0}, {4,3,0}, {1,3,0}, {2,3,0},
+ {7,3,0}, {5,3,0}, {3,2,0}, {4,2,0},
+ {0,0,0}, {6,3,0}, {3,1,4}, {4,1,4},
+ /* hat #0 in metatile #1 (type H) */
+ {1,0,1}, {7,3,1}, {3,0,10}, {4,0,10},
+ {4,3,1}, {0,0,1}, {5,0,1}, {2,0,1},
+ {3,0,10}, {3,0,1}, {1,0,1}, {5,0,1},
+ {2,0,1}, {1,0,9}, {4,0,1}, {6,0,9},
+ {0,0,4}, {5,0,1}, {6,0,9}, {3,0,1},
+ {4,0,1}, {6,0,1}, {2,0,1}, {1,0,1},
+ {5,0,1}, {7,0,1}, {4,3,1}, {3,3,1},
+ {6,0,1}, {1,0,4}, {7,1,1}, {6,0,4},
+ /* hat #1 in metatile #1 (type H) */
+ {1,1,1}, {1,1,6}, {7,1,2}, {6,1,6},
+ {0,1,4}, {0,1,1}, {5,1,1}, {2,1,1},
+ {7,1,2}, {3,1,1}, {1,1,1}, {5,1,1},
+ {2,1,1}, {4,1,2}, {4,1,1}, {0,3,1},
+ {2,3,1}, {5,1,1}, {0,3,1}, {3,1,1},
+ {4,1,1}, {6,1,1}, {2,1,1}, {1,1,1},
+ {5,1,1}, {7,1,1}, {0,1,4}, {7,0,4},
+ {6,1,1}, {3,3,1}, {6,0,4}, {7,0,1},
+ /* hat #2 in metatile #1 (type H) */
+ {1,2,1}, {1,1,7}, {7,1,10}, {6,1,7},
+ {3,0,2}, {0,2,1}, {5,2,1}, {2,2,1},
+ {7,1,10}, {3,2,1}, {1,2,1}, {5,2,1},
+ {2,2,1}, {4,1,10}, {4,2,1}, {6,3,1},
+ {1,3,1}, {5,2,1}, {6,3,1}, {3,2,1},
+ {4,2,1}, {6,2,1}, {2,2,1}, {1,2,1},
+ {5,2,1}, {7,2,1}, {3,0,2}, {4,0,2},
+ {6,2,1}, {0,3,1}, {3,1,2}, {4,1,2},
+ /* hat #3 in metatile #1 (type H) */
+ {7,2,1}, {1,3,1}, {3,1,1}, {4,1,1},
+ {0,3,1}, {4,2,1}, {2,3,1}, {5,3,1},
+ {3,3,1}, {4,1,1}, {5,3,1}, {1,3,1},
+ {7,1,1}, {2,3,1}, {6,0,1}, {4,3,1},
+ {5,3,1}, {1,0,1}, {3,3,1}, {6,0,1},
+ {6,3,1}, {4,3,1}, {1,3,1}, {2,3,1},
+ {7,3,1}, {5,3,1}, {3,2,1}, {4,2,1},
+ {0,0,1}, {6,3,1}, {3,1,10}, {4,1,10},
+ /* hat #0 in metatile #2 (type P) */
+ {1,0,2}, {-1,-1,-1}, {0,1,7}, {7,0,7},
+ {-1,-1,-1}, {0,0,2}, {5,0,2}, {2,0,2},
+ {0,1,7}, {3,0,2}, {1,0,2}, {5,0,2},
+ {2,0,2}, {1,2,1}, {4,0,2}, {6,2,1},
+ {3,1,2}, {5,0,2}, {6,2,1}, {3,0,2},
+ {4,0,2}, {6,0,2}, {2,0,2}, {1,0,2},
+ {5,0,2}, {7,0,2}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,2}, {2,1,2}, {-1,-1,-1}, {0,1,2},
+ /* hat #1 in metatile #2 (type P) */
+ {1,1,2}, {-1,-1,-1}, {7,0,2}, {-1,-1,-1},
+ {-1,-1,-1}, {0,1,2}, {5,1,2}, {2,1,2},
+ {7,0,2}, {3,1,2}, {1,1,2}, {5,1,2},
+ {2,1,2}, {4,0,2}, {4,1,2}, {7,2,1},
+ {3,1,1}, {5,1,2}, {7,2,1}, {3,1,2},
+ {4,1,2}, {6,1,2}, {2,1,2}, {1,1,2},
+ {5,1,2}, {7,1,2}, {-1,-1,-1}, {7,1,6},
+ {6,1,2}, {2,1,1}, {6,1,6}, {0,1,1},
+ /* hat #2 in metatile #2 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #2 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #3 (type P) */
+ {1,0,3}, {4,0,0}, {-1,-1,-1}, {7,1,9},
+ {7,0,0}, {0,0,3}, {5,0,3}, {2,0,3},
+ {-1,-1,-1}, {3,0,3}, {1,0,3}, {5,0,3},
+ {2,0,3}, {-1,-1,-1}, {4,0,3}, {-1,-1,-1},
+ {3,1,3}, {5,0,3}, {-1,-1,-1}, {3,0,3},
+ {4,0,3}, {6,0,3}, {2,0,3}, {1,0,3},
+ {5,0,3}, {7,0,3}, {7,0,0}, {7,1,0},
+ {6,0,3}, {2,1,3}, {6,1,0}, {0,1,3},
+ /* hat #1 in metatile #3 (type P) */
+ {1,1,3}, {1,1,0}, {7,0,3}, {6,1,0},
+ {0,1,8}, {0,1,3}, {5,1,3}, {2,1,3},
+ {7,0,3}, {3,1,3}, {1,1,3}, {5,1,3},
+ {2,1,3}, {4,0,3}, {4,1,3}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,3}, {-1,-1,-1}, {3,1,3},
+ {4,1,3}, {6,1,3}, {2,1,3}, {1,1,3},
+ {5,1,3}, {7,1,3}, {0,1,8}, {7,0,8},
+ {6,1,3}, {-1,-1,-1}, {6,0,8}, {-1,-1,-1},
+ /* hat #2 in metatile #3 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #3 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #4 (type P) */
+ {1,0,4}, {4,0,1}, {0,1,9}, {7,0,9},
+ {7,0,1}, {0,0,4}, {5,0,4}, {2,0,4},
+ {0,1,9}, {3,0,4}, {1,0,4}, {5,0,4},
+ {2,0,4}, {2,0,0}, {4,0,4}, {0,0,0},
+ {3,1,4}, {5,0,4}, {0,0,0}, {3,0,4},
+ {4,0,4}, {6,0,4}, {2,0,4}, {1,0,4},
+ {5,0,4}, {7,0,4}, {7,0,1}, {7,1,1},
+ {6,0,4}, {2,1,4}, {6,1,1}, {0,1,4},
+ /* hat #1 in metatile #4 (type P) */
+ {1,1,4}, {1,1,1}, {7,0,4}, {6,1,1},
+ {0,1,6}, {0,1,4}, {5,1,4}, {2,1,4},
+ {7,0,4}, {3,1,4}, {1,1,4}, {5,1,4},
+ {2,1,4}, {4,0,4}, {4,1,4}, {7,3,0},
+ {3,2,0}, {5,1,4}, {7,3,0}, {3,1,4},
+ {4,1,4}, {6,1,4}, {2,1,4}, {1,1,4},
+ {5,1,4}, {7,1,4}, {0,1,6}, {7,0,6},
+ {6,1,4}, {2,2,0}, {6,0,6}, {0,2,0},
+ /* hat #2 in metatile #4 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #4 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #5 (type F) */
+ {1,0,5}, {-1,-1,-1}, {0,0,6}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,5}, {5,0,5}, {2,0,5},
+ {0,0,6}, {3,0,5}, {1,0,5}, {5,0,5},
+ {2,0,5}, {1,2,0}, {4,0,5}, {6,2,0},
+ {3,1,5}, {5,0,5}, {6,2,0}, {3,0,5},
+ {4,0,5}, {6,0,5}, {2,0,5}, {1,0,5},
+ {5,0,5}, {7,0,5}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,5}, {2,1,5}, {-1,-1,-1}, {0,1,5},
+ /* hat #1 in metatile #5 (type F) */
+ {1,1,5}, {-1,-1,-1}, {7,0,5}, {-1,-1,-1},
+ {-1,-1,-1}, {0,1,5}, {5,1,5}, {2,1,5},
+ {7,0,5}, {3,1,5}, {1,1,5}, {5,1,5},
+ {2,1,5}, {4,0,5}, {4,1,5}, {7,2,0},
+ {3,1,0}, {5,1,5}, {7,2,0}, {3,1,5},
+ {4,1,5}, {6,1,5}, {2,1,5}, {1,1,5},
+ {5,1,5}, {7,1,5}, {-1,-1,-1}, {7,1,8},
+ {6,1,5}, {2,1,0}, {6,1,8}, {0,1,0},
+ /* hat #2 in metatile #5 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #5 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #6 (type F) */
+ {1,0,6}, {2,0,5}, {-1,-1,-1}, {0,0,5},
+ {0,2,0}, {0,0,6}, {5,0,6}, {2,0,6},
+ {-1,-1,-1}, {3,0,6}, {1,0,6}, {5,0,6},
+ {2,0,6}, {-1,-1,-1}, {4,0,6}, {-1,-1,-1},
+ {3,1,6}, {5,0,6}, {-1,-1,-1}, {3,0,6},
+ {4,0,6}, {6,0,6}, {2,0,6}, {1,0,6},
+ {5,0,6}, {7,0,6}, {0,2,0}, {7,1,4},
+ {6,0,6}, {2,1,6}, {6,1,4}, {0,1,6},
+ /* hat #1 in metatile #6 (type F) */
+ {1,1,6}, {1,1,4}, {7,0,6}, {6,1,4},
+ {0,1,1}, {0,1,6}, {5,1,6}, {2,1,6},
+ {7,0,6}, {3,1,6}, {1,1,6}, {5,1,6},
+ {2,1,6}, {4,0,6}, {4,1,6}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,6}, {-1,-1,-1}, {3,1,6},
+ {4,1,6}, {6,1,6}, {2,1,6}, {1,1,6},
+ {5,1,6}, {7,1,6}, {0,1,1}, {7,1,2},
+ {6,1,6}, {-1,-1,-1}, {6,1,2}, {-1,-1,-1},
+ /* hat #2 in metatile #6 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #6 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #7 (type F) */
+ {1,0,7}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,7}, {5,0,7}, {2,0,7},
+ {-1,-1,-1}, {3,0,7}, {1,0,7}, {5,0,7},
+ {2,0,7}, {-1,-1,-1}, {4,0,7}, {-1,-1,-1},
+ {3,1,7}, {5,0,7}, {-1,-1,-1}, {3,0,7},
+ {4,0,7}, {6,0,7}, {2,0,7}, {1,0,7},
+ {5,0,7}, {7,0,7}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,7}, {2,1,7}, {0,0,2}, {0,1,7},
+ /* hat #1 in metatile #7 (type F) */
+ {1,1,7}, {2,0,2}, {7,0,7}, {0,0,2},
+ {0,2,1}, {0,1,7}, {5,1,7}, {2,1,7},
+ {7,0,7}, {3,1,7}, {1,1,7}, {5,1,7},
+ {2,1,7}, {4,0,7}, {4,1,7}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,7}, {-1,-1,-1}, {3,1,7},
+ {4,1,7}, {6,1,7}, {2,1,7}, {1,1,7},
+ {5,1,7}, {7,1,7}, {0,2,1}, {7,1,10},
+ {6,1,7}, {-1,-1,-1}, {6,1,10}, {-1,-1,-1},
+ /* hat #2 in metatile #7 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #7 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #8 (type F) */
+ {1,0,8}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,8}, {5,0,8}, {2,0,8},
+ {-1,-1,-1}, {3,0,8}, {1,0,8}, {5,0,8},
+ {2,0,8}, {-1,-1,-1}, {4,0,8}, {-1,-1,-1},
+ {3,1,8}, {5,0,8}, {-1,-1,-1}, {3,0,8},
+ {4,0,8}, {6,0,8}, {2,0,8}, {1,0,8},
+ {5,0,8}, {7,0,8}, {-1,-1,-1}, {7,1,3},
+ {6,0,8}, {2,1,8}, {6,1,3}, {0,1,8},
+ /* hat #1 in metatile #8 (type F) */
+ {1,1,8}, {1,1,3}, {7,0,8}, {6,1,3},
+ {0,1,0}, {0,1,8}, {5,1,8}, {2,1,8},
+ {7,0,8}, {3,1,8}, {1,1,8}, {5,1,8},
+ {2,1,8}, {4,0,8}, {4,1,8}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,8}, {-1,-1,-1}, {3,1,8},
+ {4,1,8}, {6,1,8}, {2,1,8}, {1,1,8},
+ {5,1,8}, {7,1,8}, {0,1,0}, {7,1,5},
+ {6,1,8}, {-1,-1,-1}, {6,1,5}, {-1,-1,-1},
+ /* hat #2 in metatile #8 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #8 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #9 (type F) */
+ {1,0,9}, {2,0,10}, {-1,-1,-1}, {0,0,10},
+ {3,0,1}, {0,0,9}, {5,0,9}, {2,0,9},
+ {-1,-1,-1}, {3,0,9}, {1,0,9}, {5,0,9},
+ {2,0,9}, {-1,-1,-1}, {4,0,9}, {-1,-1,-1},
+ {3,1,9}, {5,0,9}, {-1,-1,-1}, {3,0,9},
+ {4,0,9}, {6,0,9}, {2,0,9}, {1,0,9},
+ {5,0,9}, {7,0,9}, {3,0,1}, {4,0,1},
+ {6,0,9}, {2,1,9}, {0,0,4}, {0,1,9},
+ /* hat #1 in metatile #9 (type F) */
+ {1,1,9}, {2,0,4}, {7,0,9}, {0,0,4},
+ {3,0,0}, {0,1,9}, {5,1,9}, {2,1,9},
+ {7,0,9}, {3,1,9}, {1,1,9}, {5,1,9},
+ {2,1,9}, {4,0,9}, {4,1,9}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,9}, {-1,-1,-1}, {3,1,9},
+ {4,1,9}, {6,1,9}, {2,1,9}, {1,1,9},
+ {5,1,9}, {7,1,9}, {3,0,0}, {4,0,0},
+ {6,1,9}, {-1,-1,-1}, {0,0,3}, {-1,-1,-1},
+ /* hat #2 in metatile #9 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #9 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #10 (type F) */
+ {1,0,10}, {-1,-1,-1}, {0,0,9}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,10}, {5,0,10}, {2,0,10},
+ {0,0,9}, {3,0,10}, {1,0,10}, {5,0,10},
+ {2,0,10}, {2,0,1}, {4,0,10}, {0,0,1},
+ {3,1,10}, {5,0,10}, {0,0,1}, {3,0,10},
+ {4,0,10}, {6,0,10}, {2,0,10}, {1,0,10},
+ {5,0,10}, {7,0,10}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,10}, {2,1,10}, {-1,-1,-1}, {0,1,10},
+ /* hat #1 in metatile #10 (type F) */
+ {1,1,10}, {-1,-1,-1}, {7,0,10}, {-1,-1,-1},
+ {-1,-1,-1}, {0,1,10}, {5,1,10}, {2,1,10},
+ {7,0,10}, {3,1,10}, {1,1,10}, {5,1,10},
+ {2,1,10}, {4,0,10}, {4,1,10}, {7,3,1},
+ {3,2,1}, {5,1,10}, {7,3,1}, {3,1,10},
+ {4,1,10}, {6,1,10}, {2,1,10}, {1,1,10},
+ {5,1,10}, {7,1,10}, {-1,-1,-1}, {7,1,7},
+ {6,1,10}, {2,2,1}, {6,1,7}, {0,2,1},
+ /* hat #2 in metatile #10 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #10 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+};
+static const KitemapEntry kitemap_F[] = {
+ /* hat #0 in metatile #0 (type H) */
+ {1,0,0}, {7,3,0}, {3,0,3}, {4,0,3},
+ {4,3,0}, {0,0,0}, {5,0,0}, {2,0,0},
+ {3,0,3}, {3,0,0}, {1,0,0}, {5,0,0},
+ {2,0,0}, {1,1,9}, {4,0,0}, {6,1,9},
+ {0,0,2}, {5,0,0}, {6,1,9}, {3,0,0},
+ {4,0,0}, {6,0,0}, {2,0,0}, {1,0,0},
+ {5,0,0}, {7,0,0}, {4,3,0}, {3,3,0},
+ {6,0,0}, {1,0,2}, {7,1,0}, {6,0,2},
+ /* hat #1 in metatile #0 (type H) */
+ {1,1,0}, {1,1,8}, {7,1,4}, {6,1,8},
+ {0,1,2}, {0,1,0}, {5,1,0}, {2,1,0},
+ {7,1,4}, {3,1,0}, {1,1,0}, {5,1,0},
+ {2,1,0}, {4,1,4}, {4,1,0}, {0,3,0},
+ {2,3,0}, {5,1,0}, {0,3,0}, {3,1,0},
+ {4,1,0}, {6,1,0}, {2,1,0}, {1,1,0},
+ {5,1,0}, {7,1,0}, {0,1,2}, {7,0,2},
+ {6,1,0}, {3,3,0}, {6,0,2}, {7,0,0},
+ /* hat #2 in metatile #0 (type H) */
+ {1,2,0}, {1,0,5}, {7,1,3}, {6,0,5},
+ {3,0,4}, {0,2,0}, {5,2,0}, {2,2,0},
+ {7,1,3}, {3,2,0}, {1,2,0}, {5,2,0},
+ {2,2,0}, {4,1,3}, {4,2,0}, {6,3,0},
+ {1,3,0}, {5,2,0}, {6,3,0}, {3,2,0},
+ {4,2,0}, {6,2,0}, {2,2,0}, {1,2,0},
+ {5,2,0}, {7,2,0}, {3,0,4}, {4,0,4},
+ {6,2,0}, {0,3,0}, {3,1,4}, {4,1,4},
+ /* hat #3 in metatile #0 (type H) */
+ {7,2,0}, {1,3,0}, {3,1,0}, {4,1,0},
+ {0,3,0}, {4,2,0}, {2,3,0}, {5,3,0},
+ {3,3,0}, {4,1,0}, {5,3,0}, {1,3,0},
+ {7,1,0}, {2,3,0}, {6,0,0}, {4,3,0},
+ {5,3,0}, {1,0,0}, {3,3,0}, {6,0,0},
+ {6,3,0}, {4,3,0}, {1,3,0}, {2,3,0},
+ {7,3,0}, {5,3,0}, {3,2,0}, {4,2,0},
+ {0,0,0}, {6,3,0}, {3,1,3}, {4,1,3},
+ /* hat #0 in metatile #1 (type H) */
+ {1,0,1}, {7,3,1}, {3,0,10}, {4,0,10},
+ {4,3,1}, {0,0,1}, {5,0,1}, {2,0,1},
+ {3,0,10}, {3,0,1}, {1,0,1}, {5,0,1},
+ {2,0,1}, {1,0,9}, {4,0,1}, {6,0,9},
+ {0,0,3}, {5,0,1}, {6,0,9}, {3,0,1},
+ {4,0,1}, {6,0,1}, {2,0,1}, {1,0,1},
+ {5,0,1}, {7,0,1}, {4,3,1}, {3,3,1},
+ {6,0,1}, {1,0,3}, {7,1,1}, {6,0,3},
+ /* hat #1 in metatile #1 (type H) */
+ {1,1,1}, {1,1,5}, {7,1,6}, {6,1,5},
+ {0,1,3}, {0,1,1}, {5,1,1}, {2,1,1},
+ {7,1,6}, {3,1,1}, {1,1,1}, {5,1,1},
+ {2,1,1}, {4,1,6}, {4,1,1}, {0,3,1},
+ {2,3,1}, {5,1,1}, {0,3,1}, {3,1,1},
+ {4,1,1}, {6,1,1}, {2,1,1}, {1,1,1},
+ {5,1,1}, {7,1,1}, {0,1,3}, {7,0,3},
+ {6,1,1}, {3,3,1}, {6,0,3}, {7,0,1},
+ /* hat #2 in metatile #1 (type H) */
+ {1,2,1}, {1,0,7}, {7,1,10}, {6,0,7},
+ {3,0,6}, {0,2,1}, {5,2,1}, {2,2,1},
+ {7,1,10}, {3,2,1}, {1,2,1}, {5,2,1},
+ {2,2,1}, {4,1,10}, {4,2,1}, {6,3,1},
+ {1,3,1}, {5,2,1}, {6,3,1}, {3,2,1},
+ {4,2,1}, {6,2,1}, {2,2,1}, {1,2,1},
+ {5,2,1}, {7,2,1}, {3,0,6}, {4,0,6},
+ {6,2,1}, {0,3,1}, {3,1,6}, {4,1,6},
+ /* hat #3 in metatile #1 (type H) */
+ {7,2,1}, {1,3,1}, {3,1,1}, {4,1,1},
+ {0,3,1}, {4,2,1}, {2,3,1}, {5,3,1},
+ {3,3,1}, {4,1,1}, {5,3,1}, {1,3,1},
+ {7,1,1}, {2,3,1}, {6,0,1}, {4,3,1},
+ {5,3,1}, {1,0,1}, {3,3,1}, {6,0,1},
+ {6,3,1}, {4,3,1}, {1,3,1}, {2,3,1},
+ {7,3,1}, {5,3,1}, {3,2,1}, {4,2,1},
+ {0,0,1}, {6,3,1}, {3,1,10}, {4,1,10},
+ /* hat #0 in metatile #2 (type P) */
+ {1,0,2}, {4,0,0}, {-1,-1,-1}, {7,1,9},
+ {7,0,0}, {0,0,2}, {5,0,2}, {2,0,2},
+ {-1,-1,-1}, {3,0,2}, {1,0,2}, {5,0,2},
+ {2,0,2}, {-1,-1,-1}, {4,0,2}, {-1,-1,-1},
+ {3,1,2}, {5,0,2}, {-1,-1,-1}, {3,0,2},
+ {4,0,2}, {6,0,2}, {2,0,2}, {1,0,2},
+ {5,0,2}, {7,0,2}, {7,0,0}, {7,1,0},
+ {6,0,2}, {2,1,2}, {6,1,0}, {0,1,2},
+ /* hat #1 in metatile #2 (type P) */
+ {1,1,2}, {1,1,0}, {7,0,2}, {6,1,0},
+ {0,1,8}, {0,1,2}, {5,1,2}, {2,1,2},
+ {7,0,2}, {3,1,2}, {1,1,2}, {5,1,2},
+ {2,1,2}, {4,0,2}, {4,1,2}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,2}, {-1,-1,-1}, {3,1,2},
+ {4,1,2}, {6,1,2}, {2,1,2}, {1,1,2},
+ {5,1,2}, {7,1,2}, {0,1,8}, {7,0,8},
+ {6,1,2}, {-1,-1,-1}, {6,0,8}, {-1,-1,-1},
+ /* hat #2 in metatile #2 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #2 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #3 (type P) */
+ {1,0,3}, {4,0,1}, {0,1,9}, {7,0,9},
+ {7,0,1}, {0,0,3}, {5,0,3}, {2,0,3},
+ {0,1,9}, {3,0,3}, {1,0,3}, {5,0,3},
+ {2,0,3}, {2,0,0}, {4,0,3}, {0,0,0},
+ {3,1,3}, {5,0,3}, {0,0,0}, {3,0,3},
+ {4,0,3}, {6,0,3}, {2,0,3}, {1,0,3},
+ {5,0,3}, {7,0,3}, {7,0,1}, {7,1,1},
+ {6,0,3}, {2,1,3}, {6,1,1}, {0,1,3},
+ /* hat #1 in metatile #3 (type P) */
+ {1,1,3}, {1,1,1}, {7,0,3}, {6,1,1},
+ {0,1,5}, {0,1,3}, {5,1,3}, {2,1,3},
+ {7,0,3}, {3,1,3}, {1,1,3}, {5,1,3},
+ {2,1,3}, {4,0,3}, {4,1,3}, {7,3,0},
+ {3,2,0}, {5,1,3}, {7,3,0}, {3,1,3},
+ {4,1,3}, {6,1,3}, {2,1,3}, {1,1,3},
+ {5,1,3}, {7,1,3}, {0,1,5}, {7,0,5},
+ {6,1,3}, {2,2,0}, {6,0,5}, {0,2,0},
+ /* hat #2 in metatile #3 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #3 (type P) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #4 (type F) */
+ {1,0,4}, {-1,-1,-1}, {0,0,5}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,4}, {5,0,4}, {2,0,4},
+ {0,0,5}, {3,0,4}, {1,0,4}, {5,0,4},
+ {2,0,4}, {1,2,0}, {4,0,4}, {6,2,0},
+ {3,1,4}, {5,0,4}, {6,2,0}, {3,0,4},
+ {4,0,4}, {6,0,4}, {2,0,4}, {1,0,4},
+ {5,0,4}, {7,0,4}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,4}, {2,1,4}, {-1,-1,-1}, {0,1,4},
+ /* hat #1 in metatile #4 (type F) */
+ {1,1,4}, {-1,-1,-1}, {7,0,4}, {-1,-1,-1},
+ {-1,-1,-1}, {0,1,4}, {5,1,4}, {2,1,4},
+ {7,0,4}, {3,1,4}, {1,1,4}, {5,1,4},
+ {2,1,4}, {4,0,4}, {4,1,4}, {7,2,0},
+ {3,1,0}, {5,1,4}, {7,2,0}, {3,1,4},
+ {4,1,4}, {6,1,4}, {2,1,4}, {1,1,4},
+ {5,1,4}, {7,1,4}, {-1,-1,-1}, {7,1,8},
+ {6,1,4}, {2,1,0}, {6,1,8}, {0,1,0},
+ /* hat #2 in metatile #4 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #4 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #5 (type F) */
+ {1,0,5}, {2,0,4}, {-1,-1,-1}, {0,0,4},
+ {0,2,0}, {0,0,5}, {5,0,5}, {2,0,5},
+ {-1,-1,-1}, {3,0,5}, {1,0,5}, {5,0,5},
+ {2,0,5}, {-1,-1,-1}, {4,0,5}, {-1,-1,-1},
+ {3,1,5}, {5,0,5}, {-1,-1,-1}, {3,0,5},
+ {4,0,5}, {6,0,5}, {2,0,5}, {1,0,5},
+ {5,0,5}, {7,0,5}, {0,2,0}, {7,1,3},
+ {6,0,5}, {2,1,5}, {6,1,3}, {0,1,5},
+ /* hat #1 in metatile #5 (type F) */
+ {1,1,5}, {1,1,3}, {7,0,5}, {6,1,3},
+ {0,1,1}, {0,1,5}, {5,1,5}, {2,1,5},
+ {7,0,5}, {3,1,5}, {1,1,5}, {5,1,5},
+ {2,1,5}, {4,0,5}, {4,1,5}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,5}, {-1,-1,-1}, {3,1,5},
+ {4,1,5}, {6,1,5}, {2,1,5}, {1,1,5},
+ {5,1,5}, {7,1,5}, {0,1,1}, {7,1,6},
+ {6,1,5}, {-1,-1,-1}, {6,1,6}, {-1,-1,-1},
+ /* hat #2 in metatile #5 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #5 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #6 (type F) */
+ {1,0,6}, {-1,-1,-1}, {0,0,7}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,6}, {5,0,6}, {2,0,6},
+ {0,0,7}, {3,0,6}, {1,0,6}, {5,0,6},
+ {2,0,6}, {1,2,1}, {4,0,6}, {6,2,1},
+ {3,1,6}, {5,0,6}, {6,2,1}, {3,0,6},
+ {4,0,6}, {6,0,6}, {2,0,6}, {1,0,6},
+ {5,0,6}, {7,0,6}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,6}, {2,1,6}, {-1,-1,-1}, {0,1,6},
+ /* hat #1 in metatile #6 (type F) */
+ {1,1,6}, {-1,-1,-1}, {7,0,6}, {-1,-1,-1},
+ {-1,-1,-1}, {0,1,6}, {5,1,6}, {2,1,6},
+ {7,0,6}, {3,1,6}, {1,1,6}, {5,1,6},
+ {2,1,6}, {4,0,6}, {4,1,6}, {7,2,1},
+ {3,1,1}, {5,1,6}, {7,2,1}, {3,1,6},
+ {4,1,6}, {6,1,6}, {2,1,6}, {1,1,6},
+ {5,1,6}, {7,1,6}, {-1,-1,-1}, {7,1,5},
+ {6,1,6}, {2,1,1}, {6,1,5}, {0,1,1},
+ /* hat #2 in metatile #6 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #6 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #7 (type F) */
+ {1,0,7}, {2,0,6}, {-1,-1,-1}, {0,0,6},
+ {0,2,1}, {0,0,7}, {5,0,7}, {2,0,7},
+ {-1,-1,-1}, {3,0,7}, {1,0,7}, {5,0,7},
+ {2,0,7}, {-1,-1,-1}, {4,0,7}, {-1,-1,-1},
+ {3,1,7}, {5,0,7}, {-1,-1,-1}, {3,0,7},
+ {4,0,7}, {6,0,7}, {2,0,7}, {1,0,7},
+ {5,0,7}, {7,0,7}, {0,2,1}, {7,1,10},
+ {6,0,7}, {2,1,7}, {6,1,10}, {0,1,7},
+ /* hat #1 in metatile #7 (type F) */
+ {1,1,7}, {1,1,10}, {7,0,7}, {6,1,10},
+ {-1,-1,-1}, {0,1,7}, {5,1,7}, {2,1,7},
+ {7,0,7}, {3,1,7}, {1,1,7}, {5,1,7},
+ {2,1,7}, {4,0,7}, {4,1,7}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,7}, {-1,-1,-1}, {3,1,7},
+ {4,1,7}, {6,1,7}, {2,1,7}, {1,1,7},
+ {5,1,7}, {7,1,7}, {-1,-1,-1}, {-1,-1,-1},
+ {6,1,7}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #2 in metatile #7 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #7 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #8 (type F) */
+ {1,0,8}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,8}, {5,0,8}, {2,0,8},
+ {-1,-1,-1}, {3,0,8}, {1,0,8}, {5,0,8},
+ {2,0,8}, {-1,-1,-1}, {4,0,8}, {-1,-1,-1},
+ {3,1,8}, {5,0,8}, {-1,-1,-1}, {3,0,8},
+ {4,0,8}, {6,0,8}, {2,0,8}, {1,0,8},
+ {5,0,8}, {7,0,8}, {-1,-1,-1}, {7,1,2},
+ {6,0,8}, {2,1,8}, {6,1,2}, {0,1,8},
+ /* hat #1 in metatile #8 (type F) */
+ {1,1,8}, {1,1,2}, {7,0,8}, {6,1,2},
+ {0,1,0}, {0,1,8}, {5,1,8}, {2,1,8},
+ {7,0,8}, {3,1,8}, {1,1,8}, {5,1,8},
+ {2,1,8}, {4,0,8}, {4,1,8}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,8}, {-1,-1,-1}, {3,1,8},
+ {4,1,8}, {6,1,8}, {2,1,8}, {1,1,8},
+ {5,1,8}, {7,1,8}, {0,1,0}, {7,1,4},
+ {6,1,8}, {-1,-1,-1}, {6,1,4}, {-1,-1,-1},
+ /* hat #2 in metatile #8 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #8 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #9 (type F) */
+ {1,0,9}, {2,0,10}, {-1,-1,-1}, {0,0,10},
+ {3,0,1}, {0,0,9}, {5,0,9}, {2,0,9},
+ {-1,-1,-1}, {3,0,9}, {1,0,9}, {5,0,9},
+ {2,0,9}, {-1,-1,-1}, {4,0,9}, {-1,-1,-1},
+ {3,1,9}, {5,0,9}, {-1,-1,-1}, {3,0,9},
+ {4,0,9}, {6,0,9}, {2,0,9}, {1,0,9},
+ {5,0,9}, {7,0,9}, {3,0,1}, {4,0,1},
+ {6,0,9}, {2,1,9}, {0,0,3}, {0,1,9},
+ /* hat #1 in metatile #9 (type F) */
+ {1,1,9}, {2,0,3}, {7,0,9}, {0,0,3},
+ {3,0,0}, {0,1,9}, {5,1,9}, {2,1,9},
+ {7,0,9}, {3,1,9}, {1,1,9}, {5,1,9},
+ {2,1,9}, {4,0,9}, {4,1,9}, {-1,-1,-1},
+ {-1,-1,-1}, {5,1,9}, {-1,-1,-1}, {3,1,9},
+ {4,1,9}, {6,1,9}, {2,1,9}, {1,1,9},
+ {5,1,9}, {7,1,9}, {3,0,0}, {4,0,0},
+ {6,1,9}, {-1,-1,-1}, {0,0,2}, {-1,-1,-1},
+ /* hat #2 in metatile #9 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #9 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #0 in metatile #10 (type F) */
+ {1,0,10}, {-1,-1,-1}, {0,0,9}, {-1,-1,-1},
+ {-1,-1,-1}, {0,0,10}, {5,0,10}, {2,0,10},
+ {0,0,9}, {3,0,10}, {1,0,10}, {5,0,10},
+ {2,0,10}, {2,0,1}, {4,0,10}, {0,0,1},
+ {3,1,10}, {5,0,10}, {0,0,1}, {3,0,10},
+ {4,0,10}, {6,0,10}, {2,0,10}, {1,0,10},
+ {5,0,10}, {7,0,10}, {-1,-1,-1}, {-1,-1,-1},
+ {6,0,10}, {2,1,10}, {-1,-1,-1}, {0,1,10},
+ /* hat #1 in metatile #10 (type F) */
+ {1,1,10}, {-1,-1,-1}, {7,0,10}, {-1,-1,-1},
+ {0,1,7}, {0,1,10}, {5,1,10}, {2,1,10},
+ {7,0,10}, {3,1,10}, {1,1,10}, {5,1,10},
+ {2,1,10}, {4,0,10}, {4,1,10}, {7,3,1},
+ {3,2,1}, {5,1,10}, {7,3,1}, {3,1,10},
+ {4,1,10}, {6,1,10}, {2,1,10}, {1,1,10},
+ {5,1,10}, {7,1,10}, {0,1,7}, {7,0,7},
+ {6,1,10}, {2,2,1}, {6,0,7}, {0,2,1},
+ /* hat #2 in metatile #10 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ /* hat #3 in metatile #10 (type F) does not exist */
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+ {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1}, {-1,-1,-1},
+};
+static const KitemapEntry *const kitemap[] = {
+ kitemap_H,
+ kitemap_T,
+ kitemap_P,
+ kitemap_F,
+};
+
+static const MetamapEntry metamap_H[] = {
+ /* 0, 0 -> */ {0, 0}, /* no alternatives */
+ /* 1, 0 -> */ {1, 0}, /* no alternatives */
+ /* 2, 0 -> */ {2, 0}, /* no alternatives */
+ /* 3, 0 -> */ {3, 0}, /* no alternatives */
+ /* 4, 0 -> */ {3, 4},
+ /* 5, 0 -> */ {2, 8},
+ /* 6, 0 -> */ {3, 3},
+ /* 7, 0 -> */ {8, 4},
+ /* 8, 0 -> */ {9, 8},
+ /* 9, 0 -> */ {9, 4},
+ /* 10, 0 -> */ {8, 1},
+ /* 11, 0 -> */ {10, 5},
+ /* 12, 0 -> */ {5, 3},
+ /* 0, 1 -> */ {0, 1}, /* no alternatives */
+ /* 1, 1 -> */ {1, 1}, /* no alternatives */
+ /* 2, 1 -> */ {2, 1}, /* no alternatives */
+ /* 3, 1 -> */ {3, 1}, /* no alternatives */
+ /* 4, 1 -> */ {2, 9},
+ /* 5, 1 -> */ {2, 3},
+ /* 6, 1 -> */ {2, 6},
+ /* 7, 1 -> */ {10, 4},
+ /* 8, 1 -> */ {6, 3},
+ /* 9, 1 -> */ {9, 9},
+ /* 10, 1 -> */ {6, 10},
+ /* 11, 1 -> */ {4, 3},
+ /* 12, 1 -> */ {6, 6},
+ /* 0, 2 -> */ {0, 2}, /* no alternatives */
+ /* 1, 2 -> */ {1, 2}, /* no alternatives */
+ /* 2, 2 -> */ {2, 2}, /* no alternatives */
+ /* 3, 2 -> */ {3, 2}, /* no alternatives */
+ /* 4, 2 -> */ {3, 5},
+ /* 5, 2 -> */ {2, 12},
+ /* 6, 2 -> */ {1, 3},
+ /* 7, 2 -> */ {8, 5},
+ /* 8, 2 -> */ {9, 12},
+ /* 9, 2 -> */ {9, 5},
+ /* 10, 2 -> */ {12, 0},
+ /* 11, 2 -> */ {5, 6},
+ /* 12, 2 -> */ {11, 1},
+ /* 0, 3 -> */ {0, 3}, /* no alternatives */
+ /* 1, 3 -> */ {6, 2},
+ /* 2, 3 -> */ {5, 1},
+ /* 3, 3 -> */ {6, 0},
+ /* 4, 3 -> */ {12, 2},
+ /* 5, 3 -> */ {10, 2},
+ /* 6, 3 -> */ {10, 0},
+ /* 7, 3 -> */ {-1,-1}, /* does not exist */
+ /* 8, 3 -> */ {-1,-1}, /* does not exist */
+ /* 9, 3 -> */ {-1,-1}, /* does not exist */
+ /* 10, 3 -> */ {-1,-1}, /* does not exist */
+ /* 11, 3 -> */ {-1,-1}, /* does not exist */
+ /* 12, 3 -> */ {-1,-1}, /* does not exist */
+ /* 0, 4 -> */ {0, 4}, /* no alternatives */
+ /* 1, 4 -> */ {1, 4}, /* no alternatives */
+ /* 2, 4 -> */ {2, 4}, /* no alternatives */
+ /* 3, 4 -> */ {4, 0},
+ /* 4, 4 -> */ {4, 4}, /* no alternatives */
+ /* 5, 4 -> */ {5, 7},
+ /* 6, 4 -> */ {6, 4}, /* no alternatives */
+ /* 7, 4 -> */ {4, 9},
+ /* 8, 4 -> */ {6, 7},
+ /* 9, 4 -> */ {9, 0},
+ /* 10, 4 -> */ {8, 9},
+ /* 11, 4 -> */ {-1,-1}, /* does not exist */
+ /* 12, 4 -> */ {-1,-1}, /* does not exist */
+ /* 0, 5 -> */ {0, 5}, /* no alternatives */
+ /* 1, 5 -> */ {1, 5}, /* no alternatives */
+ /* 2, 5 -> */ {2, 5}, /* no alternatives */
+ /* 3, 5 -> */ {4, 2},
+ /* 4, 5 -> */ {4, 5}, /* no alternatives */
+ /* 5, 5 -> */ {5, 11},
+ /* 6, 5 -> */ {6, 5}, /* no alternatives */
+ /* 7, 5 -> */ {4, 8},
+ /* 8, 5 -> */ {6, 11},
+ /* 9, 5 -> */ {9, 2},
+ /* 10, 5 -> */ {8, 8},
+ /* 11, 5 -> */ {-1,-1}, /* does not exist */
+ /* 12, 5 -> */ {-1,-1}, /* does not exist */
+ /* 0, 6 -> */ {0, 6}, /* no alternatives */
+ /* 1, 6 -> */ {1, 6}, /* no alternatives */
+ /* 2, 6 -> */ {6, 1},
+ /* 3, 6 -> */ {3, 6}, /* no alternatives */
+ /* 4, 6 -> */ {4, 6}, /* no alternatives */
+ /* 5, 6 -> */ {8, 12},
+ /* 6, 6 -> */ {12, 1},
+ /* 7, 6 -> */ {10, 1},
+ /* 8, 6 -> */ {4, 12},
+ /* 9, 6 -> */ {9, 6}, /* no alternatives */
+ /* 10, 6 -> */ {5, 10},
+ /* 11, 6 -> */ {-1,-1}, /* does not exist */
+ /* 12, 6 -> */ {-1,-1}, /* does not exist */
+ /* 0, 7 -> */ {0, 7}, /* no alternatives */
+ /* 1, 7 -> */ {1, 7}, /* no alternatives */
+ /* 2, 7 -> */ {2, 7}, /* no alternatives */
+ /* 3, 7 -> */ {3, 7}, /* no alternatives */
+ /* 4, 7 -> */ {4, 7}, /* no alternatives */
+ /* 5, 7 -> */ {5, 4},
+ /* 6, 7 -> */ {7, 0},
+ /* 7, 7 -> */ {10, 8},
+ /* 8, 7 -> */ {8, 7}, /* no alternatives */
+ /* 9, 7 -> */ {9, 7}, /* no alternatives */
+ /* 10, 7 -> */ {10, 7}, /* no alternatives */
+ /* 11, 7 -> */ {-1,-1}, /* does not exist */
+ /* 12, 7 -> */ {-1,-1}, /* does not exist */
+ /* 0, 8 -> */ {0, 8}, /* no alternatives */
+ /* 1, 8 -> */ {1, 8}, /* no alternatives */
+ /* 2, 8 -> */ {5, 0},
+ /* 3, 8 -> */ {3, 8}, /* no alternatives */
+ /* 4, 8 -> */ {7, 5},
+ /* 5, 8 -> */ {5, 8}, /* no alternatives */
+ /* 6, 8 -> */ {6, 8}, /* no alternatives */
+ /* 7, 8 -> */ {7, 8}, /* no alternatives */
+ /* 8, 8 -> */ {11, 0},
+ /* 9, 8 -> */ {8, 0},
+ /* 10, 8 -> */ {7, 7},
+ /* 11, 8 -> */ {-1,-1}, /* does not exist */
+ /* 12, 8 -> */ {-1,-1}, /* does not exist */
+ /* 0, 9 -> */ {0, 9}, /* no alternatives */
+ /* 1, 9 -> */ {1, 9}, /* no alternatives */
+ /* 2, 9 -> */ {4, 1},
+ /* 3, 9 -> */ {3, 9}, /* no alternatives */
+ /* 4, 9 -> */ {7, 4},
+ /* 5, 9 -> */ {5, 9}, /* no alternatives */
+ /* 6, 9 -> */ {6, 9}, /* no alternatives */
+ /* 7, 9 -> */ {7, 9}, /* no alternatives */
+ /* 8, 9 -> */ {7, 1},
+ /* 9, 9 -> */ {9, 1},
+ /* 10, 9 -> */ {7, 10},
+ /* 11, 9 -> */ {-1,-1}, /* does not exist */
+ /* 12, 9 -> */ {-1,-1}, /* does not exist */
+ /* 0, 10 -> */ {0, 10}, /* no alternatives */
+ /* 1, 10 -> */ {1, 10}, /* no alternatives */
+ /* 2, 10 -> */ {2, 10}, /* no alternatives */
+ /* 3, 10 -> */ {3, 10}, /* no alternatives */
+ /* 4, 10 -> */ {4, 10}, /* no alternatives */
+ /* 5, 10 -> */ {10, 6},
+ /* 6, 10 -> */ {7, 6},
+ /* 7, 10 -> */ {10, 9},
+ /* 8, 10 -> */ {8, 10}, /* no alternatives */
+ /* 9, 10 -> */ {9, 10}, /* no alternatives */
+ /* 10, 10 -> */ {10, 10}, /* no alternatives */
+ /* 11, 10 -> */ {-1,-1}, /* does not exist */
+ /* 12, 10 -> */ {-1,-1}, /* does not exist */
+ /* 0, 11 -> */ {0, 11}, /* no alternatives */
+ /* 1, 11 -> */ {1, 11}, /* no alternatives */
+ /* 2, 11 -> */ {2, 11}, /* no alternatives */
+ /* 3, 11 -> */ {3, 11}, /* no alternatives */
+ /* 4, 11 -> */ {4, 11}, /* no alternatives */
+ /* 5, 11 -> */ {5, 5},
+ /* 6, 11 -> */ {7, 2},
+ /* 7, 11 -> */ {10, 12},
+ /* 8, 11 -> */ {8, 11}, /* no alternatives */
+ /* 9, 11 -> */ {9, 11}, /* no alternatives */
+ /* 10, 11 -> */ {10, 11}, /* no alternatives */
+ /* 11, 11 -> */ {-1,-1}, /* does not exist */
+ /* 12, 11 -> */ {-1,-1}, /* does not exist */
+ /* 0, 12 -> */ {0, 12}, /* no alternatives */
+ /* 1, 12 -> */ {1, 12}, /* no alternatives */
+ /* 2, 12 -> */ {5, 2},
+ /* 3, 12 -> */ {3, 12}, /* no alternatives */
+ /* 4, 12 -> */ {8, 6},
+ /* 5, 12 -> */ {5, 12}, /* no alternatives */
+ /* 6, 12 -> */ {6, 12}, /* no alternatives */
+ /* 7, 12 -> */ {7, 12}, /* no alternatives */
+ /* 8, 12 -> */ {11, 2},
+ /* 9, 12 -> */ {8, 2},
+ /* 10, 12 -> */ {7, 11},
+ /* 11, 12 -> */ {-1,-1}, /* does not exist */
+ /* 12, 12 -> */ {-1,-1}, /* does not exist */
+};
+static const MetamapEntry metamap_T[] = {
+ /* 0, 0 -> */ {0, 0}, /* no alternatives */
+ /* 1, 0 -> */ {1, 0}, /* no alternatives */
+ /* 2, 0 -> */ {2, 0}, /* no alternatives */
+ /* 3, 0 -> */ {3, 0}, /* no alternatives */
+ /* 4, 0 -> */ {3, 3},
+ /* 5, 0 -> */ {3, 1},
+ /* 6, 0 -> */ {2, 2},
+ /* 7, 0 -> */ {8, 3},
+ /* 8, 0 -> */ {9, 1},
+ /* 9, 0 -> */ {9, 3},
+ /* 10, 0 -> */ {4, 6},
+ /* 11, 0 -> */ {4, 4},
+ /* 12, 0 -> */ {6, 2},
+ /* 0, 1 -> */ {0, 1}, /* no alternatives */
+ /* 1, 1 -> */ {1, 1}, /* no alternatives */
+ /* 2, 1 -> */ {2, 1}, /* no alternatives */
+ /* 3, 1 -> */ {5, 0},
+ /* 4, 1 -> */ {4, 1}, /* no alternatives */
+ /* 5, 1 -> */ {8, 4},
+ /* 6, 1 -> */ {6, 1}, /* no alternatives */
+ /* 7, 1 -> */ {6, 5},
+ /* 8, 1 -> */ {11, 0},
+ /* 9, 1 -> */ {8, 0},
+ /* 10, 1 -> */ {5, 5},
+ /* 11, 1 -> */ {-1,-1}, /* does not exist */
+ /* 12, 1 -> */ {-1,-1}, /* does not exist */
+ /* 0, 2 -> */ {0, 2}, /* no alternatives */
+ /* 1, 2 -> */ {1, 2}, /* no alternatives */
+ /* 2, 2 -> */ {6, 0},
+ /* 3, 2 -> */ {3, 2}, /* no alternatives */
+ /* 4, 2 -> */ {4, 2}, /* no alternatives */
+ /* 5, 2 -> */ {5, 4},
+ /* 6, 2 -> */ {12, 0},
+ /* 7, 2 -> */ {10, 0},
+ /* 8, 2 -> */ {6, 4},
+ /* 9, 2 -> */ {9, 2}, /* no alternatives */
+ /* 10, 2 -> */ {8, 6},
+ /* 11, 2 -> */ {-1,-1}, /* does not exist */
+ /* 12, 2 -> */ {-1,-1}, /* does not exist */
+ /* 0, 3 -> */ {0, 3}, /* no alternatives */
+ /* 1, 3 -> */ {1, 3}, /* no alternatives */
+ /* 2, 3 -> */ {2, 3}, /* no alternatives */
+ /* 3, 3 -> */ {4, 0},
+ /* 4, 3 -> */ {4, 3}, /* no alternatives */
+ /* 5, 3 -> */ {8, 5},
+ /* 6, 3 -> */ {6, 3}, /* no alternatives */
+ /* 7, 3 -> */ {6, 6},
+ /* 8, 3 -> */ {4, 5},
+ /* 9, 3 -> */ {9, 0},
+ /* 10, 3 -> */ {5, 6},
+ /* 11, 3 -> */ {-1,-1}, /* does not exist */
+ /* 12, 3 -> */ {-1,-1}, /* does not exist */
+ /* 0, 4 -> */ {0, 4}, /* no alternatives */
+ /* 1, 4 -> */ {1, 4}, /* no alternatives */
+ /* 2, 4 -> */ {2, 4}, /* no alternatives */
+ /* 3, 4 -> */ {3, 4}, /* no alternatives */
+ /* 4, 4 -> */ {8, 1},
+ /* 5, 4 -> */ {5, 2},
+ /* 6, 4 -> */ {8, 2},
+ /* 7, 4 -> */ {7, 4}, /* no alternatives */
+ /* 8, 4 -> */ {5, 1},
+ /* 9, 4 -> */ {9, 4}, /* no alternatives */
+ /* 10, 4 -> */ {10, 4}, /* no alternatives */
+ /* 11, 4 -> */ {-1,-1}, /* does not exist */
+ /* 12, 4 -> */ {-1,-1}, /* does not exist */
+ /* 0, 5 -> */ {0, 5}, /* no alternatives */
+ /* 1, 5 -> */ {1, 5}, /* no alternatives */
+ /* 2, 5 -> */ {2, 5}, /* no alternatives */
+ /* 3, 5 -> */ {3, 5}, /* no alternatives */
+ /* 4, 5 -> */ {7, 0},
+ /* 5, 5 -> */ {10, 1},
+ /* 6, 5 -> */ {7, 1},
+ /* 7, 5 -> */ {7, 5}, /* no alternatives */
+ /* 8, 5 -> */ {5, 3},
+ /* 9, 5 -> */ {9, 5}, /* no alternatives */
+ /* 10, 5 -> */ {10, 5}, /* no alternatives */
+ /* 11, 5 -> */ {-1,-1}, /* does not exist */
+ /* 12, 5 -> */ {-1,-1}, /* does not exist */
+ /* 0, 6 -> */ {0, 6}, /* no alternatives */
+ /* 1, 6 -> */ {1, 6}, /* no alternatives */
+ /* 2, 6 -> */ {2, 6}, /* no alternatives */
+ /* 3, 6 -> */ {3, 6}, /* no alternatives */
+ /* 4, 6 -> */ {7, 2},
+ /* 5, 6 -> */ {10, 3},
+ /* 6, 6 -> */ {7, 3},
+ /* 7, 6 -> */ {7, 6}, /* no alternatives */
+ /* 8, 6 -> */ {10, 2},
+ /* 9, 6 -> */ {9, 6}, /* no alternatives */
+ /* 10, 6 -> */ {10, 6}, /* no alternatives */
+ /* 11, 6 -> */ {-1,-1}, /* does not exist */
+ /* 12, 6 -> */ {-1,-1}, /* does not exist */
+};
+static const MetamapEntry metamap_P[] = {
+ /* 0, 0 -> */ {0, 0}, /* no alternatives */
+ /* 1, 0 -> */ {1, 0}, /* no alternatives */
+ /* 2, 0 -> */ {2, 0}, /* no alternatives */
+ /* 3, 0 -> */ {3, 0}, /* no alternatives */
+ /* 4, 0 -> */ {3, 4},
+ /* 5, 0 -> */ {2, 5},
+ /* 6, 0 -> */ {2, 3},
+ /* 7, 0 -> */ {8, 4},
+ /* 8, 0 -> */ {9, 5},
+ /* 9, 0 -> */ {9, 4},
+ /* 10, 0 -> */ {4, 9},
+ /* 11, 0 -> */ {4, 8},
+ /* 12, 0 -> */ {6, 3},
+ /* 0, 1 -> */ {0, 1}, /* no alternatives */
+ /* 1, 1 -> */ {1, 1}, /* no alternatives */
+ /* 2, 1 -> */ {2, 1}, /* no alternatives */
+ /* 3, 1 -> */ {3, 1}, /* no alternatives */
+ /* 4, 1 -> */ {2, 10},
+ /* 5, 1 -> */ {3, 2},
+ /* 6, 1 -> */ {2, 4},
+ /* 7, 1 -> */ {8, 10},
+ /* 8, 1 -> */ {9, 2},
+ /* 9, 1 -> */ {9, 10},
+ /* 10, 1 -> */ {7, 4},
+ /* 11, 1 -> */ {8, 2},
+ /* 12, 1 -> */ {6, 4},
+ /* 0, 2 -> */ {0, 2}, /* no alternatives */
+ /* 1, 2 -> */ {1, 2}, /* no alternatives */
+ /* 2, 2 -> */ {2, 2}, /* no alternatives */
+ /* 3, 2 -> */ {5, 1},
+ /* 4, 2 -> */ {4, 2}, /* no alternatives */
+ /* 5, 2 -> */ {8, 6},
+ /* 6, 2 -> */ {6, 2}, /* no alternatives */
+ /* 7, 2 -> */ {6, 7},
+ /* 8, 2 -> */ {4, 6},
+ /* 9, 2 -> */ {8, 1},
+ /* 10, 2 -> */ {5, 7},
+ /* 11, 2 -> */ {-1,-1}, /* does not exist */
+ /* 12, 2 -> */ {-1,-1}, /* does not exist */
+ /* 0, 3 -> */ {0, 3}, /* no alternatives */
+ /* 1, 3 -> */ {1, 3}, /* no alternatives */
+ /* 2, 3 -> */ {6, 0},
+ /* 3, 3 -> */ {3, 3}, /* no alternatives */
+ /* 4, 3 -> */ {4, 3}, /* no alternatives */
+ /* 5, 3 -> */ {5, 8},
+ /* 6, 3 -> */ {12, 0},
+ /* 7, 3 -> */ {10, 0},
+ /* 8, 3 -> */ {6, 8},
+ /* 9, 3 -> */ {9, 3}, /* no alternatives */
+ /* 10, 3 -> */ {8, 9},
+ /* 11, 3 -> */ {-1,-1}, /* does not exist */
+ /* 12, 3 -> */ {-1,-1}, /* does not exist */
+ /* 0, 4 -> */ {0, 4}, /* no alternatives */
+ /* 1, 4 -> */ {1, 4}, /* no alternatives */
+ /* 2, 4 -> */ {6, 1},
+ /* 3, 4 -> */ {4, 0},
+ /* 4, 4 -> */ {4, 4}, /* no alternatives */
+ /* 5, 4 -> */ {5, 6},
+ /* 6, 4 -> */ {12, 1},
+ /* 7, 4 -> */ {6, 9},
+ /* 8, 4 -> */ {6, 6},
+ /* 9, 4 -> */ {9, 0},
+ /* 10, 4 -> */ {5, 9},
+ /* 11, 4 -> */ {-1,-1}, /* does not exist */
+ /* 12, 4 -> */ {-1,-1}, /* does not exist */
+ /* 0, 5 -> */ {0, 5}, /* no alternatives */
+ /* 1, 5 -> */ {1, 5}, /* no alternatives */
+ /* 2, 5 -> */ {5, 0},
+ /* 3, 5 -> */ {3, 5}, /* no alternatives */
+ /* 4, 5 -> */ {8, 8},
+ /* 5, 5 -> */ {5, 5}, /* no alternatives */
+ /* 6, 5 -> */ {6, 5}, /* no alternatives */
+ /* 7, 5 -> */ {7, 5}, /* no alternatives */
+ /* 8, 5 -> */ {11, 0},
+ /* 9, 5 -> */ {8, 0},
+ /* 10, 5 -> */ {7, 6},
+ /* 11, 5 -> */ {-1,-1}, /* does not exist */
+ /* 12, 5 -> */ {-1,-1}, /* does not exist */
+ /* 0, 6 -> */ {0, 6}, /* no alternatives */
+ /* 1, 6 -> */ {1, 6}, /* no alternatives */
+ /* 2, 6 -> */ {2, 6}, /* no alternatives */
+ /* 3, 6 -> */ {3, 6}, /* no alternatives */
+ /* 4, 6 -> */ {11, 1},
+ /* 5, 6 -> */ {5, 4},
+ /* 6, 6 -> */ {7, 0},
+ /* 7, 6 -> */ {10, 5},
+ /* 8, 6 -> */ {5, 2},
+ /* 9, 6 -> */ {9, 6}, /* no alternatives */
+ /* 10, 6 -> */ {10, 6}, /* no alternatives */
+ /* 11, 6 -> */ {-1,-1}, /* does not exist */
+ /* 12, 6 -> */ {-1,-1}, /* does not exist */
+ /* 0, 7 -> */ {0, 7}, /* no alternatives */
+ /* 1, 7 -> */ {1, 7}, /* no alternatives */
+ /* 2, 7 -> */ {2, 7}, /* no alternatives */
+ /* 3, 7 -> */ {3, 7}, /* no alternatives */
+ /* 4, 7 -> */ {7, 1},
+ /* 5, 7 -> */ {10, 2},
+ /* 6, 7 -> */ {7, 2},
+ /* 7, 7 -> */ {7, 7}, /* no alternatives */
+ /* 8, 7 -> */ {4, 10},
+ /* 9, 7 -> */ {9, 7}, /* no alternatives */
+ /* 10, 7 -> */ {10, 7}, /* no alternatives */
+ /* 11, 7 -> */ {-1,-1}, /* does not exist */
+ /* 12, 7 -> */ {-1,-1}, /* does not exist */
+ /* 0, 8 -> */ {0, 8}, /* no alternatives */
+ /* 1, 8 -> */ {1, 8}, /* no alternatives */
+ /* 2, 8 -> */ {2, 8}, /* no alternatives */
+ /* 3, 8 -> */ {3, 8}, /* no alternatives */
+ /* 4, 8 -> */ {8, 5},
+ /* 5, 8 -> */ {5, 3},
+ /* 6, 8 -> */ {8, 3},
+ /* 7, 8 -> */ {7, 8}, /* no alternatives */
+ /* 8, 8 -> */ {4, 5},
+ /* 9, 8 -> */ {9, 8}, /* no alternatives */
+ /* 10, 8 -> */ {10, 8}, /* no alternatives */
+ /* 11, 8 -> */ {-1,-1}, /* does not exist */
+ /* 12, 8 -> */ {-1,-1}, /* does not exist */
+ /* 0, 9 -> */ {0, 9}, /* no alternatives */
+ /* 1, 9 -> */ {1, 9}, /* no alternatives */
+ /* 2, 9 -> */ {2, 9}, /* no alternatives */
+ /* 3, 9 -> */ {3, 9}, /* no alternatives */
+ /* 4, 9 -> */ {7, 3},
+ /* 5, 9 -> */ {10, 4},
+ /* 6, 9 -> */ {10, 1},
+ /* 7, 9 -> */ {10, 10},
+ /* 8, 9 -> */ {10, 3},
+ /* 9, 9 -> */ {9, 9}, /* no alternatives */
+ /* 10, 9 -> */ {10, 9}, /* no alternatives */
+ /* 11, 9 -> */ {-1,-1}, /* does not exist */
+ /* 12, 9 -> */ {-1,-1}, /* does not exist */
+ /* 0, 10 -> */ {0, 10}, /* no alternatives */
+ /* 1, 10 -> */ {1, 10}, /* no alternatives */
+ /* 2, 10 -> */ {4, 1},
+ /* 3, 10 -> */ {3, 10}, /* no alternatives */
+ /* 4, 10 -> */ {8, 7},
+ /* 5, 10 -> */ {5, 10}, /* no alternatives */
+ /* 6, 10 -> */ {6, 10}, /* no alternatives */
+ /* 7, 10 -> */ {7, 10}, /* no alternatives */
+ /* 8, 10 -> */ {4, 7},
+ /* 9, 10 -> */ {9, 1},
+ /* 10, 10 -> */ {7, 9},
+ /* 11, 10 -> */ {-1,-1}, /* does not exist */
+ /* 12, 10 -> */ {-1,-1}, /* does not exist */
+};
+static const MetamapEntry metamap_F[] = {
+ /* 0, 0 -> */ {0, 0}, /* no alternatives */
+ /* 1, 0 -> */ {1, 0}, /* no alternatives */
+ /* 2, 0 -> */ {2, 0}, /* no alternatives */
+ /* 3, 0 -> */ {3, 0}, /* no alternatives */
+ /* 4, 0 -> */ {3, 3},
+ /* 5, 0 -> */ {2, 4},
+ /* 6, 0 -> */ {2, 2},
+ /* 7, 0 -> */ {8, 3},
+ /* 8, 0 -> */ {9, 4},
+ /* 9, 0 -> */ {9, 3},
+ /* 10, 0 -> */ {4, 9},
+ /* 11, 0 -> */ {4, 8},
+ /* 12, 0 -> */ {6, 2},
+ /* 0, 1 -> */ {0, 1}, /* no alternatives */
+ /* 1, 1 -> */ {1, 1}, /* no alternatives */
+ /* 2, 1 -> */ {2, 1}, /* no alternatives */
+ /* 3, 1 -> */ {3, 1}, /* no alternatives */
+ /* 4, 1 -> */ {2, 10},
+ /* 5, 1 -> */ {2, 6},
+ /* 6, 1 -> */ {2, 3},
+ /* 7, 1 -> */ {8, 10},
+ /* 8, 1 -> */ {9, 6},
+ /* 9, 1 -> */ {9, 10},
+ /* 10, 1 -> */ {7, 3},
+ /* 11, 1 -> */ {8, 6},
+ /* 12, 1 -> */ {6, 3},
+ /* 0, 2 -> */ {0, 2}, /* no alternatives */
+ /* 1, 2 -> */ {1, 2}, /* no alternatives */
+ /* 2, 2 -> */ {6, 0},
+ /* 3, 2 -> */ {3, 2}, /* no alternatives */
+ /* 4, 2 -> */ {4, 2}, /* no alternatives */
+ /* 5, 2 -> */ {5, 8},
+ /* 6, 2 -> */ {12, 0},
+ /* 7, 2 -> */ {10, 0},
+ /* 8, 2 -> */ {6, 8},
+ /* 9, 2 -> */ {9, 2}, /* no alternatives */
+ /* 10, 2 -> */ {8, 9},
+ /* 11, 2 -> */ {-1,-1}, /* does not exist */
+ /* 12, 2 -> */ {-1,-1}, /* does not exist */
+ /* 0, 3 -> */ {0, 3}, /* no alternatives */
+ /* 1, 3 -> */ {1, 3}, /* no alternatives */
+ /* 2, 3 -> */ {6, 1},
+ /* 3, 3 -> */ {4, 0},
+ /* 4, 3 -> */ {4, 3}, /* no alternatives */
+ /* 5, 3 -> */ {5, 5},
+ /* 6, 3 -> */ {12, 1},
+ /* 7, 3 -> */ {6, 9},
+ /* 8, 3 -> */ {6, 5},
+ /* 9, 3 -> */ {9, 0},
+ /* 10, 3 -> */ {5, 9},
+ /* 11, 3 -> */ {-1,-1}, /* does not exist */
+ /* 12, 3 -> */ {-1,-1}, /* does not exist */
+ /* 0, 4 -> */ {0, 4}, /* no alternatives */
+ /* 1, 4 -> */ {1, 4}, /* no alternatives */
+ /* 2, 4 -> */ {5, 0},
+ /* 3, 4 -> */ {3, 4}, /* no alternatives */
+ /* 4, 4 -> */ {8, 8},
+ /* 5, 4 -> */ {5, 4}, /* no alternatives */
+ /* 6, 4 -> */ {6, 4}, /* no alternatives */
+ /* 7, 4 -> */ {7, 4}, /* no alternatives */
+ /* 8, 4 -> */ {11, 0},
+ /* 9, 4 -> */ {8, 0},
+ /* 10, 4 -> */ {7, 5},
+ /* 11, 4 -> */ {-1,-1}, /* does not exist */
+ /* 12, 4 -> */ {-1,-1}, /* does not exist */
+ /* 0, 5 -> */ {0, 5}, /* no alternatives */
+ /* 1, 5 -> */ {1, 5}, /* no alternatives */
+ /* 2, 5 -> */ {2, 5}, /* no alternatives */
+ /* 3, 5 -> */ {3, 5}, /* no alternatives */
+ /* 4, 5 -> */ {11, 1},
+ /* 5, 5 -> */ {5, 3},
+ /* 6, 5 -> */ {7, 0},
+ /* 7, 5 -> */ {10, 4},
+ /* 8, 5 -> */ {4, 6},
+ /* 9, 5 -> */ {9, 5}, /* no alternatives */
+ /* 10, 5 -> */ {10, 5}, /* no alternatives */
+ /* 11, 5 -> */ {-1,-1}, /* does not exist */
+ /* 12, 5 -> */ {-1,-1}, /* does not exist */
+ /* 0, 6 -> */ {0, 6}, /* no alternatives */
+ /* 1, 6 -> */ {1, 6}, /* no alternatives */
+ /* 2, 6 -> */ {5, 1},
+ /* 3, 6 -> */ {3, 6}, /* no alternatives */
+ /* 4, 6 -> */ {8, 5},
+ /* 5, 6 -> */ {5, 6}, /* no alternatives */
+ /* 6, 6 -> */ {6, 6}, /* no alternatives */
+ /* 7, 6 -> */ {7, 6}, /* no alternatives */
+ /* 8, 6 -> */ {4, 5},
+ /* 9, 6 -> */ {8, 1},
+ /* 10, 6 -> */ {7, 7},
+ /* 11, 6 -> */ {-1,-1}, /* does not exist */
+ /* 12, 6 -> */ {-1,-1}, /* does not exist */
+ /* 0, 7 -> */ {0, 7}, /* no alternatives */
+ /* 1, 7 -> */ {1, 7}, /* no alternatives */
+ /* 2, 7 -> */ {2, 7}, /* no alternatives */
+ /* 3, 7 -> */ {3, 7}, /* no alternatives */
+ /* 4, 7 -> */ {4, 7}, /* no alternatives */
+ /* 5, 7 -> */ {4, 10},
+ /* 6, 7 -> */ {7, 1},
+ /* 7, 7 -> */ {10, 6},
+ /* 8, 7 -> */ {8, 7}, /* no alternatives */
+ /* 9, 7 -> */ {9, 7}, /* no alternatives */
+ /* 10, 7 -> */ {10, 7}, /* no alternatives */
+ /* 11, 7 -> */ {-1,-1}, /* does not exist */
+ /* 12, 7 -> */ {-1,-1}, /* does not exist */
+ /* 0, 8 -> */ {0, 8}, /* no alternatives */
+ /* 1, 8 -> */ {1, 8}, /* no alternatives */
+ /* 2, 8 -> */ {2, 8}, /* no alternatives */
+ /* 3, 8 -> */ {3, 8}, /* no alternatives */
+ /* 4, 8 -> */ {8, 4},
+ /* 5, 8 -> */ {5, 2},
+ /* 6, 8 -> */ {8, 2},
+ /* 7, 8 -> */ {7, 8}, /* no alternatives */
+ /* 8, 8 -> */ {4, 4},
+ /* 9, 8 -> */ {9, 8}, /* no alternatives */
+ /* 10, 8 -> */ {10, 8}, /* no alternatives */
+ /* 11, 8 -> */ {-1,-1}, /* does not exist */
+ /* 12, 8 -> */ {-1,-1}, /* does not exist */
+ /* 0, 9 -> */ {0, 9}, /* no alternatives */
+ /* 1, 9 -> */ {1, 9}, /* no alternatives */
+ /* 2, 9 -> */ {2, 9}, /* no alternatives */
+ /* 3, 9 -> */ {3, 9}, /* no alternatives */
+ /* 4, 9 -> */ {7, 2},
+ /* 5, 9 -> */ {10, 3},
+ /* 6, 9 -> */ {10, 1},
+ /* 7, 9 -> */ {10, 10},
+ /* 8, 9 -> */ {10, 2},
+ /* 9, 9 -> */ {9, 9}, /* no alternatives */
+ /* 10, 9 -> */ {10, 9}, /* no alternatives */
+ /* 11, 9 -> */ {-1,-1}, /* does not exist */
+ /* 12, 9 -> */ {-1,-1}, /* does not exist */
+ /* 0, 10 -> */ {0, 10}, /* no alternatives */
+ /* 1, 10 -> */ {1, 10}, /* no alternatives */
+ /* 2, 10 -> */ {4, 1},
+ /* 3, 10 -> */ {3, 10}, /* no alternatives */
+ /* 4, 10 -> */ {5, 7},
+ /* 5, 10 -> */ {5, 10}, /* no alternatives */
+ /* 6, 10 -> */ {6, 10}, /* no alternatives */
+ /* 7, 10 -> */ {7, 10}, /* no alternatives */
+ /* 8, 10 -> */ {6, 7},
+ /* 9, 10 -> */ {9, 1},
+ /* 10, 10 -> */ {7, 9},
+ /* 11, 10 -> */ {-1,-1}, /* does not exist */
+ /* 12, 10 -> */ {-1,-1}, /* does not exist */
+};
+static const MetamapEntry *const metamap[] = {
+ metamap_H,
+ metamap_T,
+ metamap_P,
+ metamap_F,
+};
--- /dev/null
+++ b/hat.c
@@ -1,0 +1,1248 @@
+/*
+ * Code to generate patches of the aperiodic 'hat' tiling discovered
+ * in 2023.
+ *
+ * aux/doc/hats.html contains an explanation of the basic ideas of
+ * this algorithm, which can't really be put in a source file because
+ * it just has too many complicated diagrams. So read that first,
+ * because the comments in here will refer to it.
+ *
+ * Discoverers' website: https://cs.uwaterloo.ca/~csk/hat/
+ * Preprint of paper: https://arxiv.org/abs/2303.10798
+ */
+
+#include <assert.h>
+#include <math.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "puzzles.h"
+#include "hat.h"
+
+/*
+ * Coordinate system:
+ *
+ * The output of this code lives on the tiling known to grid.c as
+ * 'Kites', which can be viewed as a tiling of hexagons each of which
+ * is subdivided into six kites sharing their pointy vertex, or
+ * (equivalently) a tiling of equilateral triangles each subdivided
+ * into three kits sharing their blunt vertex.
+ *
+ * We express coordinates in this system relative to the basis (1, r)
+ * where r = (1 + sqrt(3)i) / 2 is a primitive 6th root of unity. This
+ * gives us a system in which two integer coordinates can address any
+ * grid point, provided we scale up so that the side length of the
+ * equilateral triangles in the tiling is 6.
+ */
+
+typedef struct Point {
+ int x, y; /* represents x + yr */
+} Point;
+
+static inline Point pointscale(int scale, Point a)
+{
+ Point r = { scale * a.x, scale * a.y };
+ return r;
+}
+
+static inline Point pointadd(Point a, Point b)
+{
+ Point r = { a.x + b.x, a.y + b.y };
+ return r;
+}
+
+/*
+ * We identify a single kite by the coordinates of its four vertices.
+ * This allows us to construct the coordinates of an adjacent kite by
+ * taking affine transformations of the original kite's vertices.
+ *
+ * This is a useful way to do it because it means that if you reflect
+ * the kite (by swapping its left and right vertices) then these
+ * transformations also perform in a reflected way. This will be
+ * useful in the code below that outputs the coordinates of each hat,
+ * because this way it can work by walking around its 8 kites using a
+ * fixed set of steps, and if the hat is reflected, then we just
+ * reflect the starting kite before doing that, and everything still
+ * works.
+ */
+
+typedef struct Kite {
+ Point centre, left, right, outer;
+} Kite;
+
+static inline Kite kite_left(Kite k)
+{
+ Kite r;
+ r.centre = k.centre;
+ r.right = k.left;
+ r.outer = pointadd(pointscale(2, k.left), pointscale(-1, k.outer));
+ r.left = pointadd(pointadd(k.centre, k.left), pointscale(-1, k.right));
+ return r;
+}
+
+static inline Kite kite_right(Kite k)
+{
+ Kite r;
+ r.centre = k.centre;
+ r.left = k.right;
+ r.outer = pointadd(pointscale(2, k.right), pointscale(-1, k.outer));
+ r.right = pointadd(pointadd(k.centre, k.right), pointscale(-1, k.left));
+ return r;
+}
+
+static inline Kite kite_forward_left(Kite k)
+{
+ Kite r;
+ r.outer = k.outer;
+ r.right = k.left;
+ r.centre = pointadd(pointscale(2, k.left), pointscale(-1, k.centre));
+ r.left = pointadd(pointadd(k.right, k.left), pointscale(-1, k.centre));
+ return r;
+}
+
+static inline Kite kite_forward_right(Kite k)
+{
+ Kite r;
+ r.outer = k.outer;
+ r.left = k.right;
+ r.centre = pointadd(pointscale(2, k.right), pointscale(-1, k.centre));
+ r.right = pointadd(pointadd(k.left, k.right), pointscale(-1, k.centre));
+ return r;
+}
+
+typedef enum KiteStep { KS_LEFT, KS_RIGHT, KS_F_LEFT, KS_F_RIGHT } KiteStep;
+
+static inline Kite kite_step(Kite k, KiteStep step)
+{
+ switch (step) {
+ case KS_LEFT: return kite_left(k);
+ case KS_RIGHT: return kite_right(k);
+ case KS_F_LEFT: return kite_forward_left(k);
+ default /* case KS_F_RIGHT */: return kite_forward_right(k);
+ }
+}
+
+/*
+ * Function to enumerate the kites in a rectangular region, in a
+ * serpentine-raster fashion so that every kite delivered shares an
+ * edge with a recent previous one.
+ */
+#define KE_NKEEP 3
+typedef struct KiteEnum {
+ /* Fields private to the enumerator */
+ int state;
+ int x, y, w, h;
+ unsigned curr_index;
+
+ /* Fields the client can legitimately read out */
+ Kite *curr;
+ Kite recent[KE_NKEEP];
+ unsigned last_index;
+ KiteStep last_step; /* step that got curr from recent[last_index] */
+} KiteEnum;
+
+static void first_kite(KiteEnum *s, int w, int h)
+{
+ Kite start = { {0,0}, {0, 3}, {3, 0}, {2, 2} };
+ size_t i;
+
+ for (i = 0; i < KE_NKEEP; i++)
+ s->recent[i] = start; /* initialise to *something* */
+ s->curr_index = 0;
+ s->curr = &s->recent[s->curr_index];
+ s->state = 1;
+ s->w = w;
+ s->h = h;
+ s->x = 0;
+ s->y = 0;
+}
+static bool next_kite(KiteEnum *s)
+{
+ unsigned lastbut1 = s->last_index;
+ s->last_index = s->curr_index;
+ s->curr_index = (s->curr_index + 1) % KE_NKEEP;
+ s->curr = &s->recent[s->curr_index];
+
+ switch (s->state) {
+ /* States 1,2,3 walk rightwards along the upper side of a
+ * horizontal grid line with a pointy kite end at the start
+ * point */
+ case 1:
+ s->last_step = KS_F_RIGHT;
+ s->state = 2;
+ break;
+
+ case 2:
+ if (s->x+1 >= s->w) {
+ s->last_step = KS_F_RIGHT;
+ s->state = 4;
+ break;
+ }
+ s->last_step = KS_RIGHT;
+ s->state = 3;
+ s->x++;
+ break;
+
+ case 3:
+ s->last_step = KS_RIGHT;
+ s->state = 1;
+ break;
+
+ /* State 4 is special: we've just moved up into a row below a
+ * grid line, but we can't produce the rightmost tile of that
+ * row because it's not adjacent any tile so far emitted. So
+ * instead, emit the second-rightmost tile, and next time,
+ * we'll emit the rightmost. */
+ case 4:
+ s->last_step = KS_LEFT;
+ s->state = 5;
+ break;
+
+ /* And now we have to emit the third-rightmost tile relative
+ * to the last but one tile we emitted (the one from state 2,
+ * not state 4). */
+ case 5:
+ s->last_step = KS_RIGHT;
+ s->last_index = lastbut1;
+ s->state = 6;
+ break;
+
+ /* Now states 6-8 handle the general case of walking leftwards
+ * along the lower side of a line, starting from a
+ * right-angled kite end. */
+ case 6:
+ if (s->x <= 0) {
+ if (s->y+1 >= s->h) {
+ s->state = 0;
+ return false;
+ }
+ s->last_step = KS_RIGHT;
+ s->state = 9;
+ s->y++;
+ break;
+ }
+ s->last_step = KS_F_RIGHT;
+ s->state = 7;
+ s->x--;
+ break;
+
+ case 7:
+ s->last_step = KS_RIGHT;
+ s->state = 8;
+ break;
+
+ case 8:
+ s->last_step = KS_RIGHT;
+ s->state = 6;
+ break;
+
+ /* States 9,10,11 walk rightwards along the upper side of a
+ * horizontal grid line with a right-angled kite end at the
+ * start point. This time there's no awkward transition from
+ * the previous row. */
+ case 9:
+ s->last_step = KS_RIGHT;
+ s->state = 10;
+ break;
+
+ case 10:
+ s->last_step = KS_RIGHT;
+ s->state = 11;
+ break;
+
+ case 11:
+ if (s->x+1 >= s->w) {
+ /* Another awkward transition to the next row, where we
+ * have to generate it based on the previous state-9 tile.
+ * But this time at least we generate the rightmost tile
+ * of the new row, so the next states will be simple. */
+ s->last_step = KS_F_RIGHT;
+ s->last_index = lastbut1;
+ s->state = 12;
+ break;
+ }
+ s->last_step = KS_F_RIGHT;
+ s->state = 9;
+ s->x++;
+ break;
+
+ /* States 12,13,14 walk leftwards along the upper edge of a
+ * horizontal grid line with a pointy kite end at the start
+ * point */
+ case 12:
+ s->last_step = KS_F_RIGHT;
+ s->state = 13;
+ break;
+
+ case 13:
+ if (s->x <= 0) {
+ if (s->y+1 >= s->h) {
+ s->state = 0;
+ return false;
+ }
+ s->last_step = KS_LEFT;
+ s->state = 1;
+ s->y++;
+ break;
+ }
+ s->last_step = KS_RIGHT;
+ s->state = 14;
+ s->x--;
+ break;
+
+ case 14:
+ s->last_step = KS_RIGHT;
+ s->state = 12;
+ break;
+
+ default:
+ return false;
+ }
+
+ *s->curr = kite_step(s->recent[s->last_index], s->last_step);
+ return true;
+}
+
+/*
+ * Assorted useful definitions.
+ */
+typedef enum TileType { TT_H, TT_T, TT_P, TT_F, TT_KITE, TT_HAT } TileType;
+static const char tilechars[] = "HTPF";
+
+#define HAT_KITES 8 /* number of kites in a hat */
+#define MT_MAXEXPAND 13 /* largest number of metatiles in any expansion */
+
+/*
+ * Definitions for the autogenerated hat-tables.h header file that
+ * defines all the lookup tables.
+ */
+typedef struct MetatilePossibleParent {
+ TileType type;
+ unsigned index;
+} MetatilePossibleParent;
+
+typedef struct KitemapEntry {
+ int kite, hat, meta; /* all -1 if impossible */
+} KitemapEntry;
+
+typedef struct MetamapEntry {
+ int meta, meta2;
+} MetamapEntry;
+
+static inline size_t kitemap_index(KiteStep step, unsigned kite,
+ unsigned hat, unsigned meta)
+{
+ return step + 4 * (kite + 8 * (hat + 4 * meta));
+}
+
+static inline size_t metamap_index(unsigned meta, unsigned meta2)
+{
+ return meta2 * MT_MAXEXPAND + meta;
+}
+
+/*
+ * The actual tables.
+ */
+#include "hat-tables.h"
+
+/*
+ * Coordinate system for tracking kites within a randomly selected
+ * part of the recursively expanded hat tiling.
+ *
+ * HatCoords will store an array of HatCoord, in little-endian
+ * arrangement. So hc->c[0] will always have type TT_KITE and index a
+ * single kite within a hat; hc->c[1] will have type TT_HAT and index
+ * a hat within a first-order metatile; hc->c[2] will be the smallest
+ * metatile containing this hat, and hc->c[3, 4, 5, ...] will be
+ * higher-order metatiles as needed.
+ *
+ * The last coordinate stored, hc->c[hc->nc-1], will have a tile type
+ * but no index (represented by index==-1). This means "we haven't
+ * decided yet what this level of metatile needs to be". If we need to
+ * refer to this level during the step_coords algorithm, we make it up
+ * at random, based on a table of what metatiles each type can
+ * possibly be part of, at what index.
+ */
+typedef struct HatCoord {
+ int index; /* index within that tile, or -1 if not yet known */
+ TileType type; /* type of this tile */
+} HatCoord;
+
+typedef struct HatCoords {
+ HatCoord *c;
+ size_t nc, csize;
+} HatCoords;
+
+static HatCoords *hc_new(void)
+{
+ HatCoords *hc = snew(HatCoords);
+ hc->nc = hc->csize = 0;
+ hc->c = NULL;
+ return hc;
+}
+
+static void hc_free(HatCoords *hc)
+{
+ if (hc) {
+ sfree(hc->c);
+ sfree(hc);
+ }
+}
+
+static void hc_make_space(HatCoords *hc, size_t size)
+{
+ if (hc->csize < size) {
+ hc->csize = hc->csize * 5 / 4 + 16;
+ if (hc->csize < size)
+ hc->csize = size;
+ hc->c = sresize(hc->c, hc->csize, HatCoord);
+ }
+}
+
+static HatCoords *hc_copy(HatCoords *hc_in)
+{
+ HatCoords *hc_out = hc_new();
+ hc_make_space(hc_out, hc_in->nc);
+ memcpy(hc_out->c, hc_in->c, hc_in->nc * sizeof(*hc_out->c));
+ hc_out->nc = hc_in->nc;
+ return hc_out;
+}
+
+/*
+ * HatCoordContext is the shared context of a whole run of the
+ * algorithm. Its 'prototype' HatCoords object represents the
+ * coordinates of the starting kite, and is extended as necessary; any
+ * other HatCoord that needs extending will copy the higher-order
+ * values from ctx->prototype as needed, so that once each choice has
+ * been made, it remains consistent.
+ *
+ * When we're inventing a random piece of tiling in the first place,
+ * we append to ctx->prototype by choosing a random (but legal)
+ * higher-level metatile for the current topmost one to turn out to be
+ * part of. When we're replaying a generation whose parameters are
+ * already stored, we don't have a random_state, and we make fixed
+ * decisions if not enough coordinates were provided.
+ *
+ * (Of course another approach would be to reject grid descriptions
+ * that didn't define enough coordinates! But that would involve a
+ * whole extra iteration over the whole grid region just for
+ * validation, and that seems like more timewasting than really
+ * needed. So we tolerate short descriptions, and do something
+ * deterministic with them.)
+ */
+
+typedef struct HatCoordContext {
+ random_state *rs;
+ HatCoords *prototype;
+} HatCoordContext;
+
+static void init_coords_random(HatCoordContext *ctx, random_state *rs)
+{
+ ctx->rs = rs;
+ ctx->prototype = hc_new();
+ hc_make_space(ctx->prototype, 3);
+ ctx->prototype->c[0].type = TT_KITE;
+ ctx->prototype->c[1].type = TT_HAT;
+ ctx->prototype->c[2].type = random_upto(rs, 4);
+ ctx->prototype->c[2].index = -1;
+ ctx->prototype->c[1].index = random_upto(
+ rs, hats_in_metatile[ctx->prototype->c[2].type]);
+ ctx->prototype->c[0].index = random_upto(rs, HAT_KITES);
+ ctx->prototype->nc = 3;
+}
+
+static inline int metatile_char_to_enum(char metatile)
+{
+ return (metatile == 'H' ? TT_H :
+ metatile == 'T' ? TT_T :
+ metatile == 'P' ? TT_P :
+ metatile == 'F' ? TT_F : -1);
+}
+
+static void init_coords_params(HatCoordContext *ctx,
+ const struct HatPatchParams *hp)
+{
+ size_t i;
+
+ ctx->rs = NULL;
+ ctx->prototype = hc_new();
+
+ assert(hp->ncoords >= 3);
+
+ hc_make_space(ctx->prototype, hp->ncoords + 1);
+ ctx->prototype->nc = hp->ncoords + 1;
+
+ for (i = 0; i < hp->ncoords; i++)
+ ctx->prototype->c[i].index = hp->coords[i];
+
+ ctx->prototype->c[hp->ncoords].type =
+ metatile_char_to_enum(hp->final_metatile);
+ ctx->prototype->c[hp->ncoords].index = -1;
+
+ ctx->prototype->c[0].type = TT_KITE;
+ ctx->prototype->c[1].type = TT_HAT;
+
+ for (i = hp->ncoords - 1; i > 1; i--) {
+ TileType metatile = ctx->prototype->c[i+1].type;
+ assert(hp->coords[i] < nchildren[metatile]);
+ ctx->prototype->c[i].type = children[metatile][hp->coords[i]];
+ }
+
+ assert(hp->coords[0] < 8);
+}
+
+static HatCoords *initial_coords(HatCoordContext *ctx)
+{
+ return hc_copy(ctx->prototype);
+}
+
+/*
+ * Extend hc until it has at least n coordinates in, by copying from
+ * ctx->prototype if needed, and extending ctx->prototype if needed in
+ * order to do that.
+ */
+static void ensure_coords(HatCoordContext *ctx, HatCoords *hc, size_t n)
+{
+ if (ctx->prototype->nc < n) {
+ hc_make_space(ctx->prototype, n);
+ while (ctx->prototype->nc < n) {
+ TileType type = ctx->prototype->c[ctx->prototype->nc - 1].type;
+ assert(ctx->prototype->c[ctx->prototype->nc - 1].index == -1);
+ const MetatilePossibleParent *parents = permitted_parents[type];
+ size_t parent_index;
+ if (ctx->rs) {
+ parent_index = random_upto(ctx->rs, n_permitted_parents[type]);
+ } else {
+ parent_index = 0;
+ }
+ ctx->prototype->c[ctx->prototype->nc - 1].index =
+ parents[parent_index].index;
+ ctx->prototype->c[ctx->prototype->nc].index = -1;
+ ctx->prototype->c[ctx->prototype->nc].type =
+ parents[parent_index].type;
+ ctx->prototype->nc++;
+ }
+ }
+
+ hc_make_space(hc, n);
+ while (hc->nc < n) {
+ assert(hc->c[hc->nc - 1].index == -1);
+ assert(hc->c[hc->nc - 1].type == ctx->prototype->c[hc->nc - 1].type);
+ hc->c[hc->nc - 1].index = ctx->prototype->c[hc->nc - 1].index;
+ hc->c[hc->nc].index = -1;
+ hc->c[hc->nc].type = ctx->prototype->c[hc->nc].type;
+ hc->nc++;
+ }
+}
+
+static void cleanup_coords(HatCoordContext *ctx)
+{
+ hc_free(ctx->prototype);
+}
+
+#ifdef DEBUG_COORDS
+static inline void debug_coords(const char *prefix, HatCoords *hc,
+ const char *suffix)
+{
+ const char *sep = "";
+ static const char *const types[] = {"H","T","P","F","kite","hat"};
+
+ fputs(prefix, stderr);
+ for (size_t i = 0; i < hc->nc; i++) {
+ fprintf(stderr, "%s %s ", sep, types[hc->c[i].type]);
+ sep = " .";
+ if (hc->c[i].index == -1)
+ fputs("?", stderr);
+ else
+ fprintf(stderr, "%d", hc->c[i].index);
+ }
+ fputs(suffix, stderr);
+}
+#else
+#define debug_coords(p,c,s) ((void)0)
+#endif
+
+/*
+ * The actual system for finding the coordinates of an adjacent kite.
+ */
+
+/*
+ * Kitemap step: ensure we have enough coordinates to know two levels
+ * of meta-tiling, and use the kite map for the outer layer to move
+ * around the individual kites. If this fails, return NULL.
+ */
+static HatCoords *try_step_coords_kitemap(
+ HatCoordContext *ctx, HatCoords *hc_in, KiteStep step)
+{
+ ensure_coords(ctx, hc_in, 4);
+ debug_coords(" try kitemap ", hc_in, "\n");
+ unsigned kite = hc_in->c[0].index;
+ unsigned hat = hc_in->c[1].index;
+ unsigned meta = hc_in->c[2].index;
+ TileType meta2type = hc_in->c[3].type;
+ const KitemapEntry *ke = &kitemap[meta2type][
+ kitemap_index(step, kite, hat, meta)];
+ if (ke->kite >= 0) {
+ /*
+ * Success! We've got coordinates for the next kite in this
+ * direction.
+ */
+ HatCoords *hc_out = hc_copy(hc_in);
+
+ hc_out->c[2].index = ke->meta;
+ hc_out->c[2].type = children[meta2type][ke->meta];
+ hc_out->c[1].index = ke->hat;
+ hc_out->c[1].type = TT_HAT;
+ hc_out->c[0].index = ke->kite;
+ hc_out->c[0].type = TT_KITE;
+
+ debug_coords(" success! ", hc_out, "\n");
+ return hc_out;
+ }
+
+ return NULL;
+}
+
+/*
+ * Recursive metamap step. Try using the metamap to rewrite the
+ * coordinates at hc->c[depth] and hc->c[depth+1] (using the metamap
+ * for the tile type described in hc->c[depth+2]). If successful,
+ * recurse back down to see if this led to a successful step via the
+ * kitemap. If even that fails (so that we need to try a higher-order
+ * metamap rewrite), return NULL.
+ */
+static HatCoords *try_step_coords_metamap(
+ HatCoordContext *ctx, HatCoords *hc_in, KiteStep step, size_t depth)
+{
+ HatCoords *hc_tmp = NULL, *hc_out;
+
+ ensure_coords(ctx, hc_in, depth+3);
+#ifdef DEBUG_COORDS
+ fprintf(stderr, " try meta %-4d", (int)depth);
+ debug_coords("", hc_in, "\n");
+#endif
+ unsigned meta_orig = hc_in->c[depth].index;
+ unsigned meta2_orig = hc_in->c[depth+1].index;
+ TileType meta3type = hc_in->c[depth+2].type;
+
+ unsigned meta = meta_orig, meta2 = meta2_orig;
+
+ while (true) {
+ const MetamapEntry *me;
+ HatCoords *hc_curr = hc_tmp ? hc_tmp : hc_in;
+
+ if (depth > 2)
+ hc_out = try_step_coords_metamap(ctx, hc_curr, step, depth - 1);
+ else
+ hc_out = try_step_coords_kitemap(ctx, hc_curr, step);
+ if (hc_out) {
+ hc_free(hc_tmp);
+ return hc_out;
+ }
+
+ me = &metamap[meta3type][metamap_index(meta, meta2)];
+ assert(me->meta != -1);
+ if (me->meta == meta_orig && me->meta2 == meta2_orig) {
+ hc_free(hc_tmp);
+ return NULL;
+ }
+
+ meta = me->meta;
+ meta2 = me->meta2;
+
+ /*
+ * We must do the rewrite in a copy of hc_in. It's not
+ * _necessarily_ obvious that that's the case (any successful
+ * rewrite leaves the coordinates still valid and still
+ * referring to the same kite, right?). But the problem is
+ * that we might do a rewrite at this level more than once,
+ * and in between, a metamap rewrite at the next level down
+ * might have modified _one_ of the two coordinates we're
+ * messing about with. So it's easiest to let the recursion
+ * just use a separate copy.
+ */
+ if (!hc_tmp)
+ hc_tmp = hc_copy(hc_in);
+
+ hc_tmp->c[depth+1].index = meta2;
+ hc_tmp->c[depth+1].type = children[meta3type][meta2];
+ hc_tmp->c[depth].index = meta;
+ hc_tmp->c[depth].type = children[hc_tmp->c[depth+1].type][meta];
+
+ debug_coords(" rewritten -> ", hc_tmp, "\n");
+ }
+}
+
+/*
+ * The top-level algorithm for finding the next tile.
+ */
+static HatCoords *step_coords(HatCoordContext *ctx, HatCoords *hc_in,
+ KiteStep step)
+{
+ HatCoords *hc_out;
+ size_t depth;
+
+#ifdef DEBUG_COORDS
+ static const char *const directions[] = {
+ " left\n", " right\n", " forward left\n", " forward right\n" };
+ debug_coords("step start ", hc_in, directions[step]);
+#endif
+
+ /*
+ * First, just try a kitemap step immediately. If that succeeds,
+ * we're done.
+ */
+ if ((hc_out = try_step_coords_kitemap(ctx, hc_in, step)) != NULL)
+ return hc_out;
+
+ /*
+ * Otherwise, try metamap rewrites at successively higher layers
+ * until one works. Each one will recurse back down to the
+ * kitemap, as described above.
+ */
+ for (depth = 2;; depth++) {
+ if ((hc_out = try_step_coords_metamap(
+ ctx, hc_in, step, depth)) != NULL)
+ return hc_out;
+ }
+}
+
+/*
+ * Generate a random set of parameters for a tiling of a given size.
+ * To do this, we iterate over the whole tiling via first_kite and
+ * next_kite, and for each kite, calculate its coordinates. But then
+ * we throw the coordinates away and don't do anything with them!
+ *
+ * But the side effect of _calculating_ all those coordinates is that
+ * we found out how far ctx->prototype needed to be extended, and did
+ * so, pulling random choices out of our random_state. So after this
+ * iteration, ctx->prototype contains everything we need to replicate
+ * the same piece of tiling next time.
+ */
+void hat_tiling_randomise(struct HatPatchParams *hp, int w, int h,
+ random_state *rs)
+{
+ HatCoordContext ctx[1];
+ HatCoords *coords[KE_NKEEP];
+ KiteEnum s[1];
+ size_t i;
+
+ init_coords_random(ctx, rs);
+ for (i = 0; i < lenof(coords); i++)
+ coords[i] = NULL;
+
+ first_kite(s, w, h);
+ coords[s->curr_index] = initial_coords(ctx);
+
+ while (next_kite(s)) {
+ hc_free(coords[s->curr_index]);
+ coords[s->curr_index] = step_coords(
+ ctx, coords[s->last_index], s->last_step);
+ }
+
+ hp->ncoords = ctx->prototype->nc - 1;
+ hp->coords = snewn(hp->ncoords, unsigned char);
+ for (i = 0; i < hp->ncoords; i++)
+ hp->coords[i] = ctx->prototype->c[i].index;
+ hp->final_metatile = tilechars[ctx->prototype->c[hp->ncoords].type];
+
+ cleanup_coords(ctx);
+ for (i = 0; i < lenof(coords); i++)
+ hc_free(coords[i]);
+}
+
+const char *hat_tiling_params_invalid(const struct HatPatchParams *hp)
+{
+ TileType metatile;
+ size_t i;
+
+ if (hp->ncoords < 3)
+ return "Grid parameters require at least three coordinates";
+ if (metatile_char_to_enum(hp->final_metatile) < 0)
+ return "Grid parameters contain an invalid final metatile";
+ if (hp->coords[0] >= 8)
+ return "Grid parameters contain an invalid kite index";
+
+ metatile = metatile_char_to_enum(hp->final_metatile);
+ for (i = hp->ncoords - 1; i > 1; i--) {
+ if (hp->coords[i] >= nchildren[metatile])
+ return "Grid parameters contain an invalid metatile index";
+ metatile = children[metatile][hp->coords[i]];
+ }
+
+ if (hp->coords[1] >= hats_in_metatile[metatile])
+ return "Grid parameters contain an invalid hat index";
+
+ return NULL;
+}
+
+/*
+ * For each kite generated by hat_tiling_generate, potentially
+ * generate an output hat and give it to our caller.
+ *
+ * We do this by starting from kite #0 of each hat, and tracing round
+ * the boundary. If the whole boundary is within the caller's bounding
+ * region, we return it; if it goes off the edge, we don't.
+ *
+ * (Of course, every hat we _do_ want to return will have all its
+ * kites inside the rectangle, so its kite #0 will certainly be caught
+ * by this iteration.)
+ */
+static void maybe_report_hat(int w, int h, Kite kite, HatCoords *hc,
+ hat_tile_callback_fn cb, void *cbctx)
+{
+ Point vertices[14];
+ size_t i, j;
+ bool reversed = false;
+ int coords[28];
+
+ /* Only iterate from kite #0 of a hat */
+ if (hc->c[0].index != 0)
+ return;
+
+ /*
+ * Identify reflected hats: they are always hat #3 of an H
+ * metatile. If we find one, reflect the starting kite so that the
+ * kite_step operations below will go in the other direction.
+ */
+ if (hc->c[2].type == TT_H && hc->c[1].index == 3) {
+ reversed = true;
+ Point tmp = kite.left;
+ kite.left = kite.right;
+ kite.right = tmp;
+ }
+
+ vertices[0] = kite.centre;
+ vertices[1] = kite.right;
+ vertices[2] = kite.outer;
+ vertices[3] = kite.left;
+ kite = kite_left(kite); /* now on kite #1 */
+ kite = kite_forward_right(kite); /* now on kite #2 */
+ vertices[4] = kite.centre;
+ kite = kite_right(kite); /* now on kite #3 */
+ vertices[5] = kite.right;
+ vertices[6] = kite.outer;
+ kite = kite_forward_left(kite); /* now on kite #4 */
+ vertices[7] = kite.left;
+ vertices[8] = kite.centre;
+ kite = kite_right(kite); /* now on kite #5 */
+ kite = kite_right(kite); /* now on kite #6 */
+ kite = kite_right(kite); /* now on kite #7 */
+ vertices[9] = kite.right;
+ vertices[10] = kite.outer;
+ vertices[11] = kite.left;
+ kite = kite_left(kite); /* now on kite #6 again */
+ vertices[12] = kite.outer;
+ vertices[13] = kite.left;
+
+ if (reversed) {
+ /* For a reversed kite, also reverse the vertex order, so that
+ * we report every polygon in a consistent orientation */
+ for (i = 0, j = 13; i < j; i++, j--) {
+ Point tmp = vertices[i];
+ vertices[i] = vertices[j];
+ vertices[j] = tmp;
+ }
+ }
+
+ /*
+ * Convert from our internal coordinate system into the orthogonal
+ * one used in this module's external API. In the same loop, we
+ * might as well do the bounds check.
+ */
+ for (i = 0; i < 14; i++) {
+ Point v = vertices[i];
+ int x = (v.x * 2 + v.y) / 3, y = v.y;
+
+ if (x < 0 || x > 4*w || y < 0 || y > 6*h)
+ return; /* a vertex of this kite is out of bounds */
+
+ coords[2*i] = x;
+ coords[2*i+1] = y;
+ }
+
+ cb(cbctx, 14, coords);
+}
+
+/*
+ * Generate a hat tiling from a previously generated set of parameters.
+ */
+void hat_tiling_generate(const struct HatPatchParams *hp, int w, int h,
+ hat_tile_callback_fn cb, void *cbctx)
+{
+ HatCoordContext ctx[1];
+ HatCoords *coords[KE_NKEEP];
+ KiteEnum s[1];
+ size_t i;
+
+ init_coords_params(ctx, hp);
+ for (i = 0; i < lenof(coords); i++)
+ coords[i] = NULL;
+
+ first_kite(s, w, h);
+ coords[s->curr_index] = initial_coords(ctx);
+ maybe_report_hat(w, h, *s->curr, coords[s->curr_index], cb, cbctx);
+
+ while (next_kite(s)) {
+ hc_free(coords[s->curr_index]);
+ coords[s->curr_index] = step_coords(
+ ctx, coords[s->last_index], s->last_step);
+ maybe_report_hat(w, h, *s->curr, coords[s->curr_index], cb, cbctx);
+ }
+
+ cleanup_coords(ctx);
+ for (i = 0; i < lenof(coords); i++)
+ hc_free(coords[i]);
+}
+
+#ifdef TEST_HAT
+
+#include <stdarg.h>
+
+static HatCoords *hc_construct_v(TileType type, va_list ap)
+{
+ HatCoords *hc = hc_new();
+ while (true) {
+ int index = va_arg(ap, int);
+
+ hc_make_space(hc, hc->nc + 1);
+ hc->c[hc->nc].type = type;
+ hc->c[hc->nc].index = index;
+ hc->nc++;
+
+ if (index < 0)
+ return hc;
+
+ type = va_arg(ap, TileType);
+ }
+}
+
+static HatCoords *hc_construct(TileType type, ...)
+{
+ HatCoords *hc;
+ va_list ap;
+
+ va_start(ap, type);
+ hc = hc_construct_v(type, ap);
+ va_end(ap);
+
+ return hc;
+}
+
+static bool hc_equal(HatCoords *hc1, HatCoords *hc2)
+{
+ size_t i;
+
+ if (hc1->nc != hc2->nc)
+ return false;
+
+ for (i = 0; i < hc1->nc; i++) {
+ if (hc1->c[i].type != hc2->c[i].type ||
+ hc1->c[i].index != hc2->c[i].index)
+ return false;
+ }
+
+ return true;
+}
+
+static bool hc_expect(const char *file, int line, HatCoords *hc,
+ TileType type, ...)
+{
+ bool equal;
+ va_list ap;
+ HatCoords *hce;
+
+ va_start(ap, type);
+ hce = hc_construct_v(type, ap);
+ va_end(ap);
+
+ equal = hc_equal(hc, hce);
+
+ if (!equal) {
+ fprintf(stderr, "%s:%d: coordinate mismatch\n", file, line);
+ debug_coords(" expected: ", hce, "\n");
+ debug_coords(" actual: ", hc, "\n");
+ }
+
+ hc_free(hce);
+ return equal;
+}
+
+#define EXPECT(hc, ...) do { \
+ if (!hc_expect(__FILE__, __LINE__, hc, __VA_ARGS__)) \
+ fails++; \
+ } while (0)
+
+static bool unit_tests(void)
+{
+ int fails = 0;
+ HatCoordContext ctx[1];
+ HatCoords *hc_in, *hc_out;
+
+ ctx->rs = NULL;
+ ctx->prototype = hc_construct(TT_KITE, 0, TT_HAT, 0, TT_H, -1);
+
+ /* Simple steps within a hat */
+
+ hc_in = hc_construct(TT_KITE, 6, TT_HAT, 2, TT_H, 1, TT_H, -1);
+ hc_out = step_coords(ctx, hc_in, KS_LEFT);
+ EXPECT(hc_out, TT_KITE, 5, TT_HAT, 2, TT_H, 1, TT_H, -1);
+ hc_free(hc_in);
+ hc_free(hc_out);
+
+ hc_in = hc_construct(TT_KITE, 6, TT_HAT, 2, TT_H, 1, TT_H, -1);
+ hc_out = step_coords(ctx, hc_in, KS_RIGHT);
+ EXPECT(hc_out, TT_KITE, 7, TT_HAT, 2, TT_H, 1, TT_H, -1);
+ hc_free(hc_in);
+ hc_free(hc_out);
+
+ hc_in = hc_construct(TT_KITE, 5, TT_HAT, 2, TT_H, 1, TT_H, -1);
+ hc_out = step_coords(ctx, hc_in, KS_F_LEFT);
+ EXPECT(hc_out, TT_KITE, 2, TT_HAT, 2, TT_H, 1, TT_H, -1);
+ hc_free(hc_in);
+ hc_free(hc_out);
+
+ hc_in = hc_construct(TT_KITE, 5, TT_HAT, 2, TT_H, 1, TT_H, -1);
+ hc_out = step_coords(ctx, hc_in, KS_F_RIGHT);
+ EXPECT(hc_out, TT_KITE, 1, TT_HAT, 2, TT_H, 1, TT_H, -1);
+ hc_free(hc_in);
+ hc_free(hc_out);
+
+ /* Step between hats in the same kitemap, which can change the
+ * metatile type at layer 2 */
+
+ hc_in = hc_construct(TT_KITE, 6, TT_HAT, 2, TT_H, 1, TT_H, -1);
+ hc_out = step_coords(ctx, hc_in, KS_F_LEFT);
+ EXPECT(hc_out, TT_KITE, 3, TT_HAT, 0, TT_H, 0, TT_H, -1);
+ hc_free(hc_in);
+ hc_free(hc_out);
+
+ hc_in = hc_construct(TT_KITE, 7, TT_HAT, 2, TT_H, 1, TT_H, -1);
+ hc_out = step_coords(ctx, hc_in, KS_F_RIGHT);
+ EXPECT(hc_out, TT_KITE, 4, TT_HAT, 0, TT_T, 3, TT_H, -1);
+ hc_free(hc_in);
+ hc_free(hc_out);
+
+ /* Step off the edge of one kitemap, necessitating a metamap
+ * rewrite of layers 2,3 to get into a different kitemap where
+ * that step can be made */
+
+ hc_in = hc_construct(TT_KITE, 6, TT_HAT, 0, TT_P, 2, TT_P, 3, TT_P, -1);
+ hc_out = step_coords(ctx, hc_in, KS_F_RIGHT);
+ /* Working:
+ * kite 6 . hat 0 . P 2 . P 3 . P ?
+ * -> kite 6 . hat 0 . P 6 . H 0 . P ? (P metamap says 2.3 = 6.0)
+ */
+ EXPECT(hc_out, TT_KITE, 7, TT_HAT, 1, TT_H, 1, TT_H, 0, TT_P, -1);
+ hc_free(hc_in);
+ hc_free(hc_out);
+
+ cleanup_coords(ctx);
+ return fails == 0;
+}
+
+typedef struct pspoint {
+ float x, y;
+} pspoint;
+
+static inline pspoint pscoords(Point p)
+{
+ pspoint q = { p.x + p.y / 2.0F, p.y * sqrt(0.75) };
+ return q;
+}
+
+typedef struct psbbox {
+ bool started;
+ pspoint bl, tr;
+} psbbox;
+
+static inline void psbbox_add(psbbox *bbox, pspoint p)
+{
+ if (!bbox->started || bbox->bl.x > p.x)
+ bbox->bl.x = p.x;
+ if (!bbox->started || bbox->tr.x < p.x)
+ bbox->tr.x = p.x;
+ if (!bbox->started || bbox->bl.y > p.y)
+ bbox->bl.y = p.y;
+ if (!bbox->started || bbox->tr.y < p.y)
+ bbox->tr.y = p.y;
+ bbox->started = true;
+}
+
+static void header(psbbox *bbox)
+{
+ float xext = bbox->tr.x - bbox->bl.x, yext = bbox->tr.y - bbox->bl.y;
+ float ext = (xext > yext ? xext : yext);
+ float scale = 500 / ext;
+ float ox = 287 - scale * (bbox->bl.x + bbox->tr.x) / 2;
+ float oy = 421 - scale * (bbox->bl.y + bbox->tr.y) / 2;
+
+ printf("%%!PS-Adobe-2.0\n%%%%Creator: hat-test from Simon Tatham's "
+ "Portable Puzzle Collection\n%%%%Pages: 1\n"
+ "%%%%BoundingBox: %f %f %f %f\n"
+ "%%%%EndComments\n%%%%Page: 1 1\n",
+ ox + scale * bbox->bl.x - 20, oy + scale * bbox->bl.y - 20,
+ ox + scale * bbox->tr.x + 20, oy + scale * bbox->tr.y + 20);
+
+ printf("%f %f translate %f dup scale\n", ox, oy, scale);
+ printf("%f setlinewidth\n", 0.1);
+ printf("/thick { %f setlinewidth } def\n", 0.7);
+ printf("0 setgray 1 setlinejoin 1 setlinecap\n");
+}
+
+static void bbox_add_kite(Kite k, psbbox *bbox)
+{
+ pspoint p[4];
+ size_t i;
+
+ p[0] = pscoords(k.centre);
+ p[1] = pscoords(k.left);
+ p[2] = pscoords(k.outer);
+ p[3] = pscoords(k.right);
+
+ for (i = 0; i < 4; i++)
+ psbbox_add(bbox, p[i]);
+}
+
+static void fill_kite(Kite k, HatCoords *hc)
+{
+ pspoint p[4];
+ size_t i;
+
+ p[0] = pscoords(k.centre);
+ p[1] = pscoords(k.left);
+ p[2] = pscoords(k.outer);
+ p[3] = pscoords(k.right);
+
+ printf("newpath");
+ for (i = 0; i < 4; i++)
+ printf(" %f %f %s", p[i].x, p[i].y, i ? "lineto" : "moveto");
+ printf(" closepath gsave");
+ if (hc) {
+ const char *colour = "0 setgray";
+ if (hc->c[2].type == TT_H) {
+ colour = (hc->c[1].index == 3 ? "0 0.5 0.8 setrgbcolor" :
+ "0.6 0.8 1 setrgbcolor");
+ } else if (hc->c[2].type == TT_F) {
+ colour = "0.7 setgray";
+ } else {
+ colour = "1 setgray";
+ }
+ printf(" %s fill grestore\n", colour);
+ }
+}
+
+static void stroke_kite(Kite k, HatCoords *hc)
+{
+ pspoint p[4];
+ size_t i;
+
+ p[0] = pscoords(k.centre);
+ p[1] = pscoords(k.left);
+ p[2] = pscoords(k.outer);
+ p[3] = pscoords(k.right);
+
+ printf("newpath");
+ for (i = 0; i < 4; i++)
+ printf(" %f %f %s", p[i].x, p[i].y, i ? "lineto" : "moveto");
+ printf(" closepath");
+ printf(" stroke\n");
+
+ if (hc->c[2].type == TT_H && hc->c[1].index == 3) {
+ pspoint t = p[1]; p[1] = p[3]; p[3] = t;
+ }
+ #define LINE(a,b) printf("gsave newpath %f %f moveto %f %f lineto thick " \
+ "stroke grestore\n", p[a].x, p[a].y, p[b].x, p[b].y)
+ switch (hc->c[0].index) {
+ case 0: LINE(1, 2); LINE(2, 3); LINE(3, 0); break;
+ case 1: LINE(0, 1); break;
+ case 2: LINE(0, 1); break;
+ case 3: LINE(2, 3); LINE(3, 0); break;
+ case 4: LINE(0, 1); LINE(1, 2); break;
+ case 6: LINE(1, 2); LINE(2, 3); break;
+ case 7: LINE(1, 2); LINE(2, 3); LINE(3, 0); break;
+ }
+ #undef LINE
+}
+
+static void trailer(void)
+{
+ printf("showpage\n");
+ printf("%%%%Trailer\n");
+ printf("%%%%EOF\n");
+}
+
+int main(int argc, char **argv)
+{
+ psbbox bbox[1];
+ KiteEnum s[1];
+ HatCoordContext ctx[1];
+ HatCoords *coords[KE_NKEEP];
+ random_state *rs = random_new("12345", 5);
+ int w = 10, h = 10;
+ size_t i;
+
+ if (argc > 1 && !strcmp(argv[1], "--test")) {
+ return unit_tests() ? 0 : 1;
+ }
+
+ for (i = 0; i < lenof(coords); i++)
+ coords[i] = NULL;
+
+ init_coords_random(ctx, rs);
+
+ bbox->started = false;
+
+ first_kite(s, w, h);
+ coords[s->curr_index] = initial_coords(ctx);
+ bbox_add_kite(*s->curr, bbox);
+ while (next_kite(s)) {
+ hc_free(coords[s->curr_index]);
+ coords[s->curr_index] = step_coords(
+ ctx, coords[s->last_index], s->last_step);
+ bbox_add_kite(*s->curr, bbox);
+ }
+ for (i = 0; i < lenof(coords); i++) {
+ hc_free(coords[i]);
+ coords[i] = NULL;
+ }
+
+ header(bbox);
+
+ first_kite(s, w, h);
+ coords[s->curr_index] = initial_coords(ctx);
+ fill_kite(*s->curr, coords[s->curr_index]);
+ while (next_kite(s)) {
+ hc_free(coords[s->curr_index]);
+ coords[s->curr_index] = step_coords(
+ ctx, coords[s->last_index], s->last_step);
+ fill_kite(*s->curr, coords[s->curr_index]);
+ }
+ for (i = 0; i < lenof(coords); i++) {
+ hc_free(coords[i]);
+ coords[i] = NULL;
+ }
+
+ first_kite(s, w, h);
+ coords[s->curr_index] = initial_coords(ctx);
+ stroke_kite(*s->curr, coords[s->curr_index]);
+ while (next_kite(s)) {
+ hc_free(coords[s->curr_index]);
+ coords[s->curr_index] = step_coords(
+ ctx, coords[s->last_index], s->last_step);
+ stroke_kite(*s->curr, coords[s->curr_index]);
+ }
+ for (i = 0; i < lenof(coords); i++) {
+ hc_free(coords[i]);
+ coords[i] = NULL;
+ }
+
+ trailer();
+
+ cleanup_coords(ctx);
+
+ return 0;
+}
+#endif
--- /dev/null
+++ b/hat.h
@@ -1,0 +1,67 @@
+#ifndef PUZZLES_HAT_H
+#define PUZZLES_HAT_H
+
+struct HatPatchParams {
+ /*
+ * A patch of hat tiling is identified by giving the coordinates
+ * of the kite in one corner, using a multi-level coordinate
+ * system based on metatile expansions. Coordinates are a sequence
+ * of small non-negative integers. The valid range for each
+ * coordinate depends on the next coordinate, or on final_metatile
+ * if it's the last one in the list. The largest valid range is
+ * {0,...,12}.
+ *
+ * 'final_metatile' is one of the characters 'H', 'T', 'P' or 'F'.
+ */
+ size_t ncoords;
+ unsigned char *coords;
+ char final_metatile;
+};
+
+/*
+ * Fill in HatPatchParams with a randomly selected set of coordinates,
+ * in enough detail to generate a patch of tiling covering an area of
+ * w x h 'squares' of a kite tiling.
+ *
+ * The kites grid is considered to be oriented so that it includes
+ * horizontal lines and not vertical ones. So each of the smallest
+ * equilateral triangles in the grid has a bounding rectangle whose
+ * height is sqrt(3)/2 times its width, and either the top or the
+ * bottom of that bounding rectangle is the horizontal edge of the
+ * triangle. A 'square' of a kite tiling (for convenience of choosing
+ * grid dimensions) counts as one of those bounding rectangles.
+ *
+ * The 'coords' field of the structure will be filled in with a new
+ * dynamically allocated array. Any previous pointer in that field
+ * will be overwritten.
+ */
+void hat_tiling_randomise(struct HatPatchParams *params, int w, int h,
+ random_state *rs);
+
+/*
+ * Validate a HatPatchParams to ensure it contains no illegal
+ * coordinates. Returns NULL if it's acceptable, or an error string if
+ * not.
+ */
+const char *hat_tiling_params_invalid(const struct HatPatchParams *params);
+
+/*
+ * Generate the actual set of hat tiles from a HatPatchParams, passing
+ * each one to a callback. The callback receives the vertices of each
+ * point, as a sequence of 2*nvertices integers, with x,y coordinates
+ * interleaved.
+ *
+ * The x coordinates are measured in units of 1/4 of the side length
+ * of the smallest equilateral triangle, or equivalently, 1/2 the
+ * length of one of the long edges of a single kite. The y coordinates
+ * are measured in units of 1/6 the height of the triangle, which is
+ * also 1/2 the length of the short edge of a kite. Therefore, you can
+ * expect x to go up to 4*w and y up to 6*h.
+ */
+typedef void (*hat_tile_callback_fn)(void *ctx, size_t nvertices,
+ int *coords);
+
+void hat_tiling_generate(const struct HatPatchParams *params, int w, int h,
+ hat_tile_callback_fn cb, void *cbctx);
+
+#endif
--- a/loopy.c
+++ b/loopy.c
@@ -280,6 +280,7 @@
A("Great-Great-Dodecagonal",GREATGREATDODECAGONAL,2,2) \
A("Kagome",KAGOME,3,3) \
A("Compass-Dodecagonal",COMPASSDODECAGONAL,2,2) \
+ A("Hats",HATS,6,6) \
/* end of list */
#define GRID_NAME(title,type,amin,omin) title,
@@ -564,6 +565,7 @@
{ 5, 4, DIFF_HARD, LOOPY_GRID_GREATDODECAGONAL },
{ 5, 3, DIFF_HARD, LOOPY_GRID_GREATGREATDODECAGONAL },
{ 5, 4, DIFF_HARD, LOOPY_GRID_COMPASSDODECAGONAL },
+ { 10, 10, DIFF_HARD, LOOPY_GRID_HATS },
#endif
};
@@ -2299,7 +2301,7 @@
* on that. We check this with an assertion, in case someone decides to
* make a grid which has larger faces than this. Note, this algorithm
* could get quite expensive if there are many large faces. */
-#define MAX_FACE_SIZE 12
+#define MAX_FACE_SIZE 14
for (i = 0; i < g->num_faces; i++) {
int maxs[MAX_FACE_SIZE][MAX_FACE_SIZE];