vector_salad 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc23021a759973f72595a9b083f0c14557a81ee1
4
- data.tar.gz: de57bf043d59f32f38f9c85a4ec54d4b1347c4b2
3
+ metadata.gz: e4dde75c02c0519d7173bc4b031c1252ba2c8318
4
+ data.tar.gz: be321d0c4c3ce6815d32e12073cf8b55dca0ba2b
5
5
  SHA512:
6
- metadata.gz: e9b18624730aab10da1463714ae2b6da737ffdcf168a205205fe48f668cdfacebe9c9f6d60cae3220472f19267857a6d5650cf1a1162536c3ab167c83afbd429
7
- data.tar.gz: 78df56043bb2ad3d9f5ad54bbd8413705c8d2432315477a5af4b449c0febeb954973f89b9a35b00546469cb9d150985417f2e2f3d878c56e0c30e25d3d0c2de8
6
+ metadata.gz: 56e94c00c3ae2883fb1cd3018d13edb4a1810dde55c8a1ae973ebb8e780947ad949f1ee204bcd22260aa610d2aba35cd07ee0cd9c64b8ed8c86e24e082001f32
7
+ data.tar.gz: d7ab5d6298a47b361edab6fed5c851a3af054848aabec962261e722cbdb74b39196b929cceeac62463dbcce59de0f43f267e695e57fbf9797a362ab00093aa5f
Binary file
@@ -0,0 +1,50 @@
1
+ SIZE = 256
2
+ BOXES = 8
3
+ BOX_SIZE = SIZE / BOXES
4
+ FORCE = 0.31
5
+
6
+ square(SIZE)
7
+
8
+ custom(:eyebox) do |x, y, **options|
9
+ middle = SIZE / 2
10
+ xm = x + BOX_SIZE / 2
11
+ ym = y + BOX_SIZE / 2
12
+
13
+ dx = middle - xm
14
+ dy = middle - ym
15
+
16
+ h = Math.sqrt(dx**2 + dy**2)
17
+ a = Math.atan2(dx, dy)
18
+
19
+ r = (h * FORCE)**1.3
20
+ x2 = -r * Math.sin(a)
21
+ y2 = -r * Math.cos(a)
22
+
23
+ r = (h * (FORCE - 0.01))**1.3
24
+ x3 = -r * Math.sin(a)
25
+ y3 = -r * Math.cos(a)
26
+
27
+ c = 255.0 / SIZE
28
+ c2 = 200.0 / SIZE
29
+ col1 = "rgb(#{50 + c2 * x}, 0, #{50 + c2 * y})"
30
+ col2 = "rgb(#{205 - c * x}, 0, #{c * y})"
31
+
32
+ group do
33
+ square(BOX_SIZE, fill: col1)[x, y]
34
+ # circle(BOX_SIZE / 3, fill: "rgb(#{c * x}, 0, #{c * y})")[x2 + middle, y2 + middle]
35
+ intersection(fill: "white") do
36
+ square(BOX_SIZE, fill: "rgb(#{c * x}, 0, #{c * y})")[x, y]
37
+ circle(BOX_SIZE / 2.5, fill: "white")[x2 + middle, y2 + middle]
38
+ end
39
+ intersection(fill: col2) do
40
+ square(BOX_SIZE, fill: "rgb(#{c * x}, 0, #{c * y})")[x, y]
41
+ circle(BOX_SIZE / 6, fill: "black")[x3 + middle, y3 + middle]
42
+ end
43
+ end
44
+ end
45
+
46
+ BOXES.times do |x|
47
+ BOXES.times do |y|
48
+ eyebox(x * BOX_SIZE, y * BOX_SIZE)
49
+ end
50
+ end
@@ -0,0 +1,199 @@
1
+ <svg version="1.1"
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="256"
4
+ height="256">
5
+
6
+ <rect x="0" y="0" width="256" height="256"/>
7
+ <rect x="0" y="0" width="32" height="32" fill="rgb(50.0, 0, 50.0)"/>
8
+ <path d=" M 16.33729839 29.13729763 L 14.79442883 29.04397202 L 13.27405739 28.7653532 L 11.7983551 28.30550575 L 10.38884163 27.67113495 L 9.0660696 26.87149143 L 7.84932804 25.91823578 L 6.75636005 24.82526779 L 5.8031044 23.60852718 L 5.00346088 22.2857542 L 4.36909008 20.87624073 L 3.90924263 19.40053844 L 3.63062477 17.88016796 L 3.5372982 16.33729839 L 3.63062477 14.79442883 L 3.90924263 13.27405739 L 4.36909008 11.7983551 L 5.00346088 10.38884163 L 5.8031044 9.0660696 L 6.75636005 7.84932804 L 7.84932804 6.75636005 L 9.0660696 5.8031044 L 10.38884163 5.00346088 L 11.7983551 4.36909008 L 13.27405739 3.90924263 L 14.79442883 3.63062477 L 16.33729839 3.5372982 L 17.88016796 3.63062477 L 19.40053844 3.90924263 L 20.87624073 4.36909008 L 22.2857542 5.00346088 L 23.60852718 5.8031044 L 24.82526779 6.75636005 L 25.91823578 7.84932804 L 26.87149143 9.0660696 L 27.67113495 10.38884163 L 28.30550575 11.7983551 L 28.7653532 13.27405739 L 29.04397202 14.79442883 L 29.13729763 16.33729839 L 29.04397202 17.88016796 L 28.7653532 19.40053844 L 28.30550575 20.87624073 L 27.67113495 22.2857542 L 26.87149143 23.60852718 L 25.91823578 24.82526779 L 24.82526779 25.91823578 L 23.60852718 26.87149143 L 22.2857542 27.67113495 L 20.87624073 28.30550575 L 19.40053844 28.7653532 L 17.88016796 29.04397202 Z" fill="white"/>
9
+ <path d=" M 20.99709702 25.99709702 L 19.45201206 25.75237942 L 18.05817032 25.04218197 L 16.95201206 23.93602276 L 16.24181366 22.54218197 L 15.99709702 20.99709702 L 16.24181366 19.45201206 L 16.95201206 18.05817032 L 18.05817032 16.95201206 L 19.45201206 16.24181366 L 20.99709702 15.99709702 L 22.54218197 16.24181366 L 23.93602276 16.95201206 L 25.04218197 18.05817032 L 25.75237942 19.45201206 L 25.99709702 20.99709702 L 25.75237942 22.54218197 L 25.04218197 23.93602276 L 23.93602276 25.04218197 L 22.54218197 25.75237942 Z" fill="rgb(205.0, 0, 0.0)"/>
10
+ <rect x="0" y="32" width="32" height="32" fill="rgb(50.0, 0, 75.0)"/>
11
+ <path d=" M 18.10039806 64.0 L 17.88126087 63.95984173 L 16.40555859 63.49999428 L 14.99604416 62.86562347 L 13.67327213 62.06597996 L 12.45653152 61.1127243 L 11.36356354 60.01975632 L 10.41030788 58.80301476 L 9.61066437 57.48024273 L 8.97629356 56.07072926 L 8.51644611 54.59502697 L 8.2378273 53.07465553 L 8.14450073 51.53178596 L 8.2378273 49.98891735 L 8.51644611 48.46854591 L 8.97629356 46.99284363 L 9.61066437 45.58333015 L 10.41030788 44.26055813 L 11.36356354 43.04381657 L 12.45653152 41.95084858 L 13.67327213 40.99759293 L 14.99604416 40.19794941 L 16.40555859 39.56357861 L 17.88126087 39.10373116 L 19.40163136 38.8251133 L 20.94450092 38.73178673 L 22.48737049 38.8251133 L 24.00774193 39.10373116 L 25.48344421 39.56357861 L 26.89295769 40.19794941 L 28.21572971 40.99759293 L 29.43247128 41.95084858 L 30.52543831 43.04381657 L 31.47869492 44.26055813 L 32.0 45.12290192 L 32.0 57.94067097 L 31.47869492 58.80301476 L 30.52543831 60.01975632 L 29.43247128 61.1127243 L 28.21572971 62.06597996 L 26.89295769 62.86562347 L 25.48344421 63.49999428 L 24.00774193 63.95984173 L 23.78860474 64.0 Z" fill="white"/>
12
+ <path d=" M 25.4120369 59.72288322 L 23.86695194 59.47816563 L 22.4731102 58.76796818 L 21.36695194 57.66180897 L 20.65675354 56.26796818 L 20.4120369 54.72288322 L 20.65675354 53.17779827 L 21.36695194 51.78395653 L 22.4731102 50.67779827 L 23.86695194 49.96760082 L 25.4120369 49.72288322 L 26.95712185 49.96760082 L 28.35096264 50.67779827 L 29.45712185 51.78395653 L 30.1673193 53.17779827 L 30.4120369 54.72288322 L 30.1673193 56.26796818 L 29.45712185 57.66180897 L 28.35096264 58.76796818 L 26.95712185 59.47816563 Z" fill="rgb(205.0, 0, 31.875)"/>
13
+ <rect x="0" y="64" width="32" height="32" fill="rgb(50.0, 0, 100.0)"/>
14
+ <path d=" M 21.10183334 96.0 L 20.24710274 95.73365498 L 18.83758831 95.09928513 L 17.51481628 94.29964066 L 16.29807472 93.346385 L 15.20510769 92.25341797 L 14.25185108 91.03667641 L 13.45220757 89.71390438 L 12.81783676 88.30438995 L 12.35798931 86.82868767 L 12.07937145 85.30831718 L 11.98604488 83.76544762 L 12.07937145 82.22257805 L 12.35798931 80.70220661 L 12.81783676 79.22650528 L 13.45220757 77.81699085 L 14.25185108 76.49421883 L 15.20510769 75.27747726 L 16.29807472 74.18451023 L 17.51481628 73.23125362 L 18.83758831 72.43161011 L 20.24710274 71.7972393 L 21.72280407 71.33739185 L 23.24317551 71.05877399 L 24.78604507 70.96544743 L 26.32891464 71.05877399 L 27.84928513 71.33739185 L 29.32498741 71.7972393 L 30.73450184 72.43161011 L 32.0 73.19663048 L 32.0 94.3342638 L 30.73450184 95.09928513 L 29.32498741 95.73365498 L 28.47025585 96.0 Z" fill="white"/>
15
+ <path d=" M 29.09326839 90.6114006 L 27.54818344 90.36668301 L 26.15434265 89.65648556 L 25.04818344 88.5503273 L 24.33798599 87.15648556 L 24.09326839 85.6114006 L 24.33798599 84.06631565 L 25.04818344 82.67247391 L 26.15434265 81.56631565 L 27.54818344 80.8561182 L 29.09326839 80.6114006 L 30.63835335 80.8561182 L 32.0 81.5499115 L 32.0 89.67288971 L 30.63835335 90.36668301 Z" fill="rgb(205.0, 0, 63.75)"/>
16
+ <rect x="0" y="96" width="32" height="32" fill="rgb(50.0, 0, 125.0)"/>
17
+ <path d=" M 27.05850697 126.37978649 L 25.51563835 126.28645992 L 23.99526691 126.00784206 L 22.51956463 125.54799461 L 21.11005116 124.91362381 L 19.78727913 124.11398029 L 18.57053757 123.16072369 L 17.47756958 122.06775665 L 16.52431393 120.85101509 L 15.72467041 119.52824306 L 15.09029961 118.11872864 L 14.63045216 116.64302731 L 14.3518343 115.12265587 L 14.25850773 113.5797863 L 14.3518343 112.03691673 L 14.63045216 110.51654625 L 15.09029961 109.04084396 L 15.72467041 107.63132954 L 16.52431393 106.30855751 L 17.47756958 105.09181595 L 18.57053757 103.99884892 L 19.78727913 103.04559326 L 21.11005116 102.24594879 L 22.51956463 101.61157799 L 23.99526691 101.15173149 L 25.51563835 100.87311268 L 27.05850697 100.77978611 L 28.60137653 100.87311268 L 30.12174797 101.15173149 L 31.59745026 101.61157799 L 32.0 101.79275131 L 32.0 125.36682129 L 31.59745026 125.54799461 L 30.12174797 126.00784206 L 28.60137653 126.28645992 Z" fill="white"/>
18
+ <path d=" M 31.27089882 119.1815567 L 29.72581387 118.9368391 L 28.33197308 118.22664165 L 27.22581387 117.12048244 L 26.51561642 115.72664165 L 26.27089882 114.1815567 L 26.51561642 112.63647175 L 27.22581387 111.24263 L 28.33197308 110.13647175 L 29.72581387 109.4262743 L 31.27089882 109.1815567 L 32.0 109.29703522 L 32.0 119.06607819 Z" fill="rgb(205.0, 0, 95.625)"/>
19
+ <rect x="0" y="128" width="32" height="32" fill="rgb(50.0, 0, 150.0)"/>
20
+ <path d=" M 27.05850697 155.22021294 L 25.51563835 155.12688637 L 23.99526691 154.84826756 L 22.51956463 154.38842106 L 21.11005116 153.75405025 L 19.78727913 152.95440578 L 18.57053757 152.00115013 L 17.47756958 150.9081831 L 16.52431393 149.69144154 L 15.72467041 148.36866951 L 15.09029961 146.95915508 L 14.63045216 145.4834528 L 14.3518343 143.96308231 L 14.25850773 142.42021275 L 14.3518343 140.87734318 L 14.63045216 139.35697174 L 15.09029961 137.88127041 L 15.72467041 136.47175598 L 16.52431393 135.14898396 L 17.47756958 133.93224239 L 18.57053757 132.83927536 L 19.78727913 131.88601875 L 21.11005116 131.08637524 L 22.51956463 130.45200443 L 23.99526691 129.99215698 L 25.51563835 129.71353912 L 27.05850697 129.62021255 L 28.60137653 129.71353912 L 30.12174797 129.99215698 L 31.59745026 130.45200443 L 32.0 130.63317776 L 32.0 154.20724773 L 31.59745026 154.38842106 L 30.12174797 154.84826756 L 28.60137653 155.12688637 Z" fill="white"/>
21
+ <path d=" M 31.27089882 146.81844234 L 29.72581387 146.57372475 L 28.33197308 145.8635273 L 27.22581387 144.75736904 L 26.51561642 143.3635273 L 26.27089882 141.81844234 L 26.51561642 140.27335739 L 27.22581387 138.8795166 L 28.33197308 137.77335739 L 29.72581387 137.06315994 L 31.27089882 136.81844234 L 32.0 136.93392086 L 32.0 146.70296383 Z" fill="rgb(205.0, 0, 127.5)"/>
22
+ <rect x="0" y="160" width="32" height="32" fill="rgb(50.0, 0, 175.0)"/>
23
+ <path d=" M 24.78604507 185.03455162 L 23.24317551 184.94122505 L 21.72280407 184.66260719 L 20.24710274 184.20275974 L 18.83758831 183.56838894 L 17.51481628 182.76874542 L 16.29807472 181.81548882 L 15.20510769 180.72252178 L 14.25185108 179.50578022 L 13.45220757 178.18300819 L 12.81783676 176.77349377 L 12.35798931 175.29779243 L 12.07937145 173.777421 L 11.98604488 172.23455143 L 12.07937145 170.69168186 L 12.35798931 169.17131138 L 12.81783676 167.69560909 L 13.45220757 166.28609467 L 14.25185108 164.96332264 L 15.20510769 163.74658108 L 16.29807472 162.65361404 L 17.51481628 161.70035839 L 18.83758831 160.90071392 L 20.24710274 160.26634407 L 21.10183048 160.0 L 28.47025967 160.0 L 29.32498741 160.26634407 L 30.73450184 160.90071392 L 32.0 161.66573524 L 32.0 182.80336857 L 30.73450184 183.56838894 L 29.32498741 184.20275974 L 27.84928513 184.66260719 L 26.32891464 184.94122505 Z" fill="white"/>
24
+ <path d=" M 29.09326839 175.38859844 L 27.54818344 175.14388084 L 26.15434265 174.4336834 L 25.04818344 173.32752514 L 24.33798599 171.9336834 L 24.09326839 170.38859844 L 24.33798599 168.84351349 L 25.04818344 167.44967175 L 26.15434265 166.34351349 L 27.54818344 165.63331604 L 29.09326839 165.38859844 L 30.63835335 165.63331604 L 32.0 166.32710934 L 32.0 174.45008755 L 30.63835335 175.14388084 Z" fill="rgb(205.0, 0, 159.375)"/>
25
+ <rect x="0" y="192" width="32" height="32" fill="rgb(50.0, 0, 200.0)"/>
26
+ <path d=" M 20.94450092 217.26821232 L 19.40163136 217.17488575 L 17.88126087 216.89626789 L 16.40555859 216.43642044 L 14.99604416 215.80204964 L 13.67327213 215.00240612 L 12.45653152 214.04915047 L 11.36356354 212.95618248 L 10.41030788 211.73944092 L 9.61066437 210.41666889 L 8.97629356 209.00715542 L 8.51644611 207.53145313 L 8.2378273 206.0110817 L 8.14450073 204.46821308 L 8.2378273 202.92534351 L 8.51644611 201.40497208 L 8.97629356 199.92926979 L 9.61066437 198.51975632 L 10.41030788 197.19698429 L 11.36356354 195.98024273 L 12.45653152 194.88727474 L 13.67327213 193.93401909 L 14.99604416 193.13437557 L 16.40555859 192.50000477 L 17.88126087 192.04015732 L 18.10039234 192.0 L 23.78861046 192.0 L 24.00774193 192.04015732 L 25.48344421 192.50000477 L 26.89295769 193.13437557 L 28.21572971 193.93401909 L 29.43247128 194.88727474 L 30.52543831 195.98024273 L 31.47869492 197.19698429 L 32.0 198.05932808 L 32.0 210.87709713 L 31.47869492 211.73944092 L 30.52543831 212.95618248 L 29.43247128 214.04915047 L 28.21572971 215.00240612 L 26.89295769 215.80204964 L 25.48344421 216.43642044 L 24.00774193 216.89626789 L 22.48737049 217.17488575 Z" fill="white"/>
27
+ <path d=" M 25.4120369 206.27711582 L 23.86695194 206.03239822 L 22.4731102 205.32220078 L 21.36695194 204.21604252 L 20.65675354 202.82220078 L 20.4120369 201.27711582 L 20.65675354 199.73203087 L 21.36695194 198.33819008 L 22.4731102 197.23203087 L 23.86695194 196.52183342 L 25.4120369 196.27711582 L 26.95712185 196.52183342 L 28.35096264 197.23203087 L 29.45712185 198.33819008 L 30.1673193 199.73203087 L 30.4120369 201.27711582 L 30.1673193 202.82220078 L 29.45712185 204.21604252 L 28.35096264 205.32220078 L 26.95712185 206.03239822 Z" fill="rgb(205.0, 0, 191.25)"/>
28
+ <rect x="0" y="224" width="32" height="32" fill="rgb(50.0, 0, 225.0)"/>
29
+ <path d=" M 16.33729839 252.46270084 L 14.79442883 252.36937428 L 13.27405739 252.09075642 L 11.7983551 251.63090897 L 10.38884163 250.99653816 L 9.0660696 250.19689465 L 7.84932804 249.24363899 L 6.75636005 248.15067101 L 5.8031044 246.93392944 L 5.00346088 245.61115742 L 4.36909008 244.20164394 L 3.90924263 242.72594166 L 3.63062477 241.20557022 L 3.5372982 239.66270065 L 3.63062477 238.11983109 L 3.90924263 236.5994606 L 4.36909008 235.12375832 L 5.00346088 233.71424484 L 5.8031044 232.39147186 L 6.75636005 231.17473125 L 7.84932804 230.08176327 L 9.0660696 229.12850761 L 10.38884163 228.3288641 L 11.7983551 227.69449329 L 13.27405739 227.23464584 L 14.79442883 226.95602703 L 16.33729839 226.86270142 L 17.88016796 226.95602703 L 19.40053844 227.23464584 L 20.87624073 227.69449329 L 22.2857542 228.3288641 L 23.60852718 229.12850761 L 24.82526779 230.08176327 L 25.91823578 231.17473125 L 26.87149143 232.39147186 L 27.67113495 233.71424484 L 28.30550575 235.12375832 L 28.7653532 236.5994606 L 29.04397202 238.11983109 L 29.13729763 239.66270065 L 29.04397202 241.20557022 L 28.7653532 242.72594166 L 28.30550575 244.20164394 L 27.67113495 245.61115742 L 26.87149143 246.93392944 L 25.91823578 248.15067101 L 24.82526779 249.24363899 L 23.60852718 250.19689465 L 22.2857542 250.99653816 L 20.87624073 251.63090897 L 19.40053844 252.09075642 L 17.88016796 252.36937428 Z" fill="white"/>
30
+ <path d=" M 20.99709702 240.00290203 L 19.45201206 239.75818539 L 18.05817032 239.04798698 L 16.95201206 237.94182873 L 16.24181366 236.54798698 L 15.99709702 235.00290203 L 16.24181366 233.45781708 L 16.95201206 232.06397629 L 18.05817032 230.95781708 L 19.45201206 230.24761963 L 20.99709702 230.00290203 L 22.54218197 230.24761963 L 23.93602276 230.95781708 L 25.04218197 232.06397629 L 25.75237942 233.45781708 L 25.99709702 235.00290203 L 25.75237942 236.54798698 L 25.04218197 237.94182873 L 23.93602276 239.04798698 L 22.54218197 239.75818539 Z" fill="rgb(205.0, 0, 223.125)"/>
31
+ <rect x="32" y="0" width="32" height="32" fill="rgb(75.0, 0, 50.0)"/>
32
+ <path d=" M 45.12290192 32.0 L 44.26055813 31.47869492 L 43.04381657 30.52543831 L 41.95084858 29.43247128 L 40.99759293 28.21572971 L 40.19794941 26.89295769 L 39.56357861 25.48344421 L 39.10373116 24.00774193 L 38.8251133 22.48737049 L 38.73178673 20.94450092 L 38.8251133 19.40163136 L 39.10373116 17.88126087 L 39.56357861 16.40555859 L 40.19794941 14.99604416 L 40.99759293 13.67327213 L 41.95084858 12.45653152 L 43.04381657 11.36356354 L 44.26055813 10.41030788 L 45.58333015 9.61066437 L 46.99284363 8.97629356 L 48.46854591 8.51644611 L 49.98891735 8.2378273 L 51.53178596 8.14450073 L 53.07465553 8.2378273 L 54.59502697 8.51644611 L 56.07072926 8.97629356 L 57.48024273 9.61066437 L 58.80301476 10.41030788 L 60.01975632 11.36356354 L 61.1127243 12.45653152 L 62.06597996 13.67327213 L 62.86562347 14.99604416 L 63.49999428 16.40555859 L 63.95984173 17.88126087 L 64.0 18.10039806 L 64.0 23.78860474 L 63.95984173 24.00774193 L 63.49999428 25.48344421 L 62.86562347 26.89295769 L 62.06597996 28.21572971 L 61.1127243 29.43247128 L 60.01975632 30.52543831 L 58.80301476 31.47869492 L 57.94067097 32.0 Z" fill="white"/>
33
+ <path d=" M 54.72288322 30.4120369 L 53.17779827 30.1673193 L 51.78395653 29.45712185 L 50.67779827 28.35096264 L 49.96760082 26.95712185 L 49.72288322 25.4120369 L 49.96760082 23.86695194 L 50.67779827 22.4731102 L 51.78395653 21.36695194 L 53.17779827 20.65675354 L 54.72288322 20.4120369 L 56.26796818 20.65675354 L 57.66180897 21.36695194 L 58.76796818 22.4731102 L 59.47816563 23.86695194 L 59.72288322 25.4120369 L 59.47816563 26.95712185 L 58.76796818 28.35096264 L 57.66180897 29.45712185 L 56.26796818 30.1673193 Z" fill="rgb(173.125, 0, 0.0)"/>
34
+ <rect x="32" y="32" width="32" height="32" fill="rgb(75.0, 0, 75.0)"/>
35
+ <path d=" M 46.01487637 64.0 L 45.36474037 63.1701622 L 44.56509686 61.84739017 L 43.93072605 60.4378767 L 43.4708786 58.96217442 L 43.19225979 57.44180298 L 43.09893417 55.89893341 L 43.19225979 54.35606384 L 43.4708786 52.83569336 L 43.93072605 51.35999107 L 44.56509686 49.9504776 L 45.36474037 48.62770462 L 46.31799603 47.41096401 L 47.41096401 46.31799603 L 48.62770462 45.36474037 L 49.9504776 44.56509686 L 51.35999107 43.93072605 L 52.83569336 43.4708786 L 54.35606384 43.19225979 L 55.89893341 43.09893417 L 57.44180298 43.19225979 L 58.96217442 43.4708786 L 60.4378767 43.93072605 L 61.84739017 44.56509686 L 63.1701622 45.36474037 L 64.0 46.01487637 L 64.0 64.0 Z" fill="white"/>
36
+ <path d=" M 58.90778446 63.90778446 L 57.36269951 63.66306782 L 55.96885872 62.95286942 L 54.86269951 61.84671116 L 54.15250206 60.45286942 L 53.90778446 58.90778446 L 54.15250206 57.36269951 L 54.86269951 55.96885872 L 55.96885872 54.86269951 L 57.36269951 54.15250206 L 58.90778446 53.90778446 L 60.45286942 54.15250206 L 61.84671116 54.86269951 L 62.95286942 55.96885872 L 63.66306782 57.36269951 L 63.90778446 58.90778446 L 63.66306782 60.45286942 L 62.95286942 61.84671116 L 61.84671116 62.95286942 L 60.45286942 63.66306782 Z" fill="rgb(173.125, 0, 31.875)"/>
37
+ <rect x="32" y="64" width="32" height="32" fill="rgb(75.0, 0, 100.0)"/>
38
+ <path d=" M 50.71172523 96.0 L 50.37064552 95.65892029 L 49.41738987 94.44217873 L 48.61774635 93.1194067 L 47.98337555 91.70989227 L 47.5235281 90.23418999 L 47.24491024 88.7138195 L 47.15158367 87.17094994 L 47.24491024 85.62808037 L 47.5235281 84.10770893 L 47.98337555 82.6320076 L 48.61774635 81.22249317 L 49.41738987 79.89972115 L 50.37064552 78.68297958 L 51.46361351 77.59001255 L 52.68035507 76.63675594 L 54.0031271 75.83711243 L 55.41264057 75.20274162 L 56.88834286 74.74289417 L 58.40871429 74.46427631 L 59.95158291 74.37094975 L 61.49445248 74.46427631 L 63.01482391 74.74289417 L 64.0 75.04988766 L 64.0 96.0 Z" fill="white"/>
39
+ <path d=" M 62.79131317 93.87478733 L 61.24622822 93.63007069 L 59.85238743 92.91987228 L 58.74622822 91.81371403 L 58.03603077 90.41987228 L 57.79131317 88.87478733 L 58.03603077 87.32970238 L 58.74622822 85.93586159 L 59.85238743 84.82970238 L 61.24622822 84.11950493 L 62.79131317 83.87478733 L 64.0 84.06622505 L 64.0 93.68335056 Z" fill="rgb(173.125, 0, 63.75)"/>
40
+ <rect x="32" y="96" width="32" height="32" fill="rgb(75.0, 0, 125.0)"/>
41
+ <path d=" M 62.63546276 127.72709179 L 61.09259319 127.63376617 L 59.57222271 127.35514736 L 58.09652042 126.89529991 L 56.687006 126.26092911 L 55.36423397 125.46128559 L 54.14749336 124.50802994 L 53.05452538 123.41506195 L 52.10126972 122.19832134 L 51.30162621 120.87554836 L 50.6672554 119.46603489 L 50.20740795 117.9903326 L 49.92878914 116.46996212 L 49.83546257 114.92709255 L 49.92878914 113.38422298 L 50.20740795 111.86385155 L 50.6672554 110.38814926 L 51.30162621 108.97863579 L 52.10126972 107.65586376 L 53.05452538 106.4391222 L 54.14749336 105.34615421 L 55.36423397 104.39289856 L 56.687006 103.59325504 L 58.09652042 102.95888424 L 59.57222271 102.49903679 L 61.09259319 102.22041893 L 62.63546276 102.12709236 L 64.0 102.20963192 L 64.0 127.64455318 Z" fill="white"/>
42
+ <path d=" M 64.0 120.25673008 L 63.81810665 120.22792053 L 62.42426586 119.51772308 L 61.31810665 118.41156387 L 60.6079092 117.01772308 L 60.3631916 115.47263813 L 60.6079092 113.92755318 L 61.31810665 112.53371143 L 62.42426586 111.42755318 L 63.81810665 110.71735573 L 64.0 110.68854618 Z" fill="rgb(173.125, 0, 95.625)"/>
43
+ <rect x="32" y="128" width="32" height="32" fill="rgb(75.0, 0, 150.0)"/>
44
+ <path d=" M 62.63546276 153.87290668 L 61.09259319 153.77958012 L 59.57222271 153.50096226 L 58.09652042 153.04111481 L 56.687006 152.406744 L 55.36423397 151.60710049 L 54.14749336 150.65384483 L 53.05452538 149.56087685 L 52.10126972 148.34413528 L 51.30162621 147.02136326 L 50.6672554 145.61184978 L 50.20740795 144.1361475 L 49.92878914 142.61577606 L 49.83546257 141.07290649 L 49.92878914 139.53003693 L 50.20740795 138.00966644 L 50.6672554 136.53396416 L 51.30162621 135.12445068 L 52.10126972 133.8016777 L 53.05452538 132.5849371 L 54.14749336 131.49196911 L 55.36423397 130.53871346 L 56.687006 129.73906994 L 58.09652042 129.10469913 L 59.57222271 128.64485168 L 61.09259319 128.36623287 L 62.63546276 128.27290726 L 64.0 128.35544586 L 64.0 153.79036713 Z" fill="white"/>
45
+ <path d=" M 64.0 145.31145287 L 63.81810665 145.28264332 L 62.42426586 144.57244587 L 61.31810665 143.46628761 L 60.6079092 142.07244587 L 60.3631916 140.52736092 L 60.6079092 138.98227596 L 61.31810665 137.58843517 L 62.42426586 136.48227596 L 63.81810665 135.77207851 L 64.0 135.74326897 Z" fill="rgb(173.125, 0, 127.5)"/>
46
+ <rect x="32" y="160" width="32" height="32" fill="rgb(75.0, 0, 175.0)"/>
47
+ <path d=" M 59.95158291 181.6290493 L 58.40871429 181.53572273 L 56.88834286 181.25710487 L 55.41264057 180.79725742 L 54.0031271 180.16288662 L 52.68035507 179.3632431 L 51.46361351 178.4099865 L 50.37064552 177.31701946 L 49.41738987 176.1002779 L 48.61774635 174.77750587 L 47.98337555 173.36799145 L 47.5235281 171.89229012 L 47.24491024 170.37191868 L 47.15158367 168.82904911 L 47.24491024 167.28617954 L 47.5235281 165.76580906 L 47.98337555 164.29010677 L 48.61774635 162.88059235 L 49.41738987 161.55782032 L 50.37064552 160.34107876 L 50.71172428 160.0 L 64.0 160.0 L 64.0 180.95011139 L 63.01482391 181.25710487 L 61.49445248 181.53572273 Z" fill="white"/>
48
+ <path d=" M 62.79131317 172.12521172 L 61.24622822 171.88049412 L 59.85238743 171.17029667 L 58.74622822 170.06413746 L 58.03603077 168.67029667 L 57.79131317 167.12521172 L 58.03603077 165.58012676 L 58.74622822 164.18628502 L 59.85238743 163.08012676 L 61.24622822 162.36992836 L 62.79131317 162.12521172 L 64.0 162.31664848 L 64.0 171.93377399 Z" fill="rgb(173.125, 0, 159.375)"/>
49
+ <rect x="32" y="192" width="32" height="32" fill="rgb(75.0, 0, 200.0)"/>
50
+ <path d=" M 55.89893341 212.90106487 L 54.35606384 212.80773926 L 52.83569336 212.52912045 L 51.35999107 212.06927299 L 49.9504776 211.43490219 L 48.62770462 210.63525867 L 47.41096401 209.68200302 L 46.31799603 208.58903503 L 45.36474037 207.37229443 L 44.56509686 206.04952145 L 43.93072605 204.64000797 L 43.4708786 203.16430569 L 43.19225979 201.6439352 L 43.09893417 200.10106564 L 43.19225979 198.55819607 L 43.4708786 197.03782463 L 43.93072605 195.56212234 L 44.56509686 194.15260887 L 45.36474037 192.82983685 L 46.01487541 192.0 L 64.0 192.0 L 64.0 209.98512268 L 63.1701622 210.63525867 L 61.84739017 211.43490219 L 60.4378767 212.06927299 L 58.96217442 212.52912045 L 57.44180298 212.80773926 Z" fill="white"/>
51
+ <path d=" M 58.90778446 202.09221458 L 57.36269951 201.84749699 L 55.96885872 201.13729954 L 54.86269951 200.03114033 L 54.15250206 198.63729954 L 53.90778446 197.09221458 L 54.15250206 195.54712963 L 54.86269951 194.15328789 L 55.96885872 193.04712963 L 57.36269951 192.33693123 L 58.90778446 192.09221458 L 60.45286942 192.33693123 L 61.84671116 193.04712963 L 62.95286942 194.15328789 L 63.66306782 195.54712963 L 63.90778446 197.09221458 L 63.66306782 198.63729954 L 62.95286942 200.03114033 L 61.84671116 201.13729954 L 60.45286942 201.84749699 Z" fill="rgb(173.125, 0, 191.25)"/>
52
+ <rect x="32" y="224" width="32" height="32" fill="rgb(75.0, 0, 225.0)"/>
53
+ <path d=" M 51.53178596 247.85549831 L 49.98891735 247.76217175 L 48.46854591 247.48355293 L 46.99284363 247.02370548 L 45.58333015 246.38933468 L 44.26055813 245.58969116 L 43.04381657 244.63643551 L 41.95084858 243.54346752 L 40.99759293 242.32672691 L 40.19794941 241.00395489 L 39.56357861 239.59444046 L 39.10373116 238.11873817 L 38.8251133 236.59836769 L 38.73178673 235.05549812 L 38.8251133 233.51262856 L 39.10373116 231.99225712 L 39.56357861 230.51655483 L 40.19794941 229.10704136 L 40.99759293 227.78426933 L 41.95084858 226.56752777 L 43.04381657 225.47456074 L 44.26055813 224.52130413 L 45.12290096 224.0 L 57.94067192 224.0 L 58.80301476 224.52130413 L 60.01975632 225.47456074 L 61.1127243 226.56752777 L 62.06597996 227.78426933 L 62.86562347 229.10704136 L 63.49999428 230.51655483 L 63.95984173 231.99225712 L 64.0 232.21139431 L 64.0 237.89960098 L 63.95984173 238.11873817 L 63.49999428 239.59444046 L 62.86562347 241.00395489 L 62.06597996 242.32672691 L 61.1127243 243.54346752 L 60.01975632 244.63643551 L 58.80301476 245.58969116 L 57.48024273 246.38933468 L 56.07072926 247.02370548 L 54.59502697 247.48355293 L 53.07465553 247.76217175 Z" fill="white"/>
54
+ <path d=" M 54.72288322 235.58796215 L 53.17779827 235.34324551 L 51.78395653 234.6330471 L 50.67779827 233.52688885 L 49.96760082 232.1330471 L 49.72288322 230.58796215 L 49.96760082 229.0428772 L 50.67779827 227.64903641 L 51.78395653 226.5428772 L 53.17779827 225.83267975 L 54.72288322 225.58796215 L 56.26796818 225.83267975 L 57.66180897 226.5428772 L 58.76796818 227.64903641 L 59.47816563 229.0428772 L 59.72288322 230.58796215 L 59.47816563 232.1330471 L 58.76796818 233.52688885 L 57.66180897 234.6330471 L 56.26796818 235.34324551 Z" fill="rgb(173.125, 0, 223.125)"/>
55
+ <rect x="64" y="0" width="32" height="32" fill="rgb(100.0, 0, 50.0)"/>
56
+ <path d=" M 73.19663048 32.0 L 72.43161011 30.73450184 L 71.7972393 29.32498741 L 71.33739185 27.84928513 L 71.05877399 26.32891464 L 70.96544743 24.78604507 L 71.05877399 23.24317551 L 71.33739185 21.72280407 L 71.7972393 20.24710274 L 72.43161011 18.83758831 L 73.23125362 17.51481628 L 74.18451023 16.29807472 L 75.27747726 15.20510769 L 76.49421883 14.25185108 L 77.81699085 13.45220757 L 79.22650528 12.81783676 L 80.70220661 12.35798931 L 82.22257805 12.07937145 L 83.76544762 11.98604488 L 85.30831718 12.07937145 L 86.82868767 12.35798931 L 88.30438995 12.81783676 L 89.71390438 13.45220757 L 91.03667641 14.25185108 L 92.25341797 15.20510769 L 93.346385 16.29807472 L 94.29964066 17.51481628 L 95.09928513 18.83758831 L 95.73365498 20.24710274 L 96.0 21.10183334 L 96.0 28.47025585 L 95.73365498 29.32498741 L 95.09928513 30.73450184 L 94.3342638 32.0 Z" fill="white"/>
57
+ <path d=" M 81.5499115 32.0 L 80.8561182 30.63835335 L 80.6114006 29.09326839 L 80.8561182 27.54818344 L 81.56631565 26.15434265 L 82.67247391 25.04818344 L 84.06631565 24.33798599 L 85.6114006 24.09326839 L 87.15648556 24.33798599 L 88.5503273 25.04818344 L 89.65648556 26.15434265 L 90.36668301 27.54818344 L 90.6114006 29.09326839 L 90.36668301 30.63835335 L 89.67288971 32.0 Z" fill="rgb(141.25, 0, 0.0)"/>
58
+ <rect x="64" y="32" width="32" height="32" fill="rgb(100.0, 0, 75.0)"/>
59
+ <path d=" M 75.04988766 64.0 L 74.74289417 63.01482391 L 74.46427631 61.49445248 L 74.37094975 59.95158291 L 74.46427631 58.40871429 L 74.74289417 56.88834286 L 75.20274162 55.41264057 L 75.83711243 54.0031271 L 76.63675594 52.68035507 L 77.59001255 51.46361351 L 78.68297958 50.37064552 L 79.89972115 49.41738987 L 81.22249317 48.61774635 L 82.6320076 47.98337555 L 84.10770893 47.5235281 L 85.62808037 47.24491024 L 87.17094994 47.15158367 L 88.7138195 47.24491024 L 90.23418999 47.5235281 L 91.70989227 47.98337555 L 93.1194067 48.61774635 L 94.44217873 49.41738987 L 95.65892029 50.37064552 L 96.0 50.71172523 L 96.0 64.0 Z" fill="white"/>
60
+ <path d=" M 84.06622505 64.0 L 83.87478733 62.79131317 L 84.11950493 61.24622822 L 84.82970238 59.85238743 L 85.93586159 58.74622822 L 87.32970238 58.03603077 L 88.87478733 57.79131317 L 90.41987228 58.03603077 L 91.81371403 58.74622822 L 92.91987228 59.85238743 L 93.63007069 61.24622822 L 93.87478733 62.79131317 L 93.68335056 64.0 Z" fill="rgb(141.25, 0, 31.875)"/>
61
+ <rect x="64" y="64" width="32" height="32" fill="rgb(100.0, 0, 100.0)"/>
62
+ <path d=" M 79.17657852 96.0 L 78.91774464 95.42489529 L 78.45789719 93.949193 L 78.17927933 92.42882252 L 78.08595276 90.88595295 L 78.17927933 89.34308338 L 78.45789719 87.82271194 L 78.91774464 86.34701061 L 79.55211544 84.93749619 L 80.35175896 83.61472416 L 81.30501556 82.3979826 L 82.3979826 81.30501556 L 83.61472416 80.35175896 L 84.93749619 79.55211544 L 86.34701061 78.91774464 L 87.82271194 78.45789719 L 89.34308338 78.17927933 L 90.88595295 78.08595276 L 92.42882252 78.17927933 L 93.949193 78.45789719 L 95.42489529 78.91774464 L 96.0 79.17657852 L 96.0 96.0 Z" fill="white"/>
63
+ <path d=" M 89.01598835 96.0 L 88.38967514 95.37368584 L 87.67947769 93.97984505 L 87.43476009 92.43476009 L 87.67947769 90.88967514 L 88.38967514 89.4958334 L 89.4958334 88.38967514 L 90.88967514 87.67947769 L 92.43476009 87.43476009 L 93.97984505 87.67947769 L 95.37368584 88.38967514 L 96.0 89.01598835 L 96.0 95.85353088 L 95.85353088 96.0 Z" fill="rgb(141.25, 0, 63.75)"/>
64
+ <rect x="64" y="96" width="32" height="32" fill="rgb(100.0, 0, 125.0)"/>
65
+ <path d=" M 88.05883789 128.0 L 86.74688816 127.20689869 L 85.5301466 126.25364304 L 84.43717957 125.16067505 L 83.48392391 123.94393444 L 82.68427944 122.62116241 L 82.04990864 121.21164799 L 81.59006214 119.7359457 L 81.31144333 118.21557522 L 81.21811676 116.67270565 L 81.31144333 115.12983608 L 81.59006214 113.60946465 L 82.04990864 112.13376236 L 82.68427944 110.72424889 L 83.48392391 109.40147686 L 84.43717957 108.1847353 L 85.5301466 107.09176731 L 86.74688816 106.13851166 L 88.06966019 105.33886814 L 89.47917461 104.70449734 L 90.9548769 104.24464989 L 92.47524738 103.96603203 L 94.01811695 103.87270546 L 95.56098652 103.96603203 L 96.0 104.04648399 L 96.0 128.0 Z" fill="white"/>
66
+ <path d=" M 95.4362154 122.14540482 L 93.89113045 121.90068722 L 92.49728966 121.19048977 L 91.39113045 120.08433151 L 90.680933 118.69048977 L 90.4362154 117.14540482 L 90.680933 115.60031986 L 91.39113045 114.20647907 L 92.49728966 113.10031986 L 93.89113045 112.39012241 L 95.4362154 112.14540482 L 96.0 112.23469925 L 96.0 122.05611038 Z" fill="rgb(141.25, 0, 95.625)"/>
67
+ <rect x="64" y="128" width="32" height="32" fill="rgb(100.0, 0, 150.0)"/>
68
+ <path d=" M 94.01811695 152.12729359 L 92.47524738 152.03396702 L 90.9548769 151.75534916 L 89.47917461 151.29550171 L 88.06966019 150.66113091 L 86.74688816 149.86148739 L 85.5301466 148.90823174 L 84.43717957 147.81526375 L 83.48392391 146.59852219 L 82.68427944 145.27575016 L 82.04990864 143.86623669 L 81.59006214 142.3905344 L 81.31144333 140.87016296 L 81.21811676 139.3272934 L 81.31144333 137.78442383 L 81.59006214 136.26405334 L 82.04990864 134.78835106 L 82.68427944 133.37883663 L 83.48392391 132.05606461 L 84.43717957 130.839324 L 85.5301466 129.74635601 L 86.74688816 128.79310036 L 88.05883694 128.0 L 96.0 128.0 L 96.0 151.95351505 L 95.56098652 152.03396702 Z" fill="white"/>
69
+ <path d=" M 95.4362154 143.85459423 L 93.89113045 143.60987663 L 92.49728966 142.89967918 L 91.39113045 141.79351997 L 90.680933 140.39967918 L 90.4362154 138.85459423 L 90.680933 137.30950928 L 91.39113045 135.91566753 L 92.49728966 134.80950928 L 93.89113045 134.09931183 L 95.4362154 133.85459423 L 96.0 133.94388866 L 96.0 143.7652998 Z" fill="rgb(141.25, 0, 127.5)"/>
70
+ <rect x="64" y="160" width="32" height="32" fill="rgb(100.0, 0, 175.0)"/>
71
+ <path d=" M 90.88595295 177.91404629 L 89.34308338 177.82071972 L 87.82271194 177.54210186 L 86.34701061 177.08225441 L 84.93749619 176.44788361 L 83.61472416 175.64824009 L 82.3979826 174.69498348 L 81.30501556 173.60201645 L 80.35175896 172.38527489 L 79.55211544 171.06250286 L 78.91774464 169.65298843 L 78.45789719 168.1772871 L 78.17927933 166.65691566 L 78.08595276 165.1140461 L 78.17927933 163.57117653 L 78.45789719 162.05080605 L 78.91774464 160.57510376 L 79.17657757 160.0 L 96.0 160.0 L 96.0 176.82342052 L 95.42489529 177.08225441 L 93.949193 177.54210186 L 92.42882252 177.82071972 Z" fill="white"/>
72
+ <path d=" M 92.43476009 168.56523895 L 90.88967514 168.32052135 L 89.4958334 167.61032391 L 88.38967514 166.50416565 L 87.67947769 165.11032391 L 87.43476009 163.56523895 L 87.67947769 162.020154 L 88.38967514 160.62631321 L 89.0159874 160.0 L 95.85353184 160.0 L 96.0 160.14646816 L 96.0 166.9840107 L 95.37368584 167.61032391 L 93.97984505 168.32052135 Z" fill="rgb(141.25, 0, 159.375)"/>
73
+ <rect x="64" y="192" width="32" height="32" fill="rgb(100.0, 0, 200.0)"/>
74
+ <path d=" M 87.17094994 208.84841537 L 85.62808037 208.75508881 L 84.10770893 208.47647095 L 82.6320076 208.0166235 L 81.22249317 207.38225269 L 79.89972115 206.58260918 L 78.68297958 205.62935352 L 77.59001255 204.53638554 L 76.63675594 203.31964397 L 75.83711243 201.99687195 L 75.20274162 200.58735847 L 74.74289417 199.11165619 L 74.46427631 197.59128475 L 74.37094975 196.04841614 L 74.46427631 194.50554657 L 74.74289417 192.98517513 L 75.0498867 192.0 L 96.0 192.0 L 96.0 205.28827381 L 95.65892029 205.62935352 L 94.44217873 206.58260918 L 93.1194067 207.38225269 L 91.70989227 208.0166235 L 90.23418999 208.47647095 L 88.7138195 208.75508881 Z" fill="white"/>
75
+ <path d=" M 88.87478733 198.20868587 L 87.32970238 197.96396828 L 85.93586159 197.25377083 L 84.82970238 196.14761162 L 84.11950493 194.75377083 L 83.87478733 193.20868587 L 84.0662241 192.0 L 93.68335056 192.0 L 93.87478733 193.20868587 L 93.63007069 194.75377083 L 92.91987228 196.14761162 L 91.81371403 197.25377083 L 90.41987228 197.96396828 Z" fill="rgb(141.25, 0, 191.25)"/>
76
+ <rect x="64" y="224" width="32" height="32" fill="rgb(100.0, 0, 225.0)"/>
77
+ <path d=" M 83.76544762 244.01395416 L 82.22257805 243.92062759 L 80.70220661 243.64200974 L 79.22650528 243.18216228 L 77.81699085 242.54779148 L 76.49421883 241.74814796 L 75.27747726 240.79489136 L 74.18451023 239.70192432 L 73.23125362 238.48518276 L 72.43161011 237.16241074 L 71.7972393 235.75289631 L 71.33739185 234.27719498 L 71.05877399 232.75682354 L 70.96544743 231.21395397 L 71.05877399 229.6710844 L 71.33739185 228.15071392 L 71.7972393 226.67501163 L 72.43161011 225.26549721 L 73.19662952 224.0 L 94.33426476 224.0 L 95.09928513 225.26549721 L 95.73365498 226.67501163 L 96.0 227.52974319 L 96.0 234.8981657 L 95.73365498 235.75289631 L 95.09928513 237.16241074 L 94.29964066 238.48518276 L 93.346385 239.70192432 L 92.25341797 240.79489136 L 91.03667641 241.74814796 L 89.71390438 242.54779148 L 88.30438995 243.18216228 L 86.82868767 243.64200974 L 85.30831718 243.92062759 Z" fill="white"/>
78
+ <path d=" M 85.6114006 231.90673065 L 84.06631565 231.66201305 L 82.67247391 230.95181561 L 81.56631565 229.84565639 L 80.8561182 228.45181561 L 80.6114006 226.90673065 L 80.8561182 225.3616457 L 81.54991055 224.0 L 89.67289066 224.0 L 90.36668301 225.3616457 L 90.6114006 226.90673065 L 90.36668301 228.45181561 L 89.65648556 229.84565639 L 88.5503273 230.95181561 L 87.15648556 231.66201305 Z" fill="rgb(141.25, 0, 223.125)"/>
79
+ <rect x="96" y="0" width="32" height="32" fill="rgb(125.0, 0, 50.0)"/>
80
+ <path d=" M 101.79275131 32.0 L 101.61157799 31.59745026 L 101.15173149 30.12174797 L 100.87311268 28.60137653 L 100.77978611 27.05850697 L 100.87311268 25.51563835 L 101.15173149 23.99526691 L 101.61157799 22.51956463 L 102.24594879 21.11005116 L 103.04559326 19.78727913 L 103.99884892 18.57053757 L 105.09181595 17.47756958 L 106.30855751 16.52431393 L 107.63132954 15.72467041 L 109.04084396 15.09029961 L 110.51654625 14.63045216 L 112.03691673 14.3518343 L 113.5797863 14.25850773 L 115.12265587 14.3518343 L 116.64302731 14.63045216 L 118.11872864 15.09029961 L 119.52824306 15.72467041 L 120.85101509 16.52431393 L 122.06775665 17.47756958 L 123.16072369 18.57053757 L 124.11398029 19.78727913 L 124.91362381 21.11005116 L 125.54799461 22.51956463 L 126.00784206 23.99526691 L 126.28645992 25.51563835 L 126.37978649 27.05850697 L 126.28645992 28.60137653 L 126.00784206 30.12174797 L 125.54799461 31.59745026 L 125.36682129 32.0 Z" fill="white"/>
81
+ <path d=" M 109.29703522 32.0 L 109.1815567 31.27089882 L 109.4262743 29.72581387 L 110.13647175 28.33197308 L 111.24263 27.22581387 L 112.63647175 26.51561642 L 114.1815567 26.27089882 L 115.72664165 26.51561642 L 117.12048244 27.22581387 L 118.22664165 28.33197308 L 118.9368391 29.72581387 L 119.1815567 31.27089882 L 119.06607819 32.0 Z" fill="rgb(109.375, 0, 0.0)"/>
82
+ <rect x="96" y="32" width="32" height="32" fill="rgb(125.0, 0, 75.0)"/>
83
+ <path d=" M 102.20963192 64.0 L 102.12709236 62.63546276 L 102.22041893 61.09259319 L 102.49903679 59.57222271 L 102.95888424 58.09652042 L 103.59325504 56.687006 L 104.39289856 55.36423397 L 105.34615421 54.14749336 L 106.4391222 53.05452538 L 107.65586376 52.10126972 L 108.97863579 51.30162621 L 110.38814926 50.6672554 L 111.86385155 50.20740795 L 113.38422298 49.92878914 L 114.92709255 49.83546257 L 116.46996212 49.92878914 L 117.9903326 50.20740795 L 119.46603489 50.6672554 L 120.87554836 51.30162621 L 122.19832134 52.10126972 L 123.41506195 53.05452538 L 124.50802994 54.14749336 L 125.46128559 55.36423397 L 126.26092911 56.687006 L 126.89529991 58.09652042 L 127.35514736 59.57222271 L 127.63376617 61.09259319 L 127.72709179 62.63546276 L 127.64455318 64.0 Z" fill="white"/>
84
+ <path d=" M 110.68854618 64.0 L 110.71735573 63.81810665 L 111.42755318 62.42426586 L 112.53371143 61.31810665 L 113.92755318 60.6079092 L 115.47263813 60.3631916 L 117.01772308 60.6079092 L 118.41156387 61.31810665 L 119.51772308 62.42426586 L 120.22792053 63.81810665 L 120.25673008 64.0 Z" fill="rgb(109.375, 0, 31.875)"/>
85
+ <rect x="96" y="64" width="32" height="32" fill="rgb(125.0, 0, 100.0)"/>
86
+ <path d=" M 104.04648399 96.0 L 103.96603203 95.56098652 L 103.87270546 94.01811695 L 103.96603203 92.47524738 L 104.24464989 90.9548769 L 104.70449734 89.47917461 L 105.33886814 88.06966019 L 106.13851166 86.74688816 L 107.09176731 85.5301466 L 108.1847353 84.43717957 L 109.40147686 83.48392391 L 110.72424889 82.68427944 L 112.13376236 82.04990864 L 113.60946465 81.59006214 L 115.12983608 81.31144333 L 116.67270565 81.21811676 L 118.21557522 81.31144333 L 119.7359457 81.59006214 L 121.21164799 82.04990864 L 122.62116241 82.68427944 L 123.94393444 83.48392391 L 125.16067505 84.43717957 L 126.25364304 85.5301466 L 127.20689869 86.74688816 L 128.0 88.05883789 L 128.0 96.0 Z" fill="white"/>
87
+ <path d=" M 112.23469925 96.0 L 112.14540482 95.4362154 L 112.39012241 93.89113045 L 113.10031986 92.49728966 L 114.20647907 91.39113045 L 115.60031986 90.680933 L 117.14540482 90.4362154 L 118.69048977 90.680933 L 120.08433151 91.39113045 L 121.19048977 92.49728966 L 121.90068722 93.89113045 L 122.14540482 95.4362154 L 122.05611038 96.0 Z" fill="rgb(109.375, 0, 63.75)"/>
88
+ <rect x="96" y="96" width="32" height="32" fill="rgb(125.0, 0, 125.0)"/>
89
+ <path d=" M 109.93109226 128.0 L 109.52130222 127.59020996 L 108.56804657 126.3734684 L 107.7684021 125.05069637 L 107.13403225 123.64118195 L 106.6741848 122.16548061 L 106.39556599 120.64510918 L 106.30223942 119.10223961 L 106.39556599 117.55937004 L 106.6741848 116.03899956 L 107.13403225 114.56329727 L 107.7684021 113.15378284 L 108.56804657 111.83101082 L 109.52130222 110.61426926 L 110.61426926 109.52130222 L 111.83101082 108.56804657 L 113.15378284 107.7684021 L 114.56329727 107.13403225 L 116.03899956 106.6741848 L 117.55937004 106.39556599 L 119.10223961 106.30223942 L 120.64510918 106.39556599 L 122.16548061 106.6741848 L 123.64118195 107.13403225 L 125.05069637 107.7684021 L 126.3734684 108.56804657 L 127.59020996 109.52130222 L 128.0 109.93109226 L 128.0 128.0 Z" fill="white"/>
90
+ <path d=" M 119.4735527 124.4735527 L 117.92846775 124.22883511 L 116.53462601 123.51863766 L 115.42846775 122.41247845 L 114.71826935 121.01863766 L 114.4735527 119.4735527 L 114.71826935 117.92846775 L 115.42846775 116.53462601 L 116.53462601 115.42846775 L 117.92846775 114.71826935 L 119.4735527 114.4735527 L 121.01863766 114.71826935 L 122.41247845 115.42846775 L 123.51863766 116.53462601 L 124.22883511 117.92846775 L 124.4735527 119.4735527 L 124.22883511 121.01863766 L 123.51863766 122.41247845 L 122.41247845 123.51863766 L 121.01863766 124.22883511 Z" fill="rgb(109.375, 0, 95.625)"/>
91
+ <rect x="96" y="128" width="32" height="32" fill="rgb(125.0, 0, 150.0)"/>
92
+ <path d=" M 119.10223961 149.69775963 L 117.55937004 149.60443306 L 116.03899956 149.32581425 L 114.56329727 148.8659668 L 113.15378284 148.23159695 L 111.83101082 147.43195248 L 110.61426926 146.47869682 L 109.52130222 145.38572979 L 108.56804657 144.16898823 L 107.7684021 142.8462162 L 107.13403225 141.43670177 L 106.6741848 139.96099949 L 106.39556599 138.44062901 L 106.30223942 136.89775944 L 106.39556599 135.35488987 L 106.6741848 133.83451843 L 107.13403225 132.3588171 L 107.7684021 130.94930267 L 108.56804657 129.62653065 L 109.52130222 128.40978909 L 109.93109131 128.0 L 128.0 128.0 L 128.0 146.06890678 L 127.59020996 146.47869682 L 126.3734684 147.43195248 L 125.05069637 148.23159695 L 123.64118195 148.8659668 L 122.16548061 149.32581425 L 120.64510918 149.60443306 Z" fill="white"/>
93
+ <path d=" M 119.4735527 141.52644634 L 117.92846775 141.2817297 L 116.53462601 140.5715313 L 115.42846775 139.46537304 L 114.71826935 138.0715313 L 114.4735527 136.52644634 L 114.71826935 134.98136139 L 115.42846775 133.5875206 L 116.53462601 132.48136139 L 117.92846775 131.77116394 L 119.4735527 131.52644634 L 121.01863766 131.77116394 L 122.41247845 132.48136139 L 123.51863766 133.5875206 L 124.22883511 134.98136139 L 124.4735527 136.52644634 L 124.22883511 138.0715313 L 123.51863766 139.46537304 L 122.41247845 140.5715313 L 121.01863766 141.2817297 Z" fill="rgb(109.375, 0, 127.5)"/>
94
+ <rect x="96" y="160" width="32" height="32" fill="rgb(125.0, 0, 175.0)"/>
95
+ <path d=" M 116.67270565 174.78188229 L 115.12983608 174.68855572 L 113.60946465 174.4099369 L 112.13376236 173.95009041 L 110.72424889 173.3157196 L 109.40147686 172.51607513 L 108.1847353 171.56281948 L 107.09176731 170.46985245 L 106.13851166 169.25311089 L 105.33886814 167.93033886 L 104.70449734 166.52082443 L 104.24464989 165.04512215 L 103.96603203 163.52475166 L 103.87270546 161.9818821 L 103.96603203 160.43901253 L 104.04648399 160.0 L 128.0 160.0 L 128.0 167.94116116 L 127.20689869 169.25311089 L 126.25364304 170.46985245 L 125.16067505 171.56281948 L 123.94393444 172.51607513 L 122.62116241 173.3157196 L 121.21164799 173.95009041 L 119.7359457 174.4099369 L 118.21557522 174.68855572 Z" fill="white"/>
96
+ <path d=" M 117.14540482 165.56378365 L 115.60031986 165.31906605 L 114.20647907 164.6088686 L 113.10031986 163.50270939 L 112.39012241 162.1088686 L 112.14540482 160.56378365 L 112.23469925 160.0 L 122.05611038 160.0 L 122.14540482 160.56378365 L 121.90068722 162.1088686 L 121.19048977 163.50270939 L 120.08433151 164.6088686 L 118.69048977 165.31906605 Z" fill="rgb(109.375, 0, 159.375)"/>
97
+ <rect x="96" y="192" width="32" height="32" fill="rgb(125.0, 0, 200.0)"/>
98
+ <path d=" M 114.92709255 206.16453648 L 113.38422298 206.07120991 L 111.86385155 205.79259109 L 110.38814926 205.33274364 L 108.97863579 204.69837284 L 107.65586376 203.89872932 L 106.4391222 202.94547367 L 105.34615421 201.85250568 L 104.39289856 200.63576508 L 103.59325504 199.31299305 L 102.95888424 197.90347862 L 102.49903679 196.42777634 L 102.22041893 194.90740585 L 102.12709236 193.36453629 L 102.20963192 192.0 L 127.64455318 192.0 L 127.72709179 193.36453629 L 127.63376617 194.90740585 L 127.35514736 196.42777634 L 126.89529991 197.90347862 L 126.26092911 199.31299305 L 125.46128559 200.63576508 L 124.50802994 201.85250568 L 123.41506195 202.94547367 L 122.19832134 203.89872932 L 120.87554836 204.69837284 L 119.46603489 205.33274364 L 117.9903326 205.79259109 L 116.46996212 206.07120991 Z" fill="white"/>
99
+ <path d=" M 115.47263813 195.63680744 L 113.92755318 195.39208984 L 112.53371143 194.6818924 L 111.42755318 193.57573318 L 110.71735573 192.1818924 L 110.68854713 192.0 L 120.25672913 192.0 L 120.22792053 192.1818924 L 119.51772308 193.57573318 L 118.41156387 194.6818924 L 117.01772308 195.39208984 Z" fill="rgb(109.375, 0, 191.25)"/>
100
+ <rect x="96" y="224" width="32" height="32" fill="rgb(125.0, 0, 225.0)"/>
101
+ <path d=" M 113.5797863 241.74149132 L 112.03691673 241.64816475 L 110.51654625 241.36954689 L 109.04084396 240.90969944 L 107.63132954 240.27532864 L 106.30855751 239.47568512 L 105.09181595 238.52242947 L 103.99884892 237.42946148 L 103.04559326 236.21271992 L 102.24594879 234.88994789 L 101.61157799 233.48043442 L 101.15173149 232.00473213 L 100.87311268 230.48436069 L 100.77978611 228.94149208 L 100.87311268 227.39862251 L 101.15173149 225.87825108 L 101.61157799 224.40254879 L 101.79275036 224.0 L 125.36682224 224.0 L 125.54799461 224.40254879 L 126.00784206 225.87825108 L 126.28645992 227.39862251 L 126.37978649 228.94149208 L 126.28645992 230.48436069 L 126.00784206 232.00473213 L 125.54799461 233.48043442 L 124.91362381 234.88994789 L 124.11398029 236.21271992 L 123.16072369 237.42946148 L 122.06775665 238.52242947 L 120.85101509 239.47568512 L 119.52824306 240.27532864 L 118.11872864 240.90969944 L 116.64302731 241.36954689 L 115.12265587 241.64816475 Z" fill="white"/>
102
+ <path d=" M 114.1815567 229.72910023 L 112.63647175 229.48438263 L 111.24263 228.77418518 L 110.13647175 227.66802597 L 109.4262743 226.27418518 L 109.1815567 224.72910023 L 109.29703522 224.0 L 119.06607819 224.0 L 119.1815567 224.72910023 L 118.9368391 226.27418518 L 118.22664165 227.66802597 L 117.12048244 228.77418518 L 115.72664165 229.48438263 Z" fill="rgb(109.375, 0, 223.125)"/>
103
+ <rect x="128" y="0" width="32" height="32" fill="rgb(150.0, 0, 50.0)"/>
104
+ <path d=" M 130.63317776 32.0 L 130.45200443 31.59745026 L 129.99215698 30.12174797 L 129.71353912 28.60137653 L 129.62021255 27.05850697 L 129.71353912 25.51563835 L 129.99215698 23.99526691 L 130.45200443 22.51956463 L 131.08637524 21.11005116 L 131.88601875 19.78727913 L 132.83927536 18.57053757 L 133.93224239 17.47756958 L 135.14898396 16.52431393 L 136.47175598 15.72467041 L 137.88127041 15.09029961 L 139.35697174 14.63045216 L 140.87734318 14.3518343 L 142.42021275 14.25850773 L 143.96308231 14.3518343 L 145.4834528 14.63045216 L 146.95915508 15.09029961 L 148.36866951 15.72467041 L 149.69144154 16.52431393 L 150.9081831 17.47756958 L 152.00115013 18.57053757 L 152.95440578 19.78727913 L 153.75405025 21.11005116 L 154.38842106 22.51956463 L 154.84826756 23.99526691 L 155.12688637 25.51563835 L 155.22021294 27.05850697 L 155.12688637 28.60137653 L 154.84826756 30.12174797 L 154.38842106 31.59745026 L 154.20724773 32.0 Z" fill="white"/>
105
+ <path d=" M 136.93392086 32.0 L 136.81844234 31.27089882 L 137.06315994 29.72581387 L 137.77335739 28.33197308 L 138.8795166 27.22581387 L 140.27335739 26.51561642 L 141.81844234 26.27089882 L 143.3635273 26.51561642 L 144.75736904 27.22581387 L 145.8635273 28.33197308 L 146.57372475 29.72581387 L 146.81844234 31.27089882 L 146.70296383 32.0 Z" fill="rgb(77.5, 0, 0.0)"/>
106
+ <rect x="128" y="32" width="32" height="32" fill="rgb(150.0, 0, 75.0)"/>
107
+ <path d=" M 128.35544586 64.0 L 128.27290726 62.63546276 L 128.36623287 61.09259319 L 128.64485168 59.57222271 L 129.10469913 58.09652042 L 129.73906994 56.687006 L 130.53871346 55.36423397 L 131.49196911 54.14749336 L 132.5849371 53.05452538 L 133.8016777 52.10126972 L 135.12445068 51.30162621 L 136.53396416 50.6672554 L 138.00966644 50.20740795 L 139.53003693 49.92878914 L 141.07290649 49.83546257 L 142.61577606 49.92878914 L 144.1361475 50.20740795 L 145.61184978 50.6672554 L 147.02136326 51.30162621 L 148.34413528 52.10126972 L 149.56087685 53.05452538 L 150.65384483 54.14749336 L 151.60710049 55.36423397 L 152.406744 56.687006 L 153.04111481 58.09652042 L 153.50096226 59.57222271 L 153.77958012 61.09259319 L 153.87290668 62.63546276 L 153.79036713 64.0 Z" fill="white"/>
108
+ <path d=" M 135.74326897 64.0 L 135.77207851 63.81810665 L 136.48227596 62.42426586 L 137.58843517 61.31810665 L 138.98227596 60.6079092 L 140.52736092 60.3631916 L 142.07244587 60.6079092 L 143.46628761 61.31810665 L 144.57244587 62.42426586 L 145.28264332 63.81810665 L 145.31145287 64.0 Z" fill="rgb(77.5, 0, 31.875)"/>
109
+ <rect x="128" y="64" width="32" height="32" fill="rgb(150.0, 0, 100.0)"/>
110
+ <path d=" M 128.0 96.0 L 128.0 88.05883694 L 128.79310036 86.74688816 L 129.74635601 85.5301466 L 130.839324 84.43717957 L 132.05606461 83.48392391 L 133.37883663 82.68427944 L 134.78835106 82.04990864 L 136.26405334 81.59006214 L 137.78442383 81.31144333 L 139.3272934 81.21811676 L 140.87016296 81.31144333 L 142.3905344 81.59006214 L 143.86623669 82.04990864 L 145.27575016 82.68427944 L 146.59852219 83.48392391 L 147.81526375 84.43717957 L 148.90823174 85.5301466 L 149.86148739 86.74688816 L 150.66113091 88.06966019 L 151.29550171 89.47917461 L 151.75534916 90.9548769 L 152.03396702 92.47524738 L 152.12729359 94.01811695 L 152.03396702 95.56098652 L 151.95351505 96.0 Z" fill="white"/>
111
+ <path d=" M 133.94388866 96.0 L 133.85459423 95.4362154 L 134.09931183 93.89113045 L 134.80950928 92.49728966 L 135.91566753 91.39113045 L 137.30950928 90.680933 L 138.85459423 90.4362154 L 140.39967918 90.680933 L 141.79351997 91.39113045 L 142.89967918 92.49728966 L 143.60987663 93.89113045 L 143.85459423 95.4362154 L 143.7652998 96.0 Z" fill="rgb(77.5, 0, 63.75)"/>
112
+ <rect x="128" y="96" width="32" height="32" fill="rgb(150.0, 0, 125.0)"/>
113
+ <path d=" M 128.0 128.0 L 128.0 109.93109131 L 128.40978909 109.52130222 L 129.62653065 108.56804657 L 130.94930267 107.7684021 L 132.3588171 107.13403225 L 133.83451843 106.6741848 L 135.35488987 106.39556599 L 136.89775944 106.30223942 L 138.44062901 106.39556599 L 139.96099949 106.6741848 L 141.43670177 107.13403225 L 142.8462162 107.7684021 L 144.16898823 108.56804657 L 145.38572979 109.52130222 L 146.47869682 110.61426926 L 147.43195248 111.83101082 L 148.23159695 113.15378284 L 148.8659668 114.56329727 L 149.32581425 116.03899956 L 149.60443306 117.55937004 L 149.69775963 119.10223961 L 149.60443306 120.64510918 L 149.32581425 122.16548061 L 148.8659668 123.64118195 L 148.23159695 125.05069637 L 147.43195248 126.3734684 L 146.47869682 127.59020996 L 146.06890678 128.0 Z" fill="white"/>
114
+ <path d=" M 136.52644634 124.4735527 L 134.98136139 124.22883511 L 133.5875206 123.51863766 L 132.48136139 122.41247845 L 131.77116394 121.01863766 L 131.52644634 119.4735527 L 131.77116394 117.92846775 L 132.48136139 116.53462601 L 133.5875206 115.42846775 L 134.98136139 114.71826935 L 136.52644634 114.4735527 L 138.0715313 114.71826935 L 139.46537304 115.42846775 L 140.5715313 116.53462601 L 141.2817297 117.92846775 L 141.52644634 119.4735527 L 141.2817297 121.01863766 L 140.5715313 122.41247845 L 139.46537304 123.51863766 L 138.0715313 124.22883511 Z" fill="rgb(77.5, 0, 95.625)"/>
115
+ <rect x="128" y="128" width="32" height="32" fill="rgb(150.0, 0, 150.0)"/>
116
+ <path d=" M 136.89775944 149.69775963 L 135.35488987 149.60443306 L 133.83451843 149.32581425 L 132.3588171 148.8659668 L 130.94930267 148.23159695 L 129.62653065 147.43195248 L 128.40978909 146.47869682 L 128.0 146.06890774 L 128.0 128.0 L 146.06890774 128.0 L 146.47869682 128.40978909 L 147.43195248 129.62653065 L 148.23159695 130.94930267 L 148.8659668 132.3588171 L 149.32581425 133.83451843 L 149.60443306 135.35488987 L 149.69775963 136.89775944 L 149.60443306 138.44062901 L 149.32581425 139.96099949 L 148.8659668 141.43670177 L 148.23159695 142.8462162 L 147.43195248 144.16898823 L 146.47869682 145.38572979 L 145.38572979 146.47869682 L 144.16898823 147.43195248 L 142.8462162 148.23159695 L 141.43670177 148.8659668 L 139.96099949 149.32581425 L 138.44062901 149.60443306 Z" fill="white"/>
117
+ <path d=" M 136.52644634 141.52644634 L 134.98136139 141.2817297 L 133.5875206 140.5715313 L 132.48136139 139.46537304 L 131.77116394 138.0715313 L 131.52644634 136.52644634 L 131.77116394 134.98136139 L 132.48136139 133.5875206 L 133.5875206 132.48136139 L 134.98136139 131.77116394 L 136.52644634 131.52644634 L 138.0715313 131.77116394 L 139.46537304 132.48136139 L 140.5715313 133.5875206 L 141.2817297 134.98136139 L 141.52644634 136.52644634 L 141.2817297 138.0715313 L 140.5715313 139.46537304 L 139.46537304 140.5715313 L 138.0715313 141.2817297 Z" fill="rgb(77.5, 0, 127.5)"/>
118
+ <rect x="128" y="160" width="32" height="32" fill="rgb(150.0, 0, 175.0)"/>
119
+ <path d=" M 139.3272934 174.78188229 L 137.78442383 174.68855572 L 136.26405334 174.4099369 L 134.78835106 173.95009041 L 133.37883663 173.3157196 L 132.05606461 172.51607513 L 130.839324 171.56281948 L 129.74635601 170.46985245 L 128.79310036 169.25311089 L 128.0 167.94116211 L 128.0 160.0 L 151.95351505 160.0 L 152.03396702 160.43901253 L 152.12729359 161.9818821 L 152.03396702 163.52475166 L 151.75534916 165.04512215 L 151.29550171 166.52082443 L 150.66113091 167.93033886 L 149.86148739 169.25311089 L 148.90823174 170.46985245 L 147.81526375 171.56281948 L 146.59852219 172.51607513 L 145.27575016 173.3157196 L 143.86623669 173.95009041 L 142.3905344 174.4099369 L 140.87016296 174.68855572 Z" fill="white"/>
120
+ <path d=" M 138.85459423 165.56378365 L 137.30950928 165.31906605 L 135.91566753 164.6088686 L 134.80950928 163.50270939 L 134.09931183 162.1088686 L 133.85459423 160.56378365 L 133.94388866 160.0 L 143.7652998 160.0 L 143.85459423 160.56378365 L 143.60987663 162.1088686 L 142.89967918 163.50270939 L 141.79351997 164.6088686 L 140.39967918 165.31906605 Z" fill="rgb(77.5, 0, 159.375)"/>
121
+ <rect x="128" y="192" width="32" height="32" fill="rgb(150.0, 0, 200.0)"/>
122
+ <path d=" M 141.07290649 206.16453648 L 139.53003693 206.07120991 L 138.00966644 205.79259109 L 136.53396416 205.33274364 L 135.12445068 204.69837284 L 133.8016777 203.89872932 L 132.5849371 202.94547367 L 131.49196911 201.85250568 L 130.53871346 200.63576508 L 129.73906994 199.31299305 L 129.10469913 197.90347862 L 128.64485168 196.42777634 L 128.36623287 194.90740585 L 128.27290726 193.36453629 L 128.35544586 192.0 L 153.79036713 192.0 L 153.87290668 193.36453629 L 153.77958012 194.90740585 L 153.50096226 196.42777634 L 153.04111481 197.90347862 L 152.406744 199.31299305 L 151.60710049 200.63576508 L 150.65384483 201.85250568 L 149.56087685 202.94547367 L 148.34413528 203.89872932 L 147.02136326 204.69837284 L 145.61184978 205.33274364 L 144.1361475 205.79259109 L 142.61577606 206.07120991 Z" fill="white"/>
123
+ <path d=" M 140.52736092 195.63680744 L 138.98227596 195.39208984 L 137.58843517 194.6818924 L 136.48227596 193.57573318 L 135.77207851 192.1818924 L 135.74326992 192.0 L 145.31145191 192.0 L 145.28264332 192.1818924 L 144.57244587 193.57573318 L 143.46628761 194.6818924 L 142.07244587 195.39208984 Z" fill="rgb(77.5, 0, 191.25)"/>
124
+ <rect x="128" y="224" width="32" height="32" fill="rgb(150.0, 0, 225.0)"/>
125
+ <path d=" M 142.42021275 241.74149132 L 140.87734318 241.64816475 L 139.35697174 241.36954689 L 137.88127041 240.90969944 L 136.47175598 240.27532864 L 135.14898396 239.47568512 L 133.93224239 238.52242947 L 132.83927536 237.42946148 L 131.88601875 236.21271992 L 131.08637524 234.88994789 L 130.45200443 233.48043442 L 129.99215698 232.00473213 L 129.71353912 230.48436069 L 129.62021255 228.94149208 L 129.71353912 227.39862251 L 129.99215698 225.87825108 L 130.45200443 224.40254879 L 130.6331768 224.0 L 154.20724869 224.0 L 154.38842106 224.40254879 L 154.84826756 225.87825108 L 155.12688637 227.39862251 L 155.22021294 228.94149208 L 155.12688637 230.48436069 L 154.84826756 232.00473213 L 154.38842106 233.48043442 L 153.75405025 234.88994789 L 152.95440578 236.21271992 L 152.00115013 237.42946148 L 150.9081831 238.52242947 L 149.69144154 239.47568512 L 148.36866951 240.27532864 L 146.95915508 240.90969944 L 145.4834528 241.36954689 L 143.96308231 241.64816475 Z" fill="white"/>
126
+ <path d=" M 141.81844234 229.72910023 L 140.27335739 229.48438263 L 138.8795166 228.77418518 L 137.77335739 227.66802597 L 137.06315994 226.27418518 L 136.81844234 224.72910023 L 136.93392086 224.0 L 146.70296383 224.0 L 146.81844234 224.72910023 L 146.57372475 226.27418518 L 145.8635273 227.66802597 L 144.75736904 228.77418518 L 143.3635273 229.48438263 Z" fill="rgb(77.5, 0, 223.125)"/>
127
+ <rect x="160" y="0" width="32" height="32" fill="rgb(175.0, 0, 50.0)"/>
128
+ <path d=" M 161.66573524 32.0 L 160.90071392 30.73450184 L 160.26634407 29.32498741 L 160.0 28.47025967 L 160.0 21.10183048 L 160.26634407 20.24710274 L 160.90071392 18.83758831 L 161.70035839 17.51481628 L 162.65361404 16.29807472 L 163.74658108 15.20510769 L 164.96332264 14.25185108 L 166.28609467 13.45220757 L 167.69560909 12.81783676 L 169.17131138 12.35798931 L 170.69168186 12.07937145 L 172.23455143 11.98604488 L 173.777421 12.07937145 L 175.29779243 12.35798931 L 176.77349377 12.81783676 L 178.18300819 13.45220757 L 179.50578022 14.25185108 L 180.72252178 15.20510769 L 181.81548882 16.29807472 L 182.76874542 17.51481628 L 183.56838894 18.83758831 L 184.20275974 20.24710274 L 184.66260719 21.72280407 L 184.94122505 23.24317551 L 185.03455162 24.78604507 L 184.94122505 26.32891464 L 184.66260719 27.84928513 L 184.20275974 29.32498741 L 183.56838894 30.73450184 L 182.80336857 32.0 Z" fill="white"/>
129
+ <path d=" M 166.32710934 32.0 L 165.63331604 30.63835335 L 165.38859844 29.09326839 L 165.63331604 27.54818344 L 166.34351349 26.15434265 L 167.44967175 25.04818344 L 168.84351349 24.33798599 L 170.38859844 24.09326839 L 171.9336834 24.33798599 L 173.32752514 25.04818344 L 174.4336834 26.15434265 L 175.14388084 27.54818344 L 175.38859844 29.09326839 L 175.14388084 30.63835335 L 174.45008755 32.0 Z" fill="rgb(45.625, 0, 0.0)"/>
130
+ <rect x="160" y="32" width="32" height="32" fill="rgb(175.0, 0, 75.0)"/>
131
+ <path d=" M 160.0 64.0 L 160.0 50.71172428 L 160.34107876 50.37064552 L 161.55782032 49.41738987 L 162.88059235 48.61774635 L 164.29010677 47.98337555 L 165.76580906 47.5235281 L 167.28617954 47.24491024 L 168.82904911 47.15158367 L 170.37191868 47.24491024 L 171.89229012 47.5235281 L 173.36799145 47.98337555 L 174.77750587 48.61774635 L 176.1002779 49.41738987 L 177.31701946 50.37064552 L 178.4099865 51.46361351 L 179.3632431 52.68035507 L 180.16288662 54.0031271 L 180.79725742 55.41264057 L 181.25710487 56.88834286 L 181.53572273 58.40871429 L 181.6290493 59.95158291 L 181.53572273 61.49445248 L 181.25710487 63.01482391 L 180.95011139 64.0 Z" fill="white"/>
132
+ <path d=" M 162.31664848 64.0 L 162.12521172 62.79131317 L 162.36992836 61.24622822 L 163.08012676 59.85238743 L 164.18628502 58.74622822 L 165.58012676 58.03603077 L 167.12521172 57.79131317 L 168.67029667 58.03603077 L 170.06413746 58.74622822 L 171.17029667 59.85238743 L 171.88049412 61.24622822 L 172.12521172 62.79131317 L 171.93377399 64.0 Z" fill="rgb(45.625, 0, 31.875)"/>
133
+ <rect x="160" y="64" width="32" height="32" fill="rgb(175.0, 0, 100.0)"/>
134
+ <path d=" M 160.0 96.0 L 160.0 79.17657757 L 160.57510376 78.91774464 L 162.05080605 78.45789719 L 163.57117653 78.17927933 L 165.1140461 78.08595276 L 166.65691566 78.17927933 L 168.1772871 78.45789719 L 169.65298843 78.91774464 L 171.06250286 79.55211544 L 172.38527489 80.35175896 L 173.60201645 81.30501556 L 174.69498348 82.3979826 L 175.64824009 83.61472416 L 176.44788361 84.93749619 L 177.08225441 86.34701061 L 177.54210186 87.82271194 L 177.82071972 89.34308338 L 177.91404629 90.88595295 L 177.82071972 92.42882252 L 177.54210186 93.949193 L 177.08225441 95.42489529 L 176.82342052 96.0 Z" fill="white"/>
135
+ <path d=" M 160.14646816 96.0 L 160.0 95.85353184 L 160.0 89.0159874 L 160.62631321 88.38967514 L 162.020154 87.67947769 L 163.56523895 87.43476009 L 165.11032391 87.67947769 L 166.50416565 88.38967514 L 167.61032391 89.4958334 L 168.32052135 90.88967514 L 168.56523895 92.43476009 L 168.32052135 93.97984505 L 167.61032391 95.37368584 L 166.9840107 96.0 Z" fill="rgb(45.625, 0, 63.75)"/>
136
+ <rect x="160" y="96" width="32" height="32" fill="rgb(175.0, 0, 125.0)"/>
137
+ <path d=" M 160.0 128.0 L 160.0 104.04648399 L 160.43901253 103.96603203 L 161.9818821 103.87270546 L 163.52475166 103.96603203 L 165.04512215 104.24464989 L 166.52082443 104.70449734 L 167.93033886 105.33886814 L 169.25311089 106.13851166 L 170.46985245 107.09176731 L 171.56281948 108.1847353 L 172.51607513 109.40147686 L 173.3157196 110.72424889 L 173.95009041 112.13376236 L 174.4099369 113.60946465 L 174.68855572 115.12983608 L 174.78188229 116.67270565 L 174.68855572 118.21557522 L 174.4099369 119.7359457 L 173.95009041 121.21164799 L 173.3157196 122.62116241 L 172.51607513 123.94393444 L 171.56281948 125.16067505 L 170.46985245 126.25364304 L 169.25311089 127.20689869 L 167.94116116 128.0 Z" fill="white"/>
138
+ <path d=" M 160.56378365 122.14540482 L 160.0 122.05611038 L 160.0 112.23469925 L 160.56378365 112.14540482 L 162.1088686 112.39012241 L 163.50270939 113.10031986 L 164.6088686 114.20647907 L 165.31906605 115.60031986 L 165.56378365 117.14540482 L 165.31906605 118.69048977 L 164.6088686 120.08433151 L 163.50270939 121.19048977 L 162.1088686 121.90068722 Z" fill="rgb(45.625, 0, 95.625)"/>
139
+ <rect x="160" y="128" width="32" height="32" fill="rgb(175.0, 0, 150.0)"/>
140
+ <path d=" M 161.9818821 152.12729359 L 160.43901253 152.03396702 L 160.0 151.95351505 L 160.0 128.0 L 167.94116211 128.0 L 169.25311089 128.79310036 L 170.46985245 129.74635601 L 171.56281948 130.839324 L 172.51607513 132.05606461 L 173.3157196 133.37883663 L 173.95009041 134.78835106 L 174.4099369 136.26405334 L 174.68855572 137.78442383 L 174.78188229 139.3272934 L 174.68855572 140.87016296 L 174.4099369 142.3905344 L 173.95009041 143.86623669 L 173.3157196 145.27575016 L 172.51607513 146.59852219 L 171.56281948 147.81526375 L 170.46985245 148.90823174 L 169.25311089 149.86148739 L 167.93033886 150.66113091 L 166.52082443 151.29550171 L 165.04512215 151.75534916 L 163.52475166 152.03396702 Z" fill="white"/>
141
+ <path d=" M 160.56378365 143.85459423 L 160.0 143.7652998 L 160.0 133.94388866 L 160.56378365 133.85459423 L 162.1088686 134.09931183 L 163.50270939 134.80950928 L 164.6088686 135.91566753 L 165.31906605 137.30950928 L 165.56378365 138.85459423 L 165.31906605 140.39967918 L 164.6088686 141.79351997 L 163.50270939 142.89967918 L 162.1088686 143.60987663 Z" fill="rgb(45.625, 0, 127.5)"/>
142
+ <rect x="160" y="160" width="32" height="32" fill="rgb(175.0, 0, 175.0)"/>
143
+ <path d=" M 165.1140461 177.91404629 L 163.57117653 177.82071972 L 162.05080605 177.54210186 L 160.57510376 177.08225441 L 160.0 176.82342148 L 160.0 160.0 L 176.82342148 160.0 L 177.08225441 160.57510376 L 177.54210186 162.05080605 L 177.82071972 163.57117653 L 177.91404629 165.1140461 L 177.82071972 166.65691566 L 177.54210186 168.1772871 L 177.08225441 169.65298843 L 176.44788361 171.06250286 L 175.64824009 172.38527489 L 174.69498348 173.60201645 L 173.60201645 174.69498348 L 172.38527489 175.64824009 L 171.06250286 176.44788361 L 169.65298843 177.08225441 L 168.1772871 177.54210186 L 166.65691566 177.82071972 Z" fill="white"/>
144
+ <path d=" M 163.56523895 168.56523895 L 162.020154 168.32052135 L 160.62631321 167.61032391 L 160.0 166.98401165 L 160.0 160.14646721 L 160.14646721 160.0 L 166.98401165 160.0 L 167.61032391 160.62631321 L 168.32052135 162.020154 L 168.56523895 163.56523895 L 168.32052135 165.11032391 L 167.61032391 166.50416565 L 166.50416565 167.61032391 L 165.11032391 168.32052135 Z" fill="rgb(45.625, 0, 159.375)"/>
145
+ <rect x="160" y="192" width="32" height="32" fill="rgb(175.0, 0, 200.0)"/>
146
+ <path d=" M 168.82904911 208.84841537 L 167.28617954 208.75508881 L 165.76580906 208.47647095 L 164.29010677 208.0166235 L 162.88059235 207.38225269 L 161.55782032 206.58260918 L 160.34107876 205.62935352 L 160.0 205.28827477 L 160.0 192.0 L 180.95011234 192.0 L 181.25710487 192.98517513 L 181.53572273 194.50554657 L 181.6290493 196.04841614 L 181.53572273 197.59128475 L 181.25710487 199.11165619 L 180.79725742 200.58735847 L 180.16288662 201.99687195 L 179.3632431 203.31964397 L 178.4099865 204.53638554 L 177.31701946 205.62935352 L 176.1002779 206.58260918 L 174.77750587 207.38225269 L 173.36799145 208.0166235 L 171.89229012 208.47647095 L 170.37191868 208.75508881 Z" fill="white"/>
147
+ <path d=" M 167.12521172 198.20868587 L 165.58012676 197.96396828 L 164.18628502 197.25377083 L 163.08012676 196.14761162 L 162.36992836 194.75377083 L 162.12521172 193.20868587 L 162.31664848 192.0 L 171.93377495 192.0 L 172.12521172 193.20868587 L 171.88049412 194.75377083 L 171.17029667 196.14761162 L 170.06413746 197.25377083 L 168.67029667 197.96396828 Z" fill="rgb(45.625, 0, 191.25)"/>
148
+ <rect x="160" y="224" width="32" height="32" fill="rgb(175.0, 0, 225.0)"/>
149
+ <path d=" M 172.23455143 244.01395416 L 170.69168186 243.92062759 L 169.17131138 243.64200974 L 167.69560909 243.18216228 L 166.28609467 242.54779148 L 164.96332264 241.74814796 L 163.74658108 240.79489136 L 162.65361404 239.70192432 L 161.70035839 238.48518276 L 160.90071392 237.16241074 L 160.26634407 235.75289631 L 160.0 234.89816856 L 160.0 227.52973938 L 160.26634407 226.67501163 L 160.90071392 225.26549721 L 161.66573429 224.0 L 182.80336952 224.0 L 183.56838894 225.26549721 L 184.20275974 226.67501163 L 184.66260719 228.15071392 L 184.94122505 229.6710844 L 185.03455162 231.21395397 L 184.94122505 232.75682354 L 184.66260719 234.27719498 L 184.20275974 235.75289631 L 183.56838894 237.16241074 L 182.76874542 238.48518276 L 181.81548882 239.70192432 L 180.72252178 240.79489136 L 179.50578022 241.74814796 L 178.18300819 242.54779148 L 176.77349377 243.18216228 L 175.29779243 243.64200974 L 173.777421 243.92062759 Z" fill="white"/>
150
+ <path d=" M 170.38859844 231.90673065 L 168.84351349 231.66201305 L 167.44967175 230.95181561 L 166.34351349 229.84565639 L 165.63331604 228.45181561 L 165.38859844 226.90673065 L 165.63331604 225.3616457 L 166.32710838 224.0 L 174.4500885 224.0 L 175.14388084 225.3616457 L 175.38859844 226.90673065 L 175.14388084 228.45181561 L 174.4336834 229.84565639 L 173.32752514 230.95181561 L 171.9336834 231.66201305 Z" fill="rgb(45.625, 0, 223.125)"/>
151
+ <rect x="192" y="0" width="32" height="32" fill="rgb(200.0, 0, 50.0)"/>
152
+ <path d=" M 198.05932808 32.0 L 197.19698429 31.47869492 L 195.98024273 30.52543831 L 194.88727474 29.43247128 L 193.93401909 28.21572971 L 193.13437557 26.89295769 L 192.50000477 25.48344421 L 192.04015732 24.00774193 L 192.0 23.78861046 L 192.0 18.10039234 L 192.04015732 17.88126087 L 192.50000477 16.40555859 L 193.13437557 14.99604416 L 193.93401909 13.67327213 L 194.88727474 12.45653152 L 195.98024273 11.36356354 L 197.19698429 10.41030788 L 198.51975632 9.61066437 L 199.92926979 8.97629356 L 201.40497208 8.51644611 L 202.92534351 8.2378273 L 204.46821308 8.14450073 L 206.0110817 8.2378273 L 207.53145313 8.51644611 L 209.00715542 8.97629356 L 210.41666889 9.61066437 L 211.73944092 10.41030788 L 212.95618248 11.36356354 L 214.04915047 12.45653152 L 215.00240612 13.67327213 L 215.80204964 14.99604416 L 216.43642044 16.40555859 L 216.89626789 17.88126087 L 217.17488575 19.40163136 L 217.26821232 20.94450092 L 217.17488575 22.48737049 L 216.89626789 24.00774193 L 216.43642044 25.48344421 L 215.80204964 26.89295769 L 215.00240612 28.21572971 L 214.04915047 29.43247128 L 212.95618248 30.52543831 L 211.73944092 31.47869492 L 210.87709713 32.0 Z" fill="white"/>
153
+ <path d=" M 201.27711582 30.4120369 L 199.73203087 30.1673193 L 198.33819008 29.45712185 L 197.23203087 28.35096264 L 196.52183342 26.95712185 L 196.27711582 25.4120369 L 196.52183342 23.86695194 L 197.23203087 22.4731102 L 198.33819008 21.36695194 L 199.73203087 20.65675354 L 201.27711582 20.4120369 L 202.82220078 20.65675354 L 204.21604252 21.36695194 L 205.32220078 22.4731102 L 206.03239822 23.86695194 L 206.27711582 25.4120369 L 206.03239822 26.95712185 L 205.32220078 28.35096264 L 204.21604252 29.45712185 L 202.82220078 30.1673193 Z" fill="rgb(13.75, 0, 0.0)"/>
154
+ <rect x="192" y="32" width="32" height="32" fill="rgb(200.0, 0, 75.0)"/>
155
+ <path d=" M 192.0 64.0 L 192.0 46.01487541 L 192.82983685 45.36474037 L 194.15260887 44.56509686 L 195.56212234 43.93072605 L 197.03782463 43.4708786 L 198.55819607 43.19225979 L 200.10106564 43.09893417 L 201.6439352 43.19225979 L 203.16430569 43.4708786 L 204.64000797 43.93072605 L 206.04952145 44.56509686 L 207.37229443 45.36474037 L 208.58903503 46.31799603 L 209.68200302 47.41096401 L 210.63525867 48.62770462 L 211.43490219 49.9504776 L 212.06927299 51.35999107 L 212.52912045 52.83569336 L 212.80773926 54.35606384 L 212.90106487 55.89893341 L 212.80773926 57.44180298 L 212.52912045 58.96217442 L 212.06927299 60.4378767 L 211.43490219 61.84739017 L 210.63525867 63.1701622 L 209.98512268 64.0 Z" fill="white"/>
156
+ <path d=" M 197.09221458 63.90778446 L 195.54712963 63.66306782 L 194.15328789 62.95286942 L 193.04712963 61.84671116 L 192.33693123 60.45286942 L 192.09221458 58.90778446 L 192.33693123 57.36269951 L 193.04712963 55.96885872 L 194.15328789 54.86269951 L 195.54712963 54.15250206 L 197.09221458 53.90778446 L 198.63729954 54.15250206 L 200.03114033 54.86269951 L 201.13729954 55.96885872 L 201.84749699 57.36269951 L 202.09221458 58.90778446 L 201.84749699 60.45286942 L 201.13729954 61.84671116 L 200.03114033 62.95286942 L 198.63729954 63.66306782 Z" fill="rgb(13.75, 0, 31.875)"/>
157
+ <rect x="192" y="64" width="32" height="32" fill="rgb(200.0, 0, 100.0)"/>
158
+ <path d=" M 192.0 96.0 L 192.0 75.0498867 L 192.98517513 74.74289417 L 194.50554657 74.46427631 L 196.04841614 74.37094975 L 197.59128475 74.46427631 L 199.11165619 74.74289417 L 200.58735847 75.20274162 L 201.99687195 75.83711243 L 203.31964397 76.63675594 L 204.53638554 77.59001255 L 205.62935352 78.68297958 L 206.58260918 79.89972115 L 207.38225269 81.22249317 L 208.0166235 82.6320076 L 208.47647095 84.10770893 L 208.75508881 85.62808037 L 208.84841537 87.17094994 L 208.75508881 88.7138195 L 208.47647095 90.23418999 L 208.0166235 91.70989227 L 207.38225269 93.1194067 L 206.58260918 94.44217873 L 205.62935352 95.65892029 L 205.28827381 96.0 Z" fill="white"/>
159
+ <path d=" M 193.20868587 93.87478733 L 192.0 93.68335056 L 192.0 84.0662241 L 193.20868587 83.87478733 L 194.75377083 84.11950493 L 196.14761162 84.82970238 L 197.25377083 85.93586159 L 197.96396828 87.32970238 L 198.20868587 88.87478733 L 197.96396828 90.41987228 L 197.25377083 91.81371403 L 196.14761162 92.91987228 L 194.75377083 93.63007069 Z" fill="rgb(13.75, 0, 63.75)"/>
160
+ <rect x="192" y="96" width="32" height="32" fill="rgb(200.0, 0, 125.0)"/>
161
+ <path d=" M 193.36453629 127.72709179 L 192.0 127.64455318 L 192.0 102.20963192 L 193.36453629 102.12709236 L 194.90740585 102.22041893 L 196.42777634 102.49903679 L 197.90347862 102.95888424 L 199.31299305 103.59325504 L 200.63576508 104.39289856 L 201.85250568 105.34615421 L 202.94547367 106.4391222 L 203.89872932 107.65586376 L 204.69837284 108.97863579 L 205.33274364 110.38814926 L 205.79259109 111.86385155 L 206.07120991 113.38422298 L 206.16453648 114.92709255 L 206.07120991 116.46996212 L 205.79259109 117.9903326 L 205.33274364 119.46603489 L 204.69837284 120.87554836 L 203.89872932 122.19832134 L 202.94547367 123.41506195 L 201.85250568 124.50802994 L 200.63576508 125.46128559 L 199.31299305 126.26092911 L 197.90347862 126.89529991 L 196.42777634 127.35514736 L 194.90740585 127.63376617 Z" fill="white"/>
162
+ <path d=" M 192.0 120.25672913 L 192.0 110.68854713 L 192.1818924 110.71735573 L 193.57573318 111.42755318 L 194.6818924 112.53371143 L 195.39208984 113.92755318 L 195.63680744 115.47263813 L 195.39208984 117.01772308 L 194.6818924 118.41156387 L 193.57573318 119.51772308 L 192.1818924 120.22792053 Z" fill="rgb(13.75, 0, 95.625)"/>
163
+ <rect x="192" y="128" width="32" height="32" fill="rgb(200.0, 0, 150.0)"/>
164
+ <path d=" M 193.36453629 153.87290668 L 192.0 153.79036713 L 192.0 128.35544586 L 193.36453629 128.27290726 L 194.90740585 128.36623287 L 196.42777634 128.64485168 L 197.90347862 129.10469913 L 199.31299305 129.73906994 L 200.63576508 130.53871346 L 201.85250568 131.49196911 L 202.94547367 132.5849371 L 203.89872932 133.8016777 L 204.69837284 135.12445068 L 205.33274364 136.53396416 L 205.79259109 138.00966644 L 206.07120991 139.53003693 L 206.16453648 141.07290649 L 206.07120991 142.61577606 L 205.79259109 144.1361475 L 205.33274364 145.61184978 L 204.69837284 147.02136326 L 203.89872932 148.34413528 L 202.94547367 149.56087685 L 201.85250568 150.65384483 L 200.63576508 151.60710049 L 199.31299305 152.406744 L 197.90347862 153.04111481 L 196.42777634 153.50096226 L 194.90740585 153.77958012 Z" fill="white"/>
165
+ <path d=" M 192.0 145.31145191 L 192.0 135.74326992 L 192.1818924 135.77207851 L 193.57573318 136.48227596 L 194.6818924 137.58843517 L 195.39208984 138.98227596 L 195.63680744 140.52736092 L 195.39208984 142.07244587 L 194.6818924 143.46628761 L 193.57573318 144.57244587 L 192.1818924 145.28264332 Z" fill="rgb(13.75, 0, 127.5)"/>
166
+ <rect x="192" y="160" width="32" height="32" fill="rgb(200.0, 0, 175.0)"/>
167
+ <path d=" M 196.04841614 181.6290493 L 194.50554657 181.53572273 L 192.98517513 181.25710487 L 192.0 180.95011234 L 192.0 160.0 L 205.28827477 160.0 L 205.62935352 160.34107876 L 206.58260918 161.55782032 L 207.38225269 162.88059235 L 208.0166235 164.29010677 L 208.47647095 165.76580906 L 208.75508881 167.28617954 L 208.84841537 168.82904911 L 208.75508881 170.37191868 L 208.47647095 171.89229012 L 208.0166235 173.36799145 L 207.38225269 174.77750587 L 206.58260918 176.1002779 L 205.62935352 177.31701946 L 204.53638554 178.4099865 L 203.31964397 179.3632431 L 201.99687195 180.16288662 L 200.58735847 180.79725742 L 199.11165619 181.25710487 L 197.59128475 181.53572273 Z" fill="white"/>
168
+ <path d=" M 193.20868587 172.12521172 L 192.0 171.93377495 L 192.0 162.31664848 L 193.20868587 162.12521172 L 194.75377083 162.36992836 L 196.14761162 163.08012676 L 197.25377083 164.18628502 L 197.96396828 165.58012676 L 198.20868587 167.12521172 L 197.96396828 168.67029667 L 197.25377083 170.06413746 L 196.14761162 171.17029667 L 194.75377083 171.88049412 Z" fill="rgb(13.75, 0, 159.375)"/>
169
+ <rect x="192" y="192" width="32" height="32" fill="rgb(200.0, 0, 200.0)"/>
170
+ <path d=" M 200.10106564 212.90106487 L 198.55819607 212.80773926 L 197.03782463 212.52912045 L 195.56212234 212.06927299 L 194.15260887 211.43490219 L 192.82983685 210.63525867 L 192.0 209.98512363 L 192.0 192.0 L 209.98512363 192.0 L 210.63525867 192.82983685 L 211.43490219 194.15260887 L 212.06927299 195.56212234 L 212.52912045 197.03782463 L 212.80773926 198.55819607 L 212.90106487 200.10106564 L 212.80773926 201.6439352 L 212.52912045 203.16430569 L 212.06927299 204.64000797 L 211.43490219 206.04952145 L 210.63525867 207.37229443 L 209.68200302 208.58903503 L 208.58903503 209.68200302 L 207.37229443 210.63525867 L 206.04952145 211.43490219 L 204.64000797 212.06927299 L 203.16430569 212.52912045 L 201.6439352 212.80773926 Z" fill="white"/>
171
+ <path d=" M 197.09221458 202.09221458 L 195.54712963 201.84749699 L 194.15328789 201.13729954 L 193.04712963 200.03114033 L 192.33693123 198.63729954 L 192.09221458 197.09221458 L 192.33693123 195.54712963 L 193.04712963 194.15328789 L 194.15328789 193.04712963 L 195.54712963 192.33693123 L 197.09221458 192.09221458 L 198.63729954 192.33693123 L 200.03114033 193.04712963 L 201.13729954 194.15328789 L 201.84749699 195.54712963 L 202.09221458 197.09221458 L 201.84749699 198.63729954 L 201.13729954 200.03114033 L 200.03114033 201.13729954 L 198.63729954 201.84749699 Z" fill="rgb(13.75, 0, 191.25)"/>
172
+ <rect x="192" y="224" width="32" height="32" fill="rgb(200.0, 0, 225.0)"/>
173
+ <path d=" M 204.46821308 247.85549831 L 202.92534351 247.76217175 L 201.40497208 247.48355293 L 199.92926979 247.02370548 L 198.51975632 246.38933468 L 197.19698429 245.58969116 L 195.98024273 244.63643551 L 194.88727474 243.54346752 L 193.93401909 242.32672691 L 193.13437557 241.00395489 L 192.50000477 239.59444046 L 192.04015732 238.11873817 L 192.0 237.8996067 L 192.0 232.21138859 L 192.04015732 231.99225712 L 192.50000477 230.51655483 L 193.13437557 229.10704136 L 193.93401909 227.78426933 L 194.88727474 226.56752777 L 195.98024273 225.47456074 L 197.19698429 224.52130413 L 198.05932713 224.0 L 210.87709808 224.0 L 211.73944092 224.52130413 L 212.95618248 225.47456074 L 214.04915047 226.56752777 L 215.00240612 227.78426933 L 215.80204964 229.10704136 L 216.43642044 230.51655483 L 216.89626789 231.99225712 L 217.17488575 233.51262856 L 217.26821232 235.05549812 L 217.17488575 236.59836769 L 216.89626789 238.11873817 L 216.43642044 239.59444046 L 215.80204964 241.00395489 L 215.00240612 242.32672691 L 214.04915047 243.54346752 L 212.95618248 244.63643551 L 211.73944092 245.58969116 L 210.41666889 246.38933468 L 209.00715542 247.02370548 L 207.53145313 247.48355293 L 206.0110817 247.76217175 Z" fill="white"/>
174
+ <path d=" M 201.27711582 235.58796215 L 199.73203087 235.34324551 L 198.33819008 234.6330471 L 197.23203087 233.52688885 L 196.52183342 232.1330471 L 196.27711582 230.58796215 L 196.52183342 229.0428772 L 197.23203087 227.64903641 L 198.33819008 226.5428772 L 199.73203087 225.83267975 L 201.27711582 225.58796215 L 202.82220078 225.83267975 L 204.21604252 226.5428772 L 205.32220078 227.64903641 L 206.03239822 229.0428772 L 206.27711582 230.58796215 L 206.03239822 232.1330471 L 205.32220078 233.52688885 L 204.21604252 234.6330471 L 202.82220078 235.34324551 Z" fill="rgb(13.75, 0, 223.125)"/>
175
+ <rect x="224" y="0" width="32" height="32" fill="rgb(225.0, 0, 50.0)"/>
176
+ <path d=" M 239.66270065 29.13729763 L 238.11983109 29.04397202 L 236.5994606 28.7653532 L 235.12375832 28.30550575 L 233.71424484 27.67113495 L 232.39147186 26.87149143 L 231.17473125 25.91823578 L 230.08176327 24.82526779 L 229.12850761 23.60852718 L 228.3288641 22.2857542 L 227.69449329 20.87624073 L 227.23464584 19.40053844 L 226.95602703 17.88016796 L 226.86270142 16.33729839 L 226.95602703 14.79442883 L 227.23464584 13.27405739 L 227.69449329 11.7983551 L 228.3288641 10.38884163 L 229.12850761 9.0660696 L 230.08176327 7.84932804 L 231.17473125 6.75636005 L 232.39147186 5.8031044 L 233.71424484 5.00346088 L 235.12375832 4.36909008 L 236.5994606 3.90924263 L 238.11983109 3.63062477 L 239.66270065 3.5372982 L 241.20557022 3.63062477 L 242.72594166 3.90924263 L 244.20164394 4.36909008 L 245.61115742 5.00346088 L 246.93392944 5.8031044 L 248.15067101 6.75636005 L 249.24363899 7.84932804 L 250.19689465 9.0660696 L 250.99653816 10.38884163 L 251.63090897 11.7983551 L 252.09075642 13.27405739 L 252.36937428 14.79442883 L 252.46270084 16.33729839 L 252.36937428 17.88016796 L 252.09075642 19.40053844 L 251.63090897 20.87624073 L 250.99653816 22.2857542 L 250.19689465 23.60852718 L 249.24363899 24.82526779 L 248.15067101 25.91823578 L 246.93392944 26.87149143 L 245.61115742 27.67113495 L 244.20164394 28.30550575 L 242.72594166 28.7653532 L 241.20557022 29.04397202 Z" fill="white"/>
177
+ <path d=" M 235.00290203 25.99709702 L 233.45781708 25.75237942 L 232.06397629 25.04218197 L 230.95781708 23.93602276 L 230.24761963 22.54218197 L 230.00290203 20.99709702 L 230.24761963 19.45201206 L 230.95781708 18.05817032 L 232.06397629 16.95201206 L 233.45781708 16.24181366 L 235.00290203 15.99709702 L 236.54798698 16.24181366 L 237.94182873 16.95201206 L 239.04798698 18.05817032 L 239.75818539 19.45201206 L 240.00290203 20.99709702 L 239.75818539 22.54218197 L 239.04798698 23.93602276 L 237.94182873 25.04218197 L 236.54798698 25.75237942 Z" fill="rgb(-18.125, 0, 0.0)"/>
178
+ <rect x="224" y="32" width="32" height="32" fill="rgb(225.0, 0, 75.0)"/>
179
+ <path d=" M 232.21139431 64.0 L 231.99225712 63.95984173 L 230.51655483 63.49999428 L 229.10704136 62.86562347 L 227.78426933 62.06597996 L 226.56752777 61.1127243 L 225.47456074 60.01975632 L 224.52130413 58.80301476 L 224.0 57.94067192 L 224.0 45.12290096 L 224.52130413 44.26055813 L 225.47456074 43.04381657 L 226.56752777 41.95084858 L 227.78426933 40.99759293 L 229.10704136 40.19794941 L 230.51655483 39.56357861 L 231.99225712 39.10373116 L 233.51262856 38.8251133 L 235.05549812 38.73178673 L 236.59836769 38.8251133 L 238.11873817 39.10373116 L 239.59444046 39.56357861 L 241.00395489 40.19794941 L 242.32672691 40.99759293 L 243.54346752 41.95084858 L 244.63643551 43.04381657 L 245.58969116 44.26055813 L 246.38933468 45.58333015 L 247.02370548 46.99284363 L 247.48355293 48.46854591 L 247.76217175 49.98891735 L 247.85549831 51.53178596 L 247.76217175 53.07465553 L 247.48355293 54.59502697 L 247.02370548 56.07072926 L 246.38933468 57.48024273 L 245.58969116 58.80301476 L 244.63643551 60.01975632 L 243.54346752 61.1127243 L 242.32672691 62.06597996 L 241.00395489 62.86562347 L 239.59444046 63.49999428 L 238.11873817 63.95984173 L 237.89960098 64.0 Z" fill="white"/>
180
+ <path d=" M 230.58796215 59.72288322 L 229.0428772 59.47816563 L 227.64903641 58.76796818 L 226.5428772 57.66180897 L 225.83267975 56.26796818 L 225.58796215 54.72288322 L 225.83267975 53.17779827 L 226.5428772 51.78395653 L 227.64903641 50.67779827 L 229.0428772 49.96760082 L 230.58796215 49.72288322 L 232.1330471 49.96760082 L 233.52688885 50.67779827 L 234.6330471 51.78395653 L 235.34324551 53.17779827 L 235.58796215 54.72288322 L 235.34324551 56.26796818 L 234.6330471 57.66180897 L 233.52688885 58.76796818 L 232.1330471 59.47816563 Z" fill="rgb(-18.125, 0, 31.875)"/>
181
+ <rect x="224" y="64" width="32" height="32" fill="rgb(225.0, 0, 100.0)"/>
182
+ <path d=" M 227.52974319 96.0 L 226.67501163 95.73365498 L 225.26549721 95.09928513 L 224.0 94.33426476 L 224.0 73.19662952 L 225.26549721 72.43161011 L 226.67501163 71.7972393 L 228.15071392 71.33739185 L 229.6710844 71.05877399 L 231.21395397 70.96544743 L 232.75682354 71.05877399 L 234.27719498 71.33739185 L 235.75289631 71.7972393 L 237.16241074 72.43161011 L 238.48518276 73.23125362 L 239.70192432 74.18451023 L 240.79489136 75.27747726 L 241.74814796 76.49421883 L 242.54779148 77.81699085 L 243.18216228 79.22650528 L 243.64200974 80.70220661 L 243.92062759 82.22257805 L 244.01395416 83.76544762 L 243.92062759 85.30831718 L 243.64200974 86.82868767 L 243.18216228 88.30438995 L 242.54779148 89.71390438 L 241.74814796 91.03667641 L 240.79489136 92.25341797 L 239.70192432 93.346385 L 238.48518276 94.29964066 L 237.16241074 95.09928513 L 235.75289631 95.73365498 L 234.8981657 96.0 Z" fill="white"/>
183
+ <path d=" M 226.90673065 90.6114006 L 225.3616457 90.36668301 L 224.0 89.67289066 L 224.0 81.54991055 L 225.3616457 80.8561182 L 226.90673065 80.6114006 L 228.45181561 80.8561182 L 229.84565639 81.56631565 L 230.95181561 82.67247391 L 231.66201305 84.06631565 L 231.90673065 85.6114006 L 231.66201305 87.15648556 L 230.95181561 88.5503273 L 229.84565639 89.65648556 L 228.45181561 90.36668301 Z" fill="rgb(-18.125, 0, 63.75)"/>
184
+ <rect x="224" y="96" width="32" height="32" fill="rgb(225.0, 0, 125.0)"/>
185
+ <path d=" M 228.94149208 126.37978649 L 227.39862251 126.28645992 L 225.87825108 126.00784206 L 224.40254879 125.54799461 L 224.0 125.36682224 L 224.0 101.79275036 L 224.40254879 101.61157799 L 225.87825108 101.15173149 L 227.39862251 100.87311268 L 228.94149208 100.77978611 L 230.48436069 100.87311268 L 232.00473213 101.15173149 L 233.48043442 101.61157799 L 234.88994789 102.24594879 L 236.21271992 103.04559326 L 237.42946148 103.99884892 L 238.52242947 105.09181595 L 239.47568512 106.30855751 L 240.27532864 107.63132954 L 240.90969944 109.04084396 L 241.36954689 110.51654625 L 241.64816475 112.03691673 L 241.74149132 113.5797863 L 241.64816475 115.12265587 L 241.36954689 116.64302731 L 240.90969944 118.11872864 L 240.27532864 119.52824306 L 239.47568512 120.85101509 L 238.52242947 122.06775665 L 237.42946148 123.16072369 L 236.21271992 124.11398029 L 234.88994789 124.91362381 L 233.48043442 125.54799461 L 232.00473213 126.00784206 L 230.48436069 126.28645992 Z" fill="white"/>
186
+ <path d=" M 224.72910023 119.1815567 L 224.0 119.06607819 L 224.0 109.29703522 L 224.72910023 109.1815567 L 226.27418518 109.4262743 L 227.66802597 110.13647175 L 228.77418518 111.24263 L 229.48438263 112.63647175 L 229.72910023 114.1815567 L 229.48438263 115.72664165 L 228.77418518 117.12048244 L 227.66802597 118.22664165 L 226.27418518 118.9368391 Z" fill="rgb(-18.125, 0, 95.625)"/>
187
+ <rect x="224" y="128" width="32" height="32" fill="rgb(225.0, 0, 150.0)"/>
188
+ <path d=" M 228.94149208 155.22021294 L 227.39862251 155.12688637 L 225.87825108 154.84826756 L 224.40254879 154.38842106 L 224.0 154.20724869 L 224.0 130.6331768 L 224.40254879 130.45200443 L 225.87825108 129.99215698 L 227.39862251 129.71353912 L 228.94149208 129.62021255 L 230.48436069 129.71353912 L 232.00473213 129.99215698 L 233.48043442 130.45200443 L 234.88994789 131.08637524 L 236.21271992 131.88601875 L 237.42946148 132.83927536 L 238.52242947 133.93224239 L 239.47568512 135.14898396 L 240.27532864 136.47175598 L 240.90969944 137.88127041 L 241.36954689 139.35697174 L 241.64816475 140.87734318 L 241.74149132 142.42021275 L 241.64816475 143.96308231 L 241.36954689 145.4834528 L 240.90969944 146.95915508 L 240.27532864 148.36866951 L 239.47568512 149.69144154 L 238.52242947 150.9081831 L 237.42946148 152.00115013 L 236.21271992 152.95440578 L 234.88994789 153.75405025 L 233.48043442 154.38842106 L 232.00473213 154.84826756 L 230.48436069 155.12688637 Z" fill="white"/>
189
+ <path d=" M 224.72910023 146.81844234 L 224.0 146.70296383 L 224.0 136.93392086 L 224.72910023 136.81844234 L 226.27418518 137.06315994 L 227.66802597 137.77335739 L 228.77418518 138.8795166 L 229.48438263 140.27335739 L 229.72910023 141.81844234 L 229.48438263 143.3635273 L 228.77418518 144.75736904 L 227.66802597 145.8635273 L 226.27418518 146.57372475 Z" fill="rgb(-18.125, 0, 127.5)"/>
190
+ <rect x="224" y="160" width="32" height="32" fill="rgb(225.0, 0, 175.0)"/>
191
+ <path d=" M 231.21395397 185.03455162 L 229.6710844 184.94122505 L 228.15071392 184.66260719 L 226.67501163 184.20275974 L 225.26549721 183.56838894 L 224.0 182.80336952 L 224.0 161.66573429 L 225.26549721 160.90071392 L 226.67501163 160.26634407 L 227.52973938 160.0 L 234.89816856 160.0 L 235.75289631 160.26634407 L 237.16241074 160.90071392 L 238.48518276 161.70035839 L 239.70192432 162.65361404 L 240.79489136 163.74658108 L 241.74814796 164.96332264 L 242.54779148 166.28609467 L 243.18216228 167.69560909 L 243.64200974 169.17131138 L 243.92062759 170.69168186 L 244.01395416 172.23455143 L 243.92062759 173.777421 L 243.64200974 175.29779243 L 243.18216228 176.77349377 L 242.54779148 178.18300819 L 241.74814796 179.50578022 L 240.79489136 180.72252178 L 239.70192432 181.81548882 L 238.48518276 182.76874542 L 237.16241074 183.56838894 L 235.75289631 184.20275974 L 234.27719498 184.66260719 L 232.75682354 184.94122505 Z" fill="white"/>
192
+ <path d=" M 226.90673065 175.38859844 L 225.3616457 175.14388084 L 224.0 174.4500885 L 224.0 166.32710838 L 225.3616457 165.63331604 L 226.90673065 165.38859844 L 228.45181561 165.63331604 L 229.84565639 166.34351349 L 230.95181561 167.44967175 L 231.66201305 168.84351349 L 231.90673065 170.38859844 L 231.66201305 171.9336834 L 230.95181561 173.32752514 L 229.84565639 174.4336834 L 228.45181561 175.14388084 Z" fill="rgb(-18.125, 0, 159.375)"/>
193
+ <rect x="224" y="192" width="32" height="32" fill="rgb(225.0, 0, 200.0)"/>
194
+ <path d=" M 235.05549812 217.26821232 L 233.51262856 217.17488575 L 231.99225712 216.89626789 L 230.51655483 216.43642044 L 229.10704136 215.80204964 L 227.78426933 215.00240612 L 226.56752777 214.04915047 L 225.47456074 212.95618248 L 224.52130413 211.73944092 L 224.0 210.87709808 L 224.0 198.05932713 L 224.52130413 197.19698429 L 225.47456074 195.98024273 L 226.56752777 194.88727474 L 227.78426933 193.93401909 L 229.10704136 193.13437557 L 230.51655483 192.50000477 L 231.99225712 192.04015732 L 232.21138859 192.0 L 237.8996067 192.0 L 238.11873817 192.04015732 L 239.59444046 192.50000477 L 241.00395489 193.13437557 L 242.32672691 193.93401909 L 243.54346752 194.88727474 L 244.63643551 195.98024273 L 245.58969116 197.19698429 L 246.38933468 198.51975632 L 247.02370548 199.92926979 L 247.48355293 201.40497208 L 247.76217175 202.92534351 L 247.85549831 204.46821308 L 247.76217175 206.0110817 L 247.48355293 207.53145313 L 247.02370548 209.00715542 L 246.38933468 210.41666889 L 245.58969116 211.73944092 L 244.63643551 212.95618248 L 243.54346752 214.04915047 L 242.32672691 215.00240612 L 241.00395489 215.80204964 L 239.59444046 216.43642044 L 238.11873817 216.89626789 L 236.59836769 217.17488575 Z" fill="white"/>
195
+ <path d=" M 230.58796215 206.27711582 L 229.0428772 206.03239822 L 227.64903641 205.32220078 L 226.5428772 204.21604252 L 225.83267975 202.82220078 L 225.58796215 201.27711582 L 225.83267975 199.73203087 L 226.5428772 198.33819008 L 227.64903641 197.23203087 L 229.0428772 196.52183342 L 230.58796215 196.27711582 L 232.1330471 196.52183342 L 233.52688885 197.23203087 L 234.6330471 198.33819008 L 235.34324551 199.73203087 L 235.58796215 201.27711582 L 235.34324551 202.82220078 L 234.6330471 204.21604252 L 233.52688885 205.32220078 L 232.1330471 206.03239822 Z" fill="rgb(-18.125, 0, 191.25)"/>
196
+ <rect x="224" y="224" width="32" height="32" fill="rgb(225.0, 0, 225.0)"/>
197
+ <path d=" M 239.66270065 252.46270084 L 238.11983109 252.36937428 L 236.5994606 252.09075642 L 235.12375832 251.63090897 L 233.71424484 250.99653816 L 232.39147186 250.19689465 L 231.17473125 249.24363899 L 230.08176327 248.15067101 L 229.12850761 246.93392944 L 228.3288641 245.61115742 L 227.69449329 244.20164394 L 227.23464584 242.72594166 L 226.95602703 241.20557022 L 226.86270142 239.66270065 L 226.95602703 238.11983109 L 227.23464584 236.5994606 L 227.69449329 235.12375832 L 228.3288641 233.71424484 L 229.12850761 232.39147186 L 230.08176327 231.17473125 L 231.17473125 230.08176327 L 232.39147186 229.12850761 L 233.71424484 228.3288641 L 235.12375832 227.69449329 L 236.5994606 227.23464584 L 238.11983109 226.95602703 L 239.66270065 226.86270142 L 241.20557022 226.95602703 L 242.72594166 227.23464584 L 244.20164394 227.69449329 L 245.61115742 228.3288641 L 246.93392944 229.12850761 L 248.15067101 230.08176327 L 249.24363899 231.17473125 L 250.19689465 232.39147186 L 250.99653816 233.71424484 L 251.63090897 235.12375832 L 252.09075642 236.5994606 L 252.36937428 238.11983109 L 252.46270084 239.66270065 L 252.36937428 241.20557022 L 252.09075642 242.72594166 L 251.63090897 244.20164394 L 250.99653816 245.61115742 L 250.19689465 246.93392944 L 249.24363899 248.15067101 L 248.15067101 249.24363899 L 246.93392944 250.19689465 L 245.61115742 250.99653816 L 244.20164394 251.63090897 L 242.72594166 252.09075642 L 241.20557022 252.36937428 Z" fill="white"/>
198
+ <path d=" M 235.00290203 240.00290203 L 233.45781708 239.75818539 L 232.06397629 239.04798698 L 230.95781708 237.94182873 L 230.24761963 236.54798698 L 230.00290203 235.00290203 L 230.24761963 233.45781708 L 230.95781708 232.06397629 L 232.06397629 230.95781708 L 233.45781708 230.24761963 L 235.00290203 230.00290203 L 236.54798698 230.24761963 L 237.94182873 230.95781708 L 239.04798698 232.06397629 L 239.75818539 233.45781708 L 240.00290203 235.00290203 L 239.75818539 236.54798698 L 239.04798698 237.94182873 L 237.94182873 239.04798698 L 236.54798698 239.75818539 Z" fill="rgb(-18.125, 0, 223.125)"/>
199
+ </svg>
@@ -24,21 +24,37 @@ module VectorSalad
24
24
  end
25
25
 
26
26
  # Loop over the shapes in the canvas.
27
- def each(&block)
27
+ def each(&_)
28
28
  @canvas.each do |shape|
29
- shape = shape.shape if shape.class == VectorSalad::ShapeProxy
30
- unless shape.class == VectorSalad::StandardShapes::Custom ||
31
- !shape.kind_of?(VectorSalad::StandardShapes::BasicShape)
29
+ shape = to_shape(shape)
30
+ next if shape.class == VectorSalad::StandardShapes::Custom ||
31
+ !shape.is_a?(VectorSalad::StandardShapes::BasicShape)
32
+
33
+ if shape.is_a?(VectorSalad::StandardShapes::Group) ||
34
+ (shape.is_a?(VectorSalad::StandardShapes::Custom) &&
35
+ shape.to_path.class == VectorSalad::StandardShapes::Group)
36
+ shape.canvas.each { |s| yield(s) }
37
+ else
32
38
  yield(shape)
33
39
  end
34
40
  end
35
41
  end
36
42
 
43
+ def length
44
+ @canvas.length
45
+ end
46
+
37
47
  # Access a specific shape in the canvas.
38
48
  # Often used to get the first shape [0] for situations where only
39
49
  # a single shape is allowed.
40
50
  def [](i)
41
- @canvas[i].class==VectorSalad::ShapeProxy ? @canvas[i].shape : @canvas[i]
51
+ to_shape @canvas[i]
52
+ end
53
+
54
+ private
55
+
56
+ def to_shape(shape)
57
+ shape.class == VectorSalad::ShapeProxy ? shape.shape : shape
42
58
  end
43
59
  end
44
60
  end
@@ -33,8 +33,8 @@ module VectorSalad
33
33
  def header; end
34
34
 
35
35
  def body
36
- format = self.class.name.split('::').last.gsub(/Exporter/, '')
37
- .gsub(/(.)([A-Z])/,'\1_\2').downcase
36
+ format = self.class.name.split("::").last.gsub(/Exporter/, "")
37
+ .gsub(/(.)([A-Z])/, '\1_\2').downcase
38
38
  convert_method = "to_#{format}".to_sym
39
39
  canvas.each do |shape|
40
40
  begin
@@ -58,6 +58,7 @@ module VectorSalad
58
58
  end
59
59
 
60
60
  private
61
+
61
62
  # This method is long and repetetive, for speed. There was a shorter
62
63
  # version that converted every shape to a MultiPath but the performance
63
64
  # was really terrible. This way is a ton faster.
@@ -0,0 +1,36 @@
1
+ require "contracts"
2
+ require "contracts_builtin"
3
+
4
+ module VectorSalad
5
+ module Mixins
6
+ # Mixin for transforming shapes.
7
+ module Transforms
8
+ include Contracts::Core
9
+ include Contracts::Builtin
10
+
11
+ # Move the shape absolutely.
12
+ Contract Num, Num => Any
13
+ def [](x, y)
14
+ each_send(:[], x, y)
15
+ end
16
+
17
+ # Move the shape relatively.
18
+ Contract Num, Num => Any
19
+ def move(x, y)
20
+ each_send(:move, x, y)
21
+ end
22
+
23
+ # Rotates the shape by the specified angle about the origin.
24
+ Contract Num => Any
25
+ def rotate(angle)
26
+ each_send(:rotate, angle)
27
+ end
28
+
29
+ # Scale a shape by multiplier about the origin.
30
+ Contract Num => Any
31
+ def scale(multiplier)
32
+ each_send(:scale, multiplier)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,16 +1,19 @@
1
+ require "fancy_to_proc"
1
2
  require "vector_salad/dsl"
2
3
  require "vector_salad/canvas"
3
4
  require "vector_salad/standard_shapes/basic_shape"
5
+ require "vector_salad/standard_shapes/transform"
4
6
 
5
7
  module VectorSalad
6
8
  module StandardShapes
7
9
  # Make your own custom shape.
8
10
  class Custom < BasicShape
9
11
  # You must name your custom shape to be able to use it later.
10
- # The block passed to custom shape is what will create your shape,
11
- # it should create just a single shape or MultiPath.
12
- # This means you should use {MultiPath} or one of the {Clip} operations
13
- # which return MultiPaths to create complex shapes.
12
+ # The block passed to custom shape is what will create your shape.
13
+ # If you create just 1 shape (e.g. with {MultiPath} or
14
+ # one of the {Clip} operations which return a {MultiPath})
15
+ # then that's what's added to the canvas,
16
+ # but if you create multiple shapes they will be wrapped in a {Group}.
14
17
  #
15
18
  # @example Using DSL:
16
19
  # custom(:donut) do |size| # name shape and specify parameters
@@ -25,7 +28,8 @@ module VectorSalad
25
28
  # @param name The name of your shape in snake_case
26
29
  Contract Symbol, {}, Proc => Any
27
30
  def initialize(name, **options, &block)
28
- ::VectorSalad::StandardShapes.const_set(name.to_s.capitalize.to_sym, Class.new(BasicShape) do
31
+ const = name.to_s.capitalize.to_sym
32
+ ::VectorSalad::StandardShapes.const_set(const, Class.new(Custom) do
29
33
  include VectorSalad::DSL
30
34
  include VectorSalad::StandardShapes
31
35
 
@@ -36,7 +40,11 @@ module VectorSalad
36
40
  end
37
41
 
38
42
  def to_path
39
- canvas[0]
43
+ if canvas.length == 1
44
+ canvas[0]
45
+ else
46
+ Group.new.tap(&:canvas=.(@canvas))
47
+ end
40
48
  end
41
49
  end)
42
50
  end
@@ -0,0 +1,56 @@
1
+ # require "contracts"
2
+ # require "contracts_builtin"
3
+ # require "vector_salad/dsl"
4
+ # require "vector_salad/canvas"
5
+
6
+ # module VectorSalad
7
+ # module StandardShapes
8
+ # # @api private
9
+ # class Transform
10
+ # include VectorSalad::DSL
11
+ # include VectorSalad::StandardShapes
12
+ # include Contracts::Core
13
+ # include Contracts::Builtin
14
+ # end
15
+ # end
16
+ # end
17
+
18
+ # require "vector_salad/standard_shapes/group_dsl"
19
+ require "vector_salad/standard_shapes/transform"
20
+ require "vector_salad/canvas"
21
+ require "vector_salad/mixins/transforms"
22
+
23
+ module VectorSalad
24
+ module StandardShapes
25
+ # Move the contained shapes.
26
+ class Group < BasicShape
27
+ include VectorSalad::Mixins::Transforms
28
+ include VectorSalad::DSL
29
+ include VectorSalad::StandardShapes
30
+
31
+ attr_accessor :canvas
32
+
33
+ def initialize(**_options, &block)
34
+ # @canvas = GroupDSL.new(&block).canvas if block
35
+ instance_eval(&block) if block # inner_canvas is populated
36
+ end
37
+
38
+ def canvas
39
+ @canvas ||= VectorSalad::Canvas.new
40
+ end
41
+
42
+ def to_path
43
+ self
44
+ end
45
+
46
+ private
47
+
48
+ def each_send(method, *args, &block)
49
+ @canvas.each do |shape|
50
+ shape.send(method, *args, &block)
51
+ end
52
+ self
53
+ end
54
+ end
55
+ end
56
+ end
@@ -1,12 +1,15 @@
1
1
  require "vector_salad/standard_shapes/basic_shape"
2
2
  require "vector_salad/standard_shapes/n"
3
3
  require "vector_salad/interpolate"
4
+ require "vector_salad/mixins/transforms"
4
5
 
5
6
  module VectorSalad
6
7
  module StandardShapes
7
8
  # MultiPath shape is a collection of Paths.
8
9
  # It is mainly to store the result of {Clip} operations.
9
10
  class MultiPath < BasicShape
11
+ include VectorSalad::Mixins::Transforms
12
+
10
13
  attr_reader :paths, :closed
11
14
 
12
15
  # See {Path} for details on constructing paths.
@@ -33,30 +36,6 @@ module VectorSalad
33
36
  self
34
37
  end
35
38
 
36
- # Move the MultiPath absolutely.
37
- Contract Num, Num => MultiPath
38
- def [](x, y)
39
- each_send(:[], x, y)
40
- end
41
-
42
- # Move the MultiPath relatively.
43
- Contract Num, Num => MultiPath
44
- def move(x, y)
45
- each_send(:move, x, y)
46
- end
47
-
48
- # Rotates the MultiPath by the specified angle about the origin.
49
- Contract Num => MultiPath
50
- def rotate(angle)
51
- each_send(:rotate, angle)
52
- end
53
-
54
- # Scale a MultiPath by multiplier about the origin.
55
- Contract Num => MultiPath
56
- def scale(multiplier)
57
- each_send(:scale, multiplier)
58
- end
59
-
60
39
  # Convert the shape to a path
61
40
  def to_path
62
41
  self
@@ -1,3 +1,3 @@
1
1
  module VectorSalad
2
- VERSION = "0.2.0" # Version of VectorSalad
2
+ VERSION = "0.3.0" # Version of VectorSalad
3
3
  end
data/vector_salad.gemspec CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency "ruby_clipper", "~> 5.0"
27
27
  spec.add_dependency "spiro", "~> 0.0.3"
28
28
  spec.add_dependency "contracts", "~> 0.12"
29
+ spec.add_dependency "fancy_to_proc", "~> 0.1"
29
30
 
30
31
  #spec.add_development_dependency "yard", "~> 0.8"
31
32
  #spec.add_development_dependency "yard-contracts"#, "~> 0.1"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vector_salad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon George
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-26 00:00:00.000000000 Z
11
+ date: 2015-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pretty_backtrace
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.12'
69
+ - !ruby/object:Gem::Dependency
70
+ name: fancy_to_proc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.1'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -161,6 +175,9 @@ files:
161
175
  - examples/cubic_circle.png
162
176
  - examples/cubic_circle.rb
163
177
  - examples/cubic_circle.svg
178
+ - examples/eye_box.png
179
+ - examples/eye_box.rb
180
+ - examples/eye_box.svg
164
181
  - examples/face.png
165
182
  - examples/face.rb
166
183
  - examples/face.svg
@@ -220,6 +237,7 @@ files:
220
237
  - lib/vector_salad/magic.rb
221
238
  - lib/vector_salad/mixins/at.rb
222
239
  - lib/vector_salad/mixins/mixins.rb
240
+ - lib/vector_salad/mixins/transforms.rb
223
241
  - lib/vector_salad/monkeypatches.rb
224
242
  - lib/vector_salad/optparse.rb
225
243
  - lib/vector_salad/shape_proxy.rb
@@ -230,6 +248,7 @@ files:
230
248
  - lib/vector_salad/standard_shapes/difference.rb
231
249
  - lib/vector_salad/standard_shapes/exclusion.rb
232
250
  - lib/vector_salad/standard_shapes/flip.rb
251
+ - lib/vector_salad/standard_shapes/group.rb
233
252
  - lib/vector_salad/standard_shapes/heart.rb
234
253
  - lib/vector_salad/standard_shapes/hexagon.rb
235
254
  - lib/vector_salad/standard_shapes/intersection.rb