diff --git a/graphics/Chess_no_text.dia b/graphics/Chess_no_text.dia new file mode 100644 index 0000000..7ae7b17 Binary files /dev/null and b/graphics/Chess_no_text.dia differ diff --git a/graphics/Chess_no_text.eps b/graphics/Chess_no_text.eps index 1b49275..9225f29 100644 --- a/graphics/Chess_no_text.eps +++ b/graphics/Chess_no_text.eps @@ -1,11 +1,11 @@ %!PS-Adobe-2.0 EPSF-2.0 -%%Title: /home/jonte/Desktop/junk/Chess_no_text.dia +%%Title: /home/jonte/GGS/doc/report/graphics/Chess_no_text.dia %%Creator: Dia v0.97.1 -%%CreationDate: Fri Mar 25 15:22:09 2011 +%%CreationDate: Wed Apr 27 21:54:47 2011 %%For: jonte %%Orientation: Portrait %%Magnification: 1.0000 -%%BoundingBox: 0 0 981 1163 +%%BoundingBox: 0 0 844 913 %%BeginSetup %%EndSetup %%EndComments @@ -118,103 +118,19 @@ putinterval /start_ol { gsave 1.1 dpi_x div dup scale} bind def /end_ol { closepath fill grestore } bind def 28.346000 -28.346000 scale --5.350000 -44.068500 translate +-6.982500 -37.518500 translate %%EndProlog 0.000000 1.000000 0.000000 srgb -n 10.960991 3.997118 0.950991 0.907118 0 360 ellipse f +n 14.910991 6.447118 1.034520 0.986794 0 360 ellipse f 0.100000 slw [] 0 sd [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb -n 10.960991 3.997118 0.950991 0.907118 0 360 ellipse cp s -0.000000 1.000000 0.000000 srgb -n 17.660991 4.103718 0.950991 0.907118 0 360 ellipse f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 17.660991 4.103718 0.950991 0.907118 0 360 ellipse cp s -0.000000 1.000000 0.000000 srgb -n 31.977691 4.000668 0.950991 0.907118 0 360 ellipse f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 31.977691 4.000668 0.950991 0.907118 0 360 ellipse cp s -0.000000 1.000000 0.000000 srgb -n 38.931291 4.104228 0.950991 0.907118 0 360 ellipse f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 38.931291 4.104228 0.950991 0.907118 0 360 ellipse cp s -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -n 11.420771 5.064202 m 23.107164 9.130081 l s -[] 0 sd -0 slj -0 slc -n 11.066595 4.940978 m 11.620979 4.869159 l 11.420771 5.064202 l 11.456681 5.341394 l ef -n 11.066595 4.940978 m 11.620979 4.869159 l 11.420771 5.064202 l 11.456681 5.341394 l cp s -[] 0 sd -0 slj -0 slc -n 23.461341 9.253304 m 22.906956 9.325124 l 23.107164 9.130081 l 23.071254 8.852888 l ef -n 23.461341 9.253304 m 22.906956 9.325124 l 23.107164 9.130081 l 23.071254 8.852888 l cp s -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -n 18.071163 5.273030 m 23.447455 8.709732 l s -[] 0 sd -0 slj -0 slc -n 17.755202 5.071057 m 18.311133 5.129713 l 18.071163 5.273030 l 18.041835 5.550995 l ef -n 17.755202 5.071057 m 18.311133 5.129713 l 18.071163 5.273030 l 18.041835 5.550995 l cp s -[] 0 sd -0 slj -0 slc -n 23.763417 8.911705 m 23.207486 8.853048 l 23.447455 8.709732 l 23.476783 8.431766 l ef -n 23.763417 8.911705 m 23.207486 8.853048 l 23.447455 8.709732 l 23.476783 8.431766 l cp s -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -n 31.233657 5.142826 m 26.532100 8.903723 l s -[] 0 sd -0 slj -0 slc -n 31.526493 4.908579 m 31.292209 5.416133 l 31.233657 5.142826 l 30.979880 5.025685 l ef -n 31.526493 4.908579 m 31.292209 5.416133 l 31.233657 5.142826 l 30.979880 5.025685 l cp s -[] 0 sd -0 slj -0 slc -n 26.239264 9.137970 m 26.473547 8.630416 l 26.532100 8.903723 l 26.785877 9.020865 l ef -n 26.239264 9.137970 m 26.473547 8.630416 l 26.532100 8.903723 l 26.785877 9.020865 l cp s -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -n 38.836242 5.104570 m 27.821671 8.999128 l s -[] 0 sd -0 slj -0 slc -n 39.189792 4.979561 m 38.801731 5.381939 l 38.836242 5.104570 l 38.635052 4.910539 l ef -n 39.189792 4.979561 m 38.801731 5.381939 l 38.836242 5.104570 l 38.635052 4.910539 l cp s -[] 0 sd -0 slj -0 slc -n 27.468121 9.124137 m 27.856182 8.721758 l 27.821671 8.999128 l 28.022861 9.193159 l ef -n 27.468121 9.124137 m 27.856182 8.721758 l 27.821671 8.999128 l 28.022861 9.193159 l cp s -gsave 5.350000 4.400000 translate 0.035278 -0.035278 scale +n 14.910991 6.447118 1.034520 0.986794 0 360 ellipse cp s +gsave 14.687241 6.642118 translate 0.035278 -0.035278 scale start_ol 3136 3264 moveto 3136 2752 lineto @@ -236,166 +152,174 @@ start_ol 2320 3584 2603 3504 conicto 2887 3424 3136 3264 conicto end_ol grestore -gsave 5.797080 4.400000 translate 0.035278 -0.035278 scale +0.000000 1.000000 0.000000 srgb +n 21.660991 6.403718 1.034520 0.986794 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 21.660991 6.403718 1.034520 0.986794 0 360 ellipse cp s +gsave 21.437241 6.598718 translate 0.035278 -0.035278 scale start_ol -448 3712 moveto -896 3712 lineto -896 0 lineto -448 0 lineto -448 3712 lineto +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto end_ol grestore -gsave 5.974408 4.400000 translate 0.035278 -0.035278 scale +0.000000 1.000000 0.000000 srgb +n 28.627691 6.350668 1.034520 0.986794 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 28.627691 6.350668 1.034520 0.986794 0 360 ellipse cp s +gsave 28.403941 6.545668 translate 0.035278 -0.035278 scale start_ol -448 2688 moveto -896 2688 lineto -896 0 lineto -448 0 lineto -448 2688 lineto -448 3712 moveto -896 3712 lineto -896 3136 lineto -448 3136 lineto -448 3712 lineto +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto end_ol grestore -gsave 6.151737 4.400000 translate 0.035278 -0.035278 scale +0.000000 1.000000 0.000000 srgb +n 35.131291 6.454228 1.034520 0.986794 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 35.131291 6.454228 1.034520 0.986794 0 360 ellipse cp s +gsave 34.907541 6.649228 translate 0.035278 -0.035278 scale start_ol -2752 1480 moveto -2752 1280 lineto -704 1280 lineto -733 811 978 565 conicto -1223 320 1660 320 conicto -1914 320 2152 384 conicto -2390 448 2624 576 conicto -2624 192 lineto -2388 67 2140 1 conicto -1893 -64 1639 -64 conicto -1001 -64 628 309 conicto -256 683 256 1320 conicto -256 1979 613 2365 conicto -970 2752 1576 2752 conicto -2120 2752 2436 2410 conicto -2752 2068 2752 1480 conicto -2304 1600 moveto -2299 1950 2099 2159 conicto -1900 2368 1572 2368 conicto -1200 2368 976 2166 conicto -753 1964 719 1597 conicto -2304 1600 lineto -end_ol grestore -gsave 6.546363 4.400000 translate 0.035278 -0.035278 scale -start_ol -2688 1646 moveto -2688 0 lineto -2240 0 lineto -2240 1632 lineto -2240 2001 2093 2184 conicto -1947 2368 1654 2368 conicto -1302 2368 1099 2146 conicto -896 1925 896 1542 conicto -896 0 lineto -448 0 lineto -448 2688 lineto -896 2688 lineto -896 2304 lineto -1053 2529 1266 2640 conicto -1479 2752 1757 2752 conicto -2217 2752 2452 2471 conicto -2688 2191 2688 1646 conicto -end_ol grestore -gsave 6.950977 4.400000 translate 0.035278 -0.035278 scale -start_ol -896 3456 moveto -896 2688 lineto -1792 2688 lineto -1792 2368 lineto -896 2368 lineto -896 902 lineto -896 572 984 478 conicto -1073 384 1345 384 conicto -1792 384 lineto -1792 0 lineto -1345 0 lineto -836 0 642 194 conicto -448 389 448 902 conicto -448 2368 lineto -128 2368 lineto -128 2688 lineto -448 2688 lineto -448 3456 lineto -896 3456 lineto -end_ol grestore -gsave 7.200744 4.400000 translate 0.035278 -0.035278 scale -start_ol -2112 2560 moveto -2112 2176 lineto -1932 2272 1738 2320 conicto -1544 2368 1336 2368 conicto -1020 2368 862 2269 conicto -704 2170 704 1972 conicto -704 1821 814 1735 conicto -925 1649 1260 1571 conicto -1403 1538 lineto -1857 1438 2048 1255 conicto -2240 1072 2240 744 conicto -2240 371 1954 153 conicto -1668 -64 1167 -64 conicto -958 -64 732 -16 conicto -506 32 256 128 conicto -256 576 lineto -491 448 719 384 conicto -947 320 1170 320 conicto -1470 320 1631 425 conicto -1792 531 1792 722 conicto -1792 900 1678 994 conicto -1564 1089 1177 1177 conicto -1032 1212 lineto -621 1298 438 1476 conicto -256 1654 256 1964 conicto -256 2341 520 2546 conicto -784 2752 1269 2752 conicto -1509 2752 1721 2704 conicto -1933 2656 2112 2560 conicto -end_ol grestore -gsave 7.532928 4.400000 translate 0.035278 -0.035278 scale -start_ol -end_ol grestore -gsave 7.735235 4.400000 translate 0.035278 -0.035278 scale -start_ol -256 1536 moveto -1536 1536 lineto -1536 1152 lineto -256 1152 lineto -256 1536 lineto -end_ol grestore -gsave 7.965018 4.400000 translate 0.035278 -0.035278 scale -start_ol -512 2380 moveto -512 2816 lineto -3584 1703 lineto -3584 1305 lineto -512 192 lineto -512 628 lineto -2980 1502 lineto -512 2380 lineto +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto end_ol grestore 0.100000 slw [] 0 sd [] 0 sd 0 slc +n 15.384708 7.546026 m 22.751487 9.289497 l s +[] 0 sd +0 slj +0 slc +n 15.019789 7.459662 m 15.563924 7.331534 l 15.384708 7.546026 l 15.448772 7.818094 l ef +n 15.019789 7.459662 m 15.563924 7.331534 l 15.384708 7.546026 l 15.448772 7.818094 l cp s +[] 0 sd +0 slj +0 slc +n 23.116406 9.375861 m 22.572271 9.503988 l 22.751487 9.289497 l 22.687423 9.017429 l ef +n 23.116406 9.375861 m 22.572271 9.503988 l 22.751487 9.289497 l 22.687423 9.017429 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 22.062047 7.666433 m 23.516329 8.666957 l s +[] 0 sd +0 slj +0 slc +n 21.753101 7.453883 m 22.306729 7.531319 l 22.062047 7.666433 l 22.023329 7.943247 l ef +n 21.753101 7.453883 m 22.306729 7.531319 l 22.062047 7.666433 l 22.023329 7.943247 l cp s +[] 0 sd +0 slj +0 slc +n 23.825275 8.879507 m 23.271647 8.802071 l 23.516329 8.666957 l 23.555047 8.390143 l ef +n 23.825275 8.879507 m 23.271647 8.802071 l 23.516329 8.666957 l 23.555047 8.390143 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 27.869224 7.587184 m 26.411024 8.893614 l s +[] 0 sd +0 slj +0 slc +n 28.148526 7.336952 m 27.942945 7.856795 l 27.869224 7.587184 l 27.609303 7.484393 l ef +n 28.148526 7.336952 m 27.942945 7.856795 l 27.869224 7.587184 l 27.609303 7.484393 l cp s +[] 0 sd +0 slj +0 slc +n 26.131723 9.143846 m 26.337304 8.624003 l 26.411024 8.893614 l 26.670946 8.996404 l ef +n 26.131723 9.143846 m 26.337304 8.624003 l 26.411024 8.893614 l 26.670946 8.996404 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 35.054574 7.482599 m 28.373202 9.132289 l s +[] 0 sd +0 slj +0 slc +n 35.418641 7.392708 m 34.993146 7.755274 l 35.054574 7.482599 l 34.873291 7.269852 l ef +n 35.418641 7.392708 m 34.993146 7.755274 l 35.054574 7.482599 l 34.873291 7.269852 l cp s +[] 0 sd +0 slj +0 slc +n 28.009135 9.222181 m 28.434630 8.859614 l 28.373202 9.132289 l 28.554485 9.345037 l ef +n 28.009135 9.222181 m 28.434630 8.859614 l 28.373202 9.132289 l 28.554485 9.345037 l cp s +0.100000 slw +[] 0 sd +[] 0 sd +0 slc 0 slj 0.100000 slw 0 slc 0 slj [] 0 sd 1.000000 1.000000 1.000000 srgb -n 23.655600 32.802400 m 24.204100 32.446150 24.478350 32.327400 25.026850 32.327400 c 25.575350 32.327400 25.849600 32.446150 26.398100 32.802400 c 26.398100 34.702400 l 25.849600 35.058650 25.575350 35.177400 25.026850 35.177400 c 24.478350 35.177400 24.204100 35.058650 23.655600 34.702400 c 23.655600 32.802400 l ef +n 23.655600 26.252400 m 24.204100 25.896150 24.478350 25.777400 25.026850 25.777400 c 25.575350 25.777400 25.849600 25.896150 26.398100 26.252400 c 26.398100 28.152400 l 25.849600 28.508650 25.575350 28.627400 25.026850 28.627400 c 24.478350 28.627400 24.204100 28.508650 23.655600 28.152400 c 23.655600 26.252400 l ef 0.000000 0.000000 0.000000 srgb -n 23.655600 32.802400 m 24.204100 32.446150 24.478350 32.327400 25.026850 32.327400 c 25.575350 32.327400 25.849600 32.446150 26.398100 32.802400 c 26.398100 34.702400 l 25.849600 35.058650 25.575350 35.177400 25.026850 35.177400 c 24.478350 35.177400 24.204100 35.058650 23.655600 34.702400 c 23.655600 32.802400 l s +n 23.655600 26.252400 m 24.204100 25.896150 24.478350 25.777400 25.026850 25.777400 c 25.575350 25.777400 25.849600 25.896150 26.398100 26.252400 c 26.398100 28.152400 l 25.849600 28.508650 25.575350 28.627400 25.026850 28.627400 c 24.478350 28.627400 24.204100 28.508650 23.655600 28.152400 c 23.655600 26.252400 l s 0 slc 0 slj [] 0 sd -n 23.655600 32.802400 m 24.204100 33.158650 24.478350 33.277400 25.026850 33.277400 c 25.575350 33.277400 25.849600 33.158650 26.398100 32.802400 c s -gsave 24.198100 34.189900 translate 0.035278 -0.035278 scale +n 23.655600 26.252400 m 24.204100 26.608650 24.478350 26.727400 25.026850 26.727400 c 25.575350 26.727400 25.849600 26.608650 26.398100 26.252400 c s +gsave 24.198100 27.639900 translate 0.035278 -0.035278 scale start_ol -64 3520 moveto 3008 3520 lineto @@ -407,7 +331,7 @@ start_ol -64 3136 lineto -64 3520 lineto end_ol grestore -gsave 24.482833 34.189900 translate 0.035278 -0.035278 scale +gsave 24.482833 27.639900 translate 0.035278 -0.035278 scale start_ol 1622 1344 moveto 1104 1344 904 1225 conicto @@ -440,7 +364,7 @@ start_ol 1927 2752 2211 2444 conicto 2496 2137 2496 1513 conicto end_ol grestore -gsave 24.874962 34.189900 translate 0.035278 -0.035278 scale +gsave 24.874962 27.639900 translate 0.035278 -0.035278 scale start_ol 2368 1344 moveto 2368 1823 2171 2095 conicto @@ -466,7 +390,7 @@ start_ol 896 3712 lineto 896 2304 lineto end_ol grestore -gsave 25.282081 34.189900 translate 0.035278 -0.035278 scale +gsave 25.282081 27.639900 translate 0.035278 -0.035278 scale start_ol 448 3712 moveto 896 3712 lineto @@ -474,7 +398,7 @@ start_ol 448 0 lineto 448 3712 lineto end_ol grestore -gsave 25.459410 34.189900 translate 0.035278 -0.035278 scale +gsave 25.459410 27.639900 translate 0.035278 -0.035278 scale start_ol 2752 1480 moveto 2752 1280 lineto @@ -509,14 +433,14 @@ end_ol grestore 0 slj [] 0 sd 1.000000 1.000000 1.000000 srgb -n 12.750500 24.893500 m 13.299000 24.537250 13.573250 24.418500 14.121750 24.418500 c 14.670250 24.418500 14.944500 24.537250 15.493000 24.893500 c 15.493000 26.793500 l 14.944500 27.149750 14.670250 27.268500 14.121750 27.268500 c 13.573250 27.268500 13.299000 27.149750 12.750500 26.793500 c 12.750500 24.893500 l ef +n 12.750500 20.593500 m 13.299000 20.237250 13.573250 20.118500 14.121750 20.118500 c 14.670250 20.118500 14.944500 20.237250 15.493000 20.593500 c 15.493000 22.493500 l 14.944500 22.849750 14.670250 22.968500 14.121750 22.968500 c 13.573250 22.968500 13.299000 22.849750 12.750500 22.493500 c 12.750500 20.593500 l ef 0.000000 0.000000 0.000000 srgb -n 12.750500 24.893500 m 13.299000 24.537250 13.573250 24.418500 14.121750 24.418500 c 14.670250 24.418500 14.944500 24.537250 15.493000 24.893500 c 15.493000 26.793500 l 14.944500 27.149750 14.670250 27.268500 14.121750 27.268500 c 13.573250 27.268500 13.299000 27.149750 12.750500 26.793500 c 12.750500 24.893500 l s +n 12.750500 20.593500 m 13.299000 20.237250 13.573250 20.118500 14.121750 20.118500 c 14.670250 20.118500 14.944500 20.237250 15.493000 20.593500 c 15.493000 22.493500 l 14.944500 22.849750 14.670250 22.968500 14.121750 22.968500 c 13.573250 22.968500 13.299000 22.849750 12.750500 22.493500 c 12.750500 20.593500 l s 0 slc 0 slj [] 0 sd -n 12.750500 24.893500 m 13.299000 25.249750 13.573250 25.368500 14.121750 25.368500 c 14.670250 25.368500 14.944500 25.249750 15.493000 24.893500 c s -gsave 13.125500 26.281000 translate 0.035278 -0.035278 scale +n 12.750500 20.593500 m 13.299000 20.949750 13.573250 21.068500 14.121750 21.068500 c 14.670250 21.068500 14.944500 20.949750 15.493000 20.593500 c s +gsave 13.125500 21.981000 translate 0.035278 -0.035278 scale start_ol 960 3136 moveto 960 1792 lineto @@ -537,7 +461,7 @@ start_ol 448 0 lineto 448 3520 lineto end_ol grestore -gsave 13.510138 26.281000 translate 0.035278 -0.035278 scale +gsave 13.510138 21.981000 translate 0.035278 -0.035278 scale start_ol 448 3712 moveto 896 3712 lineto @@ -545,7 +469,7 @@ start_ol 448 0 lineto 448 3712 lineto end_ol grestore -gsave 13.687467 26.281000 translate 0.035278 -0.035278 scale +gsave 13.687467 21.981000 translate 0.035278 -0.035278 scale start_ol 1622 1344 moveto 1104 1344 904 1225 conicto @@ -578,7 +502,7 @@ start_ol 1927 2752 2211 2444 conicto 2496 2137 2496 1513 conicto end_ol grestore -gsave 14.079596 26.281000 translate 0.035278 -0.035278 scale +gsave 14.079596 21.981000 translate 0.035278 -0.035278 scale start_ol 1542 -238 moveto 1360 -726 1187 -875 conicto @@ -596,7 +520,7 @@ start_ol 2688 2688 lineto 1542 -238 lineto end_ol grestore -gsave 14.459240 26.281000 translate 0.035278 -0.035278 scale +gsave 14.459240 21.981000 translate 0.035278 -0.035278 scale start_ol 2752 1480 moveto 2752 1280 lineto @@ -621,7 +545,7 @@ start_ol 753 1964 719 1597 conicto 2304 1600 lineto end_ol grestore -gsave 14.853866 26.281000 translate 0.035278 -0.035278 scale +gsave 14.853866 21.981000 translate 0.035278 -0.035278 scale start_ol 1984 2304 moveto 1912 2337 1828 2352 conicto @@ -643,17 +567,17 @@ end_ol grestore [] 0 sd [] 0 sd 0 slc -n 24.987111 26.803989 m 25.015633 31.791076 l s +n 24.989735 22.453767 m 25.011521 25.241123 l s [] 0 sd 0 slj 0 slc -n 24.984966 26.428995 m 25.237822 26.927557 l 24.987111 26.803989 l 24.737830 26.930416 l ef -n 24.984966 26.428995 m 25.237822 26.927557 l 24.987111 26.803989 l 24.737830 26.930416 l cp s +n 24.986804 22.078778 m 25.240704 22.576809 l 24.989735 22.453767 l 24.740719 22.580717 l ef +n 24.986804 22.078778 m 25.240704 22.576809 l 24.989735 22.453767 l 24.740719 22.580717 l cp s [] 0 sd 0 slj 0 slc -n 25.017778 32.166070 m 24.764922 31.667508 l 25.015633 31.791076 l 25.264914 31.664648 l ef -n 25.017778 32.166070 m 24.764922 31.667508 l 25.015633 31.791076 l 25.264914 31.664648 l cp s +n 25.014452 25.616112 m 24.760551 25.118081 l 25.011521 25.241123 l 25.260536 25.114173 l ef +n 25.014452 25.616112 m 24.760551 25.118081 l 25.011521 25.241123 l 25.260536 25.114173 l cp s 0.100000 slw [] 0 sd [] 0 sd @@ -664,10 +588,10 @@ n 25.017778 32.166070 m 24.764922 31.667508 l 25.015633 31.791076 l 25.264914 31 0 slj [] 0 sd 1.000000 1.000000 1.000000 srgb -n 22.943700 24.551900 m 27.016200 24.551900 l 27.016200 26.266186 l 26.201700 25.980471 25.794450 25.980471 24.979950 26.266186 c 24.165450 26.551900 23.758200 26.551900 22.943700 26.266186 c 22.943700 24.551900 l ef +n 22.943700 20.201900 m 27.016200 20.201900 l 27.016200 21.916186 l 26.201700 21.630471 25.794450 21.630471 24.979950 21.916186 c 24.165450 22.201900 23.758200 22.201900 22.943700 21.916186 c 22.943700 20.201900 l ef 0.000000 0.000000 0.000000 srgb -n 22.943700 24.551900 m 27.016200 24.551900 l 27.016200 26.266186 l 26.201700 25.980471 25.794450 25.980471 24.979950 26.266186 c 24.165450 26.551900 23.758200 26.551900 22.943700 26.266186 c 22.943700 24.551900 l s -gsave 23.093700 25.466186 translate 0.035278 -0.035278 scale +n 22.943700 20.201900 m 27.016200 20.201900 l 27.016200 21.916186 l 26.201700 21.630471 25.794450 21.630471 24.979950 21.916186 c 24.165450 22.201900 23.758200 22.201900 22.943700 21.916186 c 22.943700 20.201900 l s +gsave 23.093700 21.116186 translate 0.035278 -0.035278 scale start_ol 3136 3264 moveto 3136 2752 lineto @@ -689,7 +613,7 @@ start_ol 2320 3584 2603 3504 conicto 2887 3424 3136 3264 conicto end_ol grestore -gsave 23.540780 25.466186 translate 0.035278 -0.035278 scale +gsave 23.540780 21.116186 translate 0.035278 -0.035278 scale start_ol 1473 2368 moveto 1117 2368 910 2094 conicto @@ -710,7 +634,7 @@ start_ol 256 2005 579 2378 conicto 902 2752 1472 2752 conicto end_ol grestore -gsave 23.932909 25.466186 translate 0.035278 -0.035278 scale +gsave 23.932909 21.116186 translate 0.035278 -0.035278 scale start_ol 1473 2368 moveto 1117 2368 910 2094 conicto @@ -731,7 +655,7 @@ start_ol 256 2005 579 2378 conicto 902 2752 1472 2752 conicto end_ol grestore -gsave 24.325038 25.466186 translate 0.035278 -0.035278 scale +gsave 24.325038 21.116186 translate 0.035278 -0.035278 scale start_ol 1984 2304 moveto 1912 2337 1828 2352 conicto @@ -749,7 +673,7 @@ start_ol 1917 2752 1982 2752 conicto 1984 2304 lineto end_ol grestore -gsave 24.577301 25.466186 translate 0.035278 -0.035278 scale +gsave 24.577301 21.116186 translate 0.035278 -0.035278 scale start_ol 2176 2304 moveto 2176 3712 lineto @@ -775,7 +699,7 @@ start_ol 1096 2368 900 2095 conicto 704 1823 704 1344 conicto end_ol grestore -gsave 24.984421 25.466186 translate 0.035278 -0.035278 scale +gsave 24.984421 21.116186 translate 0.035278 -0.035278 scale start_ol 448 2688 moveto 896 2688 lineto @@ -788,7 +712,7 @@ start_ol 448 3136 lineto 448 3712 lineto end_ol grestore -gsave 25.161749 25.466186 translate 0.035278 -0.035278 scale +gsave 25.161749 21.116186 translate 0.035278 -0.035278 scale start_ol 2688 1646 moveto 2688 0 lineto @@ -808,7 +732,7 @@ start_ol 2217 2752 2452 2471 conicto 2688 2191 2688 1646 conicto end_ol grestore -gsave 25.566364 25.466186 translate 0.035278 -0.035278 scale +gsave 25.566364 21.116186 translate 0.035278 -0.035278 scale start_ol 1622 1344 moveto 1104 1344 904 1225 conicto @@ -841,7 +765,7 @@ start_ol 1927 2752 2211 2444 conicto 2496 2137 2496 1513 conicto end_ol grestore -gsave 25.958493 25.466186 translate 0.035278 -0.035278 scale +gsave 25.958493 21.116186 translate 0.035278 -0.035278 scale start_ol 896 3456 moveto 896 2688 lineto @@ -863,7 +787,7 @@ start_ol 448 3456 lineto 896 3456 lineto end_ol grestore -gsave 26.208259 25.466186 translate 0.035278 -0.035278 scale +gsave 26.208259 21.116186 translate 0.035278 -0.035278 scale start_ol 1473 2368 moveto 1117 2368 910 2094 conicto @@ -884,7 +808,7 @@ start_ol 256 2005 579 2378 conicto 902 2752 1472 2752 conicto end_ol grestore -gsave 26.600388 25.466186 translate 0.035278 -0.035278 scale +gsave 26.600388 21.116186 translate 0.035278 -0.035278 scale start_ol 1984 2304 moveto 1912 2337 1828 2352 conicto @@ -912,14 +836,14 @@ end_ol grestore 0 slj [] 0 sd 0.749020 0.749020 0.749020 srgb -n 29.883100 24.548767 m 30.433100 24.198767 30.708100 24.082100 31.258100 24.082100 c 31.808100 24.082100 32.083100 24.198767 32.633100 24.548767 c 32.633100 26.415433 l 32.083100 26.765433 31.808100 26.882100 31.258100 26.882100 c 30.708100 26.882100 30.433100 26.765433 29.883100 26.415433 c 29.883100 24.548767 l ef +n 29.883100 20.198767 m 30.433100 19.848767 30.708100 19.732100 31.258100 19.732100 c 31.808100 19.732100 32.083100 19.848767 32.633100 20.198767 c 32.633100 22.065433 l 32.083100 22.415433 31.808100 22.532100 31.258100 22.532100 c 30.708100 22.532100 30.433100 22.415433 29.883100 22.065433 c 29.883100 20.198767 l ef 0.000000 0.000000 0.000000 srgb -n 29.883100 24.548767 m 30.433100 24.198767 30.708100 24.082100 31.258100 24.082100 c 31.808100 24.082100 32.083100 24.198767 32.633100 24.548767 c 32.633100 26.415433 l 32.083100 26.765433 31.808100 26.882100 31.258100 26.882100 c 30.708100 26.882100 30.433100 26.765433 29.883100 26.415433 c 29.883100 24.548767 l s +n 29.883100 20.198767 m 30.433100 19.848767 30.708100 19.732100 31.258100 19.732100 c 31.808100 19.732100 32.083100 19.848767 32.633100 20.198767 c 32.633100 22.065433 l 32.083100 22.415433 31.808100 22.532100 31.258100 22.532100 c 30.708100 22.532100 30.433100 22.415433 29.883100 22.065433 c 29.883100 20.198767 l s 0 slc 0 slj [] 0 sd -n 29.883100 24.548767 m 30.433100 24.898767 30.708100 25.015433 31.258100 25.015433 c 31.808100 25.015433 32.083100 24.898767 32.633100 24.548767 c s -gsave 30.084350 25.915433 translate 0.035278 -0.035278 scale +n 29.883100 20.198767 m 30.433100 20.548767 30.708100 20.665433 31.258100 20.665433 c 31.808100 20.665433 32.083100 20.548767 32.633100 20.198767 c s +gsave 30.084350 21.565433 translate 0.035278 -0.035278 scale start_ol 960 1728 moveto 960 384 lineto @@ -950,7 +874,7 @@ start_ol 448 0 lineto 448 3520 lineto end_ol grestore -gsave 30.523939 25.915433 translate 0.035278 -0.035278 scale +gsave 30.523939 21.565433 translate 0.035278 -0.035278 scale start_ol 1622 1344 moveto 1104 1344 904 1225 conicto @@ -983,7 +907,7 @@ start_ol 1927 2752 2211 2444 conicto 2496 2137 2496 1513 conicto end_ol grestore -gsave 30.916068 25.915433 translate 0.035278 -0.035278 scale +gsave 30.916068 21.565433 translate 0.035278 -0.035278 scale start_ol 2368 2560 moveto 2368 2176 lineto @@ -1005,7 +929,7 @@ start_ol 1801 2752 1994 2704 conicto 2187 2656 2368 2560 conicto end_ol grestore -gsave 31.268236 25.915433 translate 0.035278 -0.035278 scale +gsave 31.268236 21.565433 translate 0.035278 -0.035278 scale start_ol 448 3712 moveto 896 3712 lineto @@ -1020,7 +944,7 @@ start_ol 448 0 lineto 448 3712 lineto end_ol grestore -gsave 31.617908 25.915433 translate 0.035278 -0.035278 scale +gsave 31.617908 21.565433 translate 0.035278 -0.035278 scale start_ol 448 1040 moveto 448 2688 lineto @@ -1042,7 +966,7 @@ start_ol 1554 2752 moveto 1554 2752 lineto end_ol grestore -gsave 32.022522 25.915433 translate 0.035278 -0.035278 scale +gsave 32.022522 21.565433 translate 0.035278 -0.035278 scale start_ol 896 384 moveto 896 -1024 lineto @@ -1072,17 +996,17 @@ end_ol grestore [] 0 sd [] 0 sd 0 slc -n 27.553181 25.523291 m 29.347401 25.503343 l s +n 27.553181 21.173291 m 29.347401 21.153343 l s [] 0 sd 0 slj 0 slc -n 27.178204 25.527460 m 27.675394 25.271917 l 27.553181 25.523291 l 27.680953 25.771886 l ef -n 27.178204 25.527460 m 27.675394 25.271917 l 27.553181 25.523291 l 27.680953 25.771886 l cp s +n 27.178204 21.177460 m 27.675394 20.921917 l 27.553181 21.173291 l 27.680953 21.421886 l ef +n 27.178204 21.177460 m 27.675394 20.921917 l 27.553181 21.173291 l 27.680953 21.421886 l cp s [] 0 sd 0 slj 0 slc -n 29.722377 25.499174 m 29.225188 25.754717 l 29.347401 25.503343 l 29.219629 25.254748 l ef -n 29.722377 25.499174 m 29.225188 25.754717 l 29.347401 25.503343 l 29.219629 25.254748 l cp s +n 29.722377 21.149174 m 29.225188 21.404717 l 29.347401 21.153343 l 29.219629 20.904748 l ef +n 29.722377 21.149174 m 29.225188 21.404717 l 29.347401 21.153343 l 29.219629 20.904748 l cp s 0.100000 slw [] 0 sd [] 0 sd @@ -1096,35 +1020,46 @@ n 29.722377 25.499174 m 29.225188 25.754717 l 29.347401 25.503343 l 29.219629 25 n 23.574136 9.434794 m 23.085417 9.427291 22.137600 9.584862 22.270887 9.922516 c 22.404173 10.260169 23.040988 10.335200 23.307562 10.237659 c 23.574136 10.140115 22.892892 10.710371 24.196142 10.860439 c 25.499381 11.010507 26.165816 10.770398 25.973290 10.597820 c 25.780765 10.425241 27.113635 11.003004 27.735641 10.672854 c 28.357647 10.342704 27.098825 10.027564 27.365399 10.072584 c 27.631973 10.117604 28.446505 10.057577 28.179931 9.494821 c 27.913357 8.932066 25.514191 9.367263 25.780765 9.284726 c 26.047339 9.202188 25.380904 8.789500 24.551574 8.872038 c 23.722233 8.954576 23.663409 9.104351 23.574551 9.434501 c 23.574136 9.434794 l ef 0.000000 0.000000 0.000000 srgb n 23.574136 9.434794 m 23.085417 9.427291 22.137600 9.584862 22.270887 9.922516 c 22.404173 10.260169 23.040988 10.335200 23.307562 10.237659 c 23.574136 10.140115 22.892892 10.710371 24.196142 10.860439 c 25.499381 11.010507 26.165816 10.770398 25.973290 10.597820 c 25.780765 10.425241 27.113635 11.003004 27.735641 10.672854 c 28.357647 10.342704 27.098825 10.027564 27.365399 10.072584 c 27.631973 10.117604 28.446505 10.057577 28.179931 9.494821 c 27.913357 8.932066 25.514191 9.367263 25.780765 9.284726 c 26.047339 9.202188 25.380904 8.789500 24.551574 8.872038 c 23.722233 8.954576 23.663409 9.104351 23.574551 9.434501 c 23.574136 9.434794 l s -gsave 23.879922 10.139155 translate 0.035278 -0.035278 scale +gsave 24.124922 10.139155 translate 0.035278 -0.035278 scale start_ol 448 3520 moveto -960 3520 lineto +1131 3520 lineto +2624 575 lineto +2624 3520 lineto +3136 3520 lineto +3136 0 lineto +2453 0 lineto +960 2945 lineto 960 0 lineto 448 0 lineto 448 3520 lineto end_ol grestore -gsave 24.069744 10.139155 translate 0.035278 -0.035278 scale +gsave 24.604471 10.139155 translate 0.035278 -0.035278 scale start_ol -2688 1646 moveto -2688 0 lineto -2240 0 lineto -2240 1632 lineto -2240 2001 2093 2184 conicto -1947 2368 1654 2368 conicto -1302 2368 1099 2146 conicto -896 1925 896 1542 conicto -896 0 lineto -448 0 lineto -448 2688 lineto -896 2688 lineto -896 2304 lineto -1053 2529 1266 2640 conicto -1479 2752 1757 2752 conicto -2217 2752 2452 2471 conicto -2688 2191 2688 1646 conicto +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto end_ol grestore -gsave 24.474358 10.139155 translate 0.035278 -0.035278 scale +gsave 24.999097 10.139155 translate 0.035278 -0.035278 scale start_ol 896 3456 moveto 896 2688 lineto @@ -1146,32 +1081,45 @@ start_ol 448 3456 lineto 896 3456 lineto end_ol grestore -gsave 24.724125 10.139155 translate 0.035278 -0.035278 scale +gsave 25.248864 10.139155 translate 0.035278 -0.035278 scale start_ol -2752 1480 moveto -2752 1280 lineto -704 1280 lineto -733 811 978 565 conicto -1223 320 1660 320 conicto -1914 320 2152 384 conicto -2390 448 2624 576 conicto -2624 192 lineto -2388 67 2140 1 conicto -1893 -64 1639 -64 conicto -1001 -64 628 309 conicto -256 683 256 1320 conicto -256 1979 613 2365 conicto -970 2752 1576 2752 conicto -2120 2752 2436 2410 conicto -2752 2068 2752 1480 conicto -2304 1600 moveto -2299 1950 2099 2159 conicto -1900 2368 1572 2368 conicto -1200 2368 976 2166 conicto -753 1964 719 1597 conicto -2304 1600 lineto +192 2688 moveto +631 2688 lineto +1179 590 lineto +1725 2688 lineto +2243 2688 lineto +2791 590 lineto +3337 2688 lineto +3776 2688 lineto +3077 0 lineto +2560 0 lineto +1985 2203 lineto +1408 0 lineto +891 0 lineto +192 2688 lineto end_ol grestore -gsave 25.118751 10.139155 translate 0.035278 -0.035278 scale +gsave 25.770870 10.139155 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 26.162999 10.139155 translate 0.035278 -0.035278 scale start_ol 1984 2304 moveto 1912 2337 1828 2352 conicto @@ -1189,87 +1137,20 @@ start_ol 1917 2752 1982 2752 conicto 1984 2304 lineto end_ol grestore -gsave 25.381002 10.139155 translate 0.035278 -0.035278 scale +gsave 26.425251 10.139155 translate 0.035278 -0.035278 scale start_ol -192 2688 moveto -631 2688 lineto -1179 590 lineto -1725 2688 lineto -2243 2688 lineto -2791 590 lineto -3337 2688 lineto -3776 2688 lineto -3077 0 lineto -2560 0 lineto -1985 2203 lineto -1408 0 lineto -891 0 lineto -192 2688 lineto -end_ol grestore -gsave 25.903009 10.139155 translate 0.035278 -0.035278 scale -start_ol -2752 1480 moveto -2752 1280 lineto -704 1280 lineto -733 811 978 565 conicto -1223 320 1660 320 conicto -1914 320 2152 384 conicto -2390 448 2624 576 conicto -2624 192 lineto -2388 67 2140 1 conicto -1893 -64 1639 -64 conicto -1001 -64 628 309 conicto -256 683 256 1320 conicto -256 1979 613 2365 conicto -970 2752 1576 2752 conicto -2120 2752 2436 2410 conicto -2752 2068 2752 1480 conicto -2304 1600 moveto -2299 1950 2099 2159 conicto -1900 2368 1572 2368 conicto -1200 2368 976 2166 conicto -753 1964 719 1597 conicto -2304 1600 lineto -end_ol grestore -gsave 26.297635 10.139155 translate 0.035278 -0.035278 scale -start_ol -2368 1344 moveto -2368 1823 2171 2095 conicto -1975 2368 1632 2368 conicto -1289 2368 1092 2095 conicto -896 1823 896 1344 conicto -896 865 1092 592 conicto -1289 320 1632 320 conicto -1975 320 2171 592 conicto -2368 865 2368 1344 conicto -896 2304 moveto -1032 2531 1240 2641 conicto -1448 2752 1737 2752 conicto -2217 2752 2516 2364 conicto -2816 1976 2816 1344 conicto -2816 712 2516 324 conicto -2217 -64 1737 -64 conicto -1448 -64 1240 46 conicto -1032 157 896 384 conicto +448 3712 moveto +896 3712 lineto +896 1529 lineto +2196 2688 lineto +2752 2688 lineto +1346 1430 lineto +2816 0 lineto +2246 0 lineto +896 1313 lineto 896 0 lineto 448 0 lineto 448 3712 lineto -896 3712 lineto -896 2304 lineto -end_ol grestore -gsave 26.704754 10.139155 translate 0.035278 -0.035278 scale -start_ol -256 2688 moveto -2304 2688 lineto -2304 2279 lineto -682 320 lineto -2304 320 lineto -2304 0 lineto -192 0 lineto -192 409 lineto -1819 2368 lineto -256 2368 lineto -256 2688 lineto end_ol grestore 1.000000 1.000000 1.000000 srgb n 24.921310 14.477800 m 28.665720 16.350005 l 24.921310 18.222210 l 21.176900 16.350005 l ef @@ -1513,38 +1394,38 @@ end_ol grestore [] 0 sd [] 0 sd 0 slc -n 24.968700 10.908700 m 24.927764 13.991040 l s +n 24.968727 10.908716 m 24.927768 13.991040 l s [] 0 sd 0 slj 0 slc -n 24.922785 14.366006 m 24.679446 13.862731 l 24.927764 13.991040 l 25.179402 13.869370 l ef -n 24.922785 14.366006 m 24.679446 13.862731 l 24.927764 13.991040 l 25.179402 13.869370 l cp s +n 24.922786 14.366006 m 24.679451 13.862729 l 24.927768 13.991040 l 25.179407 13.869372 l ef +n 24.922786 14.366006 m 24.679451 13.862729 l 24.927768 13.991040 l 25.179407 13.869372 l cp s 0.100000 slw [] 0 sd [] 0 sd 0 slc -n 23.527531 17.575225 m 15.724214 24.434833 l s +n 22.961649 17.292404 m 15.981924 20.648945 l s [] 0 sd 0 slj 0 slc -n 15.442565 24.682420 m 15.653039 24.164539 l 15.724214 24.434833 l 15.983154 24.540070 l ef -n 15.442565 24.682420 m 15.653039 24.164539 l 15.724214 24.434833 l 15.983154 24.540070 l cp s +n 15.643971 20.811466 m 15.986227 20.369469 l 15.981924 20.648945 l 16.202922 20.820073 l ef +n 15.643971 20.811466 m 15.986227 20.369469 l 15.981924 20.648945 l 16.202922 20.820073 l cp s 0.100000 slw [] 0 sd [] 0 sd 0 slc -n 19.397858 20.000843 7.872321 7.872321 59.476027 116.094785 ellipse s +n 19.371589 15.674662 7.874266 7.874266 59.162541 115.793403 ellipse s [] 0 sd 0 slj 0 slc -n 23.714498 26.585108 m 23.440308 27.072263 l 23.403838 26.795144 l 23.160260 26.658050 l ef -n 23.714498 26.585108 m 23.440308 27.072263 l 23.403838 26.795144 l 23.160260 26.658050 l cp s +n 23.725188 22.236883 m 23.453661 22.725527 l 23.415678 22.448611 l 23.171356 22.312848 l ef +n 23.725188 22.236883 m 23.453661 22.725527 l 23.415678 22.448611 l 23.171356 22.312848 l cp s [] 0 sd 0 slj 0 slc -n 15.602592 26.898805 m 16.160808 26.928727 l 15.928545 27.084223 l 15.913584 27.363331 l ef -n 15.602592 26.898805 m 16.160808 26.928727 l 15.928545 27.084223 l 15.913584 27.363331 l cp s -gsave 15.959900 20.827300 translate 0.035278 -0.035278 scale +n 15.611812 22.594246 m 16.170178 22.621223 l 15.938738 22.777942 l 15.925250 23.057125 l ef +n 15.611812 22.594246 m 16.170178 22.621223 l 15.938738 22.777942 l 15.925250 23.057125 l cp s +gsave 16.009900 18.627300 translate 0.035278 -0.035278 scale start_ol 2624 3392 moveto 2624 2944 lineto @@ -1576,7 +1457,7 @@ start_ol 1828 3584 2089 3536 conicto 2351 3488 2624 3392 conicto end_ol grestore -gsave 16.367019 20.827300 translate 0.035278 -0.035278 scale +gsave 16.417019 18.627300 translate 0.035278 -0.035278 scale start_ol 896 384 moveto 896 -1024 lineto @@ -1602,7 +1483,7 @@ start_ol 1975 320 2171 592 conicto 2368 865 2368 1344 conicto end_ol grestore -gsave 16.774139 20.827300 translate 0.035278 -0.035278 scale +gsave 16.824139 18.627300 translate 0.035278 -0.035278 scale start_ol 1622 1344 moveto 1104 1344 904 1225 conicto @@ -1635,7 +1516,7 @@ start_ol 1927 2752 2211 2444 conicto 2496 2137 2496 1513 conicto end_ol grestore -gsave 17.166268 20.827300 translate 0.035278 -0.035278 scale +gsave 17.216268 18.627300 translate 0.035278 -0.035278 scale start_ol 192 2688 moveto 631 2688 lineto @@ -1652,7 +1533,7 @@ start_ol 891 0 lineto 192 2688 lineto end_ol grestore -gsave 17.688274 20.827300 translate 0.035278 -0.035278 scale +gsave 17.738274 18.627300 translate 0.035278 -0.035278 scale start_ol 2688 1646 moveto 2688 0 lineto @@ -1672,7 +1553,7 @@ start_ol 2217 2752 2452 2471 conicto 2688 2191 2688 1646 conicto end_ol grestore -gsave 18.092888 20.827300 translate 0.035278 -0.035278 scale +gsave 18.142888 18.627300 translate 0.035278 -0.035278 scale start_ol 2112 2560 moveto 2112 2176 lineto @@ -1704,10 +1585,10 @@ start_ol 1509 2752 1721 2704 conicto 1933 2656 2112 2560 conicto end_ol grestore -gsave 18.425073 20.827300 translate 0.035278 -0.035278 scale +gsave 18.475073 18.627300 translate 0.035278 -0.035278 scale start_ol end_ol grestore -gsave 18.627380 20.827300 translate 0.035278 -0.035278 scale +gsave 18.677380 18.627300 translate 0.035278 -0.035278 scale start_ol 2688 1646 moveto 2688 0 lineto @@ -1727,7 +1608,7 @@ start_ol 2217 2752 2452 2471 conicto 2688 2191 2688 1646 conicto end_ol grestore -gsave 19.031994 20.827300 translate 0.035278 -0.035278 scale +gsave 19.081994 18.627300 translate 0.035278 -0.035278 scale start_ol 2752 1480 moveto 2752 1280 lineto @@ -1752,7 +1633,7 @@ start_ol 753 1964 719 1597 conicto 2304 1600 lineto end_ol grestore -gsave 19.426620 20.827300 translate 0.035278 -0.035278 scale +gsave 19.476620 18.627300 translate 0.035278 -0.035278 scale start_ol 192 2688 moveto 631 2688 lineto @@ -1773,173 +1654,50 @@ end_ol grestore [1.000000] 0 sd [1.000000] 0 sd 0 slc -n 29.983625 12.396716 20.794554 20.794554 145.412860 199.829072 ellipse s +n 16.362662 13.744017 7.439898 7.439898 161.144270 246.675369 ellipse s [] 0 sd 0 slj 0 slc -n 13.079570 24.507823 m 12.583746 24.249639 l 12.859531 24.204166 l 12.988623 23.956254 l ef -n 13.079570 24.507823 m 12.583746 24.249639 l 12.859531 24.204166 l 12.988623 23.956254 l cp s +n 9.451076 16.499837 m 9.028130 16.134301 l 9.306969 16.153632 l 9.489737 15.942159 l ef +n 9.451076 16.499837 m 9.028130 16.134301 l 9.306969 16.153632 l 9.489737 15.942159 l cp s [] 0 sd 0 slj 0 slc -n 10.552073 4.991261 m 10.604632 5.547802 l 10.416646 5.340953 l 10.138376 5.367233 l ef -n 10.552073 4.991261 m 10.604632 5.547802 l 10.416646 5.340953 l 10.138376 5.367233 l cp s -gsave 9.595930 13.685500 translate 0.035278 -0.035278 scale +n 13.763921 6.771849 m 13.376622 7.174961 l 13.410608 6.897527 l 13.209052 6.703877 l ef +n 13.763921 6.771849 m 13.376622 7.174961 l 13.410608 6.897527 l 13.209052 6.703877 l cp s +gsave 7.245930 12.885500 translate 0.035278 -0.035278 scale start_ol --64 3520 moveto -3008 3520 lineto -3008 3136 lineto -1728 3136 lineto -1728 0 lineto -1216 0 lineto -1216 3136 lineto --64 3136 lineto --64 3520 lineto -end_ol grestore -gsave 9.880663 13.685500 translate 0.035278 -0.035278 scale -start_ol -1622 1344 moveto -1104 1344 904 1225 conicto -704 1106 704 818 conicto -704 589 854 454 conicto -1004 320 1262 320 conicto -1618 320 1833 572 conicto -2048 825 2048 1244 conicto -2048 1344 lineto -1622 1344 lineto -2496 1513 moveto -2496 0 lineto -2048 0 lineto -2048 384 lineto -1900 154 1679 45 conicto -1458 -64 1138 -64 conicto -733 -64 494 162 conicto -256 389 256 769 conicto -256 1213 555 1438 conicto -854 1664 1448 1664 conicto -2048 1664 lineto -2048 1712 lineto -2048 2025 1851 2196 conicto -1655 2368 1300 2368 conicto -1074 2368 860 2320 conicto -646 2272 448 2176 conicto -448 2560 lineto -687 2656 912 2704 conicto -1138 2752 1351 2752 conicto -1927 2752 2211 2444 conicto -2496 2137 2496 1513 conicto -end_ol grestore -gsave 10.272792 13.685500 translate 0.035278 -0.035278 scale -start_ol -448 3712 moveto -896 3712 lineto -896 0 lineto +960 3136 moveto +960 384 lineto +1536 384 lineto +2266 384 2605 716 conicto +2944 1048 2944 1764 conicto +2944 2475 2605 2805 conicto +2266 3136 1536 3136 conicto +960 3136 lineto +448 3520 moveto +1463 3520 lineto +2493 3520 2974 3094 conicto +3456 2669 3456 1764 conicto +3456 853 2972 426 conicto +2488 0 1463 0 conicto 448 0 lineto -448 3712 lineto +448 3520 lineto end_ol grestore -gsave 10.450121 13.685500 translate 0.035278 -0.035278 scale +gsave 7.737964 12.885500 translate 0.035278 -0.035278 scale start_ol -448 3712 moveto -896 3712 lineto -896 1529 lineto -2196 2688 lineto -2752 2688 lineto -1346 1430 lineto -2816 0 lineto -2246 0 lineto -896 1313 lineto -896 0 lineto -448 0 lineto -448 3712 lineto -end_ol grestore -gsave 10.819768 13.685500 translate 0.035278 -0.035278 scale -start_ol -2112 2560 moveto -2112 2176 lineto -1932 2272 1738 2320 conicto -1544 2368 1336 2368 conicto -1020 2368 862 2269 conicto -704 2170 704 1972 conicto -704 1821 814 1735 conicto -925 1649 1260 1571 conicto -1403 1538 lineto -1857 1438 2048 1255 conicto -2240 1072 2240 744 conicto -2240 371 1954 153 conicto -1668 -64 1167 -64 conicto -958 -64 732 -16 conicto -506 32 256 128 conicto -256 576 lineto -491 448 719 384 conicto -947 320 1170 320 conicto -1470 320 1631 425 conicto -1792 531 1792 722 conicto -1792 900 1678 994 conicto -1564 1089 1177 1177 conicto -1032 1212 lineto -621 1298 438 1476 conicto -256 1654 256 1964 conicto -256 2341 520 2546 conicto -784 2752 1269 2752 conicto -1509 2752 1721 2704 conicto -1933 2656 2112 2560 conicto -end_ol grestore -gsave 11.151953 13.685500 translate 0.035278 -0.035278 scale -start_ol -end_ol grestore -gsave 11.354260 13.685500 translate 0.035278 -0.035278 scale -start_ol -2549 2204 moveto -2714 2485 2942 2618 conicto -3171 2752 3482 2752 conicto -3899 2752 4125 2464 conicto -4352 2177 4352 1646 conicto -4352 0 lineto -3904 0 lineto -3904 1632 lineto -3904 2006 3769 2187 conicto -3634 2368 3356 2368 conicto -3017 2368 2820 2146 conicto -2624 1925 2624 1542 conicto -2624 0 lineto -2176 0 lineto -2176 1632 lineto -2176 2008 2041 2188 conicto -1906 2368 1624 2368 conicto -1289 2368 1092 2145 conicto -896 1922 896 1542 conicto +448 2688 moveto +896 2688 lineto 896 0 lineto 448 0 lineto 448 2688 lineto -896 2688 lineto -896 2304 lineto -1046 2534 1255 2643 conicto -1465 2752 1753 2752 conicto -2044 2752 2247 2611 conicto -2451 2471 2549 2204 conicto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto end_ol grestore -gsave 11.976171 13.685500 translate 0.035278 -0.035278 scale -start_ol -1473 2368 moveto -1117 2368 910 2094 conicto -704 1820 704 1344 conicto -704 868 909 594 conicto -1115 320 1473 320 conicto -1827 320 2033 595 conicto -2240 870 2240 1344 conicto -2240 1816 2033 2092 conicto -1827 2368 1473 2368 conicto -1472 2752 moveto -2040 2752 2364 2378 conicto -2688 2005 2688 1344 conicto -2688 685 2364 310 conicto -2040 -64 1472 -64 conicto -902 -64 579 310 conicto -256 685 256 1344 conicto -256 2005 579 2378 conicto -902 2752 1472 2752 conicto -end_ol grestore -gsave 12.368300 13.685500 translate 0.035278 -0.035278 scale +gsave 7.915293 12.885500 translate 0.035278 -0.035278 scale start_ol 1984 2304 moveto 1912 2337 1828 2352 conicto @@ -1957,7 +1715,7 @@ start_ol 1917 2752 1982 2752 conicto 1984 2304 lineto end_ol grestore -gsave 12.615562 13.685500 translate 0.035278 -0.035278 scale +gsave 8.162554 12.885500 translate 0.035278 -0.035278 scale start_ol 2752 1480 moveto 2752 1280 lineto @@ -1982,177 +1740,307 @@ start_ol 753 1964 719 1597 conicto 2304 1600 lineto end_ol grestore +gsave 8.557180 12.885500 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 8.909349 12.885500 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 9.159116 12.885500 translate 0.035278 -0.035278 scale +start_ol +end_ol grestore +gsave 9.361423 12.885500 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 9.713591 12.885500 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 10.105720 12.885500 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 10.510334 12.885500 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 10.914948 12.885500 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 11.309574 12.885500 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 11.661743 12.885500 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 11.911510 12.885500 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 12.088839 12.885500 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 12.480968 12.885500 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore 0.100000 slw [1.000000] 0 sd [1.000000] 0 sd 0 slc -n 22.791067 25.362587 8.682596 8.682596 86.236425 163.825613 ellipse s +n 21.549340 20.566909 7.491517 7.491517 77.790067 157.354046 ellipse s [] 0 sd 0 slj 0 slc -n 14.354911 27.419585 m 14.710719 27.850747 l 14.439047 27.785025 l 14.223466 27.962928 l ef -n 14.354911 27.419585 m 14.710719 27.850747 l 14.439047 27.785025 l 14.223466 27.962928 l cp s +n 14.499182 23.102771 m 14.897854 23.494639 l 14.620825 23.457493 l 14.424891 23.656829 l ef +n 14.499182 23.102771 m 14.897854 23.494639 l 14.620825 23.457493 l 14.424891 23.656829 l cp s [] 0 sd 0 slj 0 slc -n 23.734110 33.994541 m 23.268157 34.303390 l 23.361884 34.040064 l 23.207460 33.807087 l ef -n 23.734110 33.994541 m 23.268157 34.303390 l 23.361884 34.040064 l 23.207460 33.807087 l cp s -gsave 11.363700 30.605400 translate 0.035278 -0.035278 scale +n 23.497697 27.801494 m 23.085500 28.179109 l 23.137094 27.904404 l 22.948286 27.698305 l ef +n 23.497697 27.801494 m 23.085500 28.179109 l 23.137094 27.904404 l 22.948286 27.698305 l cp s +gsave 13.763700 26.405400 translate 0.035278 -0.035278 scale start_ol --64 3520 moveto -3008 3520 lineto -3008 3136 lineto -1728 3136 lineto -1728 0 lineto -1216 0 lineto -1216 3136 lineto --64 3136 lineto --64 3520 lineto -end_ol grestore -gsave 11.648433 30.605400 translate 0.035278 -0.035278 scale -start_ol -1622 1344 moveto -1104 1344 904 1225 conicto -704 1106 704 818 conicto -704 589 854 454 conicto -1004 320 1262 320 conicto -1618 320 1833 572 conicto -2048 825 2048 1244 conicto -2048 1344 lineto -1622 1344 lineto -2496 1513 moveto -2496 0 lineto -2048 0 lineto -2048 384 lineto -1900 154 1679 45 conicto -1458 -64 1138 -64 conicto -733 -64 494 162 conicto -256 389 256 769 conicto -256 1213 555 1438 conicto -854 1664 1448 1664 conicto -2048 1664 lineto -2048 1712 lineto -2048 2025 1851 2196 conicto -1655 2368 1300 2368 conicto -1074 2368 860 2320 conicto -646 2272 448 2176 conicto -448 2560 lineto -687 2656 912 2704 conicto -1138 2752 1351 2752 conicto -1927 2752 2211 2444 conicto -2496 2137 2496 1513 conicto -end_ol grestore -gsave 12.040562 30.605400 translate 0.035278 -0.035278 scale -start_ol -448 3712 moveto -896 3712 lineto -896 0 lineto +960 3136 moveto +960 384 lineto +1536 384 lineto +2266 384 2605 716 conicto +2944 1048 2944 1764 conicto +2944 2475 2605 2805 conicto +2266 3136 1536 3136 conicto +960 3136 lineto +448 3520 moveto +1463 3520 lineto +2493 3520 2974 3094 conicto +3456 2669 3456 1764 conicto +3456 853 2972 426 conicto +2488 0 1463 0 conicto 448 0 lineto -448 3712 lineto +448 3520 lineto end_ol grestore -gsave 12.217891 30.605400 translate 0.035278 -0.035278 scale +gsave 14.255734 26.405400 translate 0.035278 -0.035278 scale start_ol -448 3712 moveto -896 3712 lineto -896 1529 lineto -2196 2688 lineto -2752 2688 lineto -1346 1430 lineto -2816 0 lineto -2246 0 lineto -896 1313 lineto -896 0 lineto -448 0 lineto -448 3712 lineto -end_ol grestore -gsave 12.587538 30.605400 translate 0.035278 -0.035278 scale -start_ol -2112 2560 moveto -2112 2176 lineto -1932 2272 1738 2320 conicto -1544 2368 1336 2368 conicto -1020 2368 862 2269 conicto -704 2170 704 1972 conicto -704 1821 814 1735 conicto -925 1649 1260 1571 conicto -1403 1538 lineto -1857 1438 2048 1255 conicto -2240 1072 2240 744 conicto -2240 371 1954 153 conicto -1668 -64 1167 -64 conicto -958 -64 732 -16 conicto -506 32 256 128 conicto -256 576 lineto -491 448 719 384 conicto -947 320 1170 320 conicto -1470 320 1631 425 conicto -1792 531 1792 722 conicto -1792 900 1678 994 conicto -1564 1089 1177 1177 conicto -1032 1212 lineto -621 1298 438 1476 conicto -256 1654 256 1964 conicto -256 2341 520 2546 conicto -784 2752 1269 2752 conicto -1509 2752 1721 2704 conicto -1933 2656 2112 2560 conicto -end_ol grestore -gsave 12.919723 30.605400 translate 0.035278 -0.035278 scale -start_ol -end_ol grestore -gsave 13.122030 30.605400 translate 0.035278 -0.035278 scale -start_ol -2549 2204 moveto -2714 2485 2942 2618 conicto -3171 2752 3482 2752 conicto -3899 2752 4125 2464 conicto -4352 2177 4352 1646 conicto -4352 0 lineto -3904 0 lineto -3904 1632 lineto -3904 2006 3769 2187 conicto -3634 2368 3356 2368 conicto -3017 2368 2820 2146 conicto -2624 1925 2624 1542 conicto -2624 0 lineto -2176 0 lineto -2176 1632 lineto -2176 2008 2041 2188 conicto -1906 2368 1624 2368 conicto -1289 2368 1092 2145 conicto -896 1922 896 1542 conicto +448 2688 moveto +896 2688 lineto 896 0 lineto 448 0 lineto 448 2688 lineto -896 2688 lineto -896 2304 lineto -1046 2534 1255 2643 conicto -1465 2752 1753 2752 conicto -2044 2752 2247 2611 conicto -2451 2471 2549 2204 conicto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto end_ol grestore -gsave 13.743941 30.605400 translate 0.035278 -0.035278 scale -start_ol -1473 2368 moveto -1117 2368 910 2094 conicto -704 1820 704 1344 conicto -704 868 909 594 conicto -1115 320 1473 320 conicto -1827 320 2033 595 conicto -2240 870 2240 1344 conicto -2240 1816 2033 2092 conicto -1827 2368 1473 2368 conicto -1472 2752 moveto -2040 2752 2364 2378 conicto -2688 2005 2688 1344 conicto -2688 685 2364 310 conicto -2040 -64 1472 -64 conicto -902 -64 579 310 conicto -256 685 256 1344 conicto -256 2005 579 2378 conicto -902 2752 1472 2752 conicto -end_ol grestore -gsave 14.136070 30.605400 translate 0.035278 -0.035278 scale +gsave 14.433063 26.405400 translate 0.035278 -0.035278 scale start_ol 1984 2304 moveto 1912 2337 1828 2352 conicto @@ -2170,7 +2058,7 @@ start_ol 1917 2752 1982 2752 conicto 1984 2304 lineto end_ol grestore -gsave 14.383332 30.605400 translate 0.035278 -0.035278 scale +gsave 14.680324 26.405400 translate 0.035278 -0.035278 scale start_ol 2752 1480 moveto 2752 1280 lineto @@ -2195,6 +2083,259 @@ start_ol 753 1964 719 1597 conicto 2304 1600 lineto end_ol grestore +gsave 15.074950 26.405400 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 15.427119 26.405400 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 15.676886 26.405400 translate 0.035278 -0.035278 scale +start_ol +end_ol grestore +gsave 15.879193 26.405400 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 16.231361 26.405400 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 16.623490 26.405400 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 17.028104 26.405400 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 17.432718 26.405400 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 17.827344 26.405400 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 18.179513 26.405400 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 18.429280 26.405400 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 18.606609 26.405400 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 18.998738 26.405400 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore 0.100000 slw [] 0 sd [] 0 sd @@ -2205,14 +2346,14 @@ end_ol grestore 0 slj [] 0 sd 1.000000 1.000000 1.000000 srgb -n 28.899900 33.046467 m 29.299900 32.771467 29.499900 32.679800 29.899900 32.679800 c 30.299900 32.679800 30.499900 32.771467 30.899900 33.046467 c 30.899900 34.513133 l 30.499900 34.788133 30.299900 34.879800 29.899900 34.879800 c 29.499900 34.879800 29.299900 34.788133 28.899900 34.513133 c 28.899900 33.046467 l ef +n 28.899900 26.496467 m 29.299900 26.221467 29.499900 26.129800 29.899900 26.129800 c 30.299900 26.129800 30.499900 26.221467 30.899900 26.496467 c 30.899900 27.963133 l 30.499900 28.238133 30.299900 28.329800 29.899900 28.329800 c 29.499900 28.329800 29.299900 28.238133 28.899900 27.963133 c 28.899900 26.496467 l ef 0.000000 0.000000 0.000000 srgb -n 28.899900 33.046467 m 29.299900 32.771467 29.499900 32.679800 29.899900 32.679800 c 30.299900 32.679800 30.499900 32.771467 30.899900 33.046467 c 30.899900 34.513133 l 30.499900 34.788133 30.299900 34.879800 29.899900 34.879800 c 29.499900 34.879800 29.299900 34.788133 28.899900 34.513133 c 28.899900 33.046467 l s +n 28.899900 26.496467 m 29.299900 26.221467 29.499900 26.129800 29.899900 26.129800 c 30.299900 26.129800 30.499900 26.221467 30.899900 26.496467 c 30.899900 27.963133 l 30.499900 28.238133 30.299900 28.329800 29.899900 28.329800 c 29.499900 28.329800 29.299900 28.238133 28.899900 27.963133 c 28.899900 26.496467 l s 0 slc 0 slj [] 0 sd -n 28.899900 33.046467 m 29.299900 33.321467 29.499900 33.413133 29.899900 33.413133 c 30.299900 33.413133 30.499900 33.321467 30.899900 33.046467 c s -gsave 29.052400 34.163133 translate 0.035278 -0.035278 scale +n 28.899900 26.496467 m 29.299900 26.771467 29.499900 26.863133 29.899900 26.863133 c 30.299900 26.863133 30.499900 26.771467 30.899900 26.496467 c s +gsave 29.052400 27.613133 translate 0.035278 -0.035278 scale start_ol 2624 3392 moveto 2624 2944 lineto @@ -2244,7 +2385,7 @@ start_ol 1828 3584 2089 3536 conicto 2351 3488 2624 3392 conicto end_ol grestore -gsave 29.459519 34.163133 translate 0.035278 -0.035278 scale +gsave 29.459519 27.613133 translate 0.035278 -0.035278 scale start_ol 896 3456 moveto 896 2688 lineto @@ -2266,7 +2407,7 @@ start_ol 448 3456 lineto 896 3456 lineto end_ol grestore -gsave 29.709286 34.163133 translate 0.035278 -0.035278 scale +gsave 29.709286 27.613133 translate 0.035278 -0.035278 scale start_ol 1622 1344 moveto 1104 1344 904 1225 conicto @@ -2299,7 +2440,7 @@ start_ol 1927 2752 2211 2444 conicto 2496 2137 2496 1513 conicto end_ol grestore -gsave 30.101415 34.163133 translate 0.035278 -0.035278 scale +gsave 30.101415 27.613133 translate 0.035278 -0.035278 scale start_ol 896 3456 moveto 896 2688 lineto @@ -2321,7 +2462,7 @@ start_ol 448 3456 lineto 896 3456 lineto end_ol grestore -gsave 30.351182 34.163133 translate 0.035278 -0.035278 scale +gsave 30.351182 27.613133 translate 0.035278 -0.035278 scale start_ol 2752 1480 moveto 2752 1280 lineto @@ -2349,13 +2490,13 @@ end_ol grestore 0.100000 slw [] 0 sd 1.000000 1.000000 1.000000 srgb -n 32.930500 32.850500 m 33.430500 32.350500 l 36.685500 32.350500 l 36.685500 34.221211 l 36.185500 34.721211 l 32.930500 34.721211 l 32.930500 32.850500 l ef +n 32.930500 26.300500 m 33.430500 25.800500 l 36.685500 25.800500 l 36.685500 27.671211 l 36.185500 28.171211 l 32.930500 28.171211 l 32.930500 26.300500 l ef 0.000000 0.000000 0.000000 srgb -n 32.930500 32.850500 m 33.430500 32.350500 l 36.685500 32.350500 l 36.685500 34.221211 l 36.185500 34.721211 l 32.930500 34.721211 l 32.930500 32.850500 l cp s -n 32.930500 32.850500 m 36.185500 32.850500 l s -n 36.185500 32.850500 m 36.685500 32.350500 l s -n 36.185500 32.850500 m 36.185500 34.721211 l s -gsave 33.430500 33.945500 translate 0.035278 -0.035278 scale +n 32.930500 26.300500 m 33.430500 25.800500 l 36.685500 25.800500 l 36.685500 27.671211 l 36.185500 28.171211 l 32.930500 28.171211 l 32.930500 26.300500 l cp s +n 32.930500 26.300500 m 36.185500 26.300500 l s +n 36.185500 26.300500 m 36.685500 25.800500 l s +n 36.185500 26.300500 m 36.185500 28.171211 l s +gsave 33.430500 27.395500 translate 0.035278 -0.035278 scale start_ol 448 3520 moveto 1202 3520 lineto @@ -2372,7 +2513,7 @@ start_ol 448 0 lineto 448 3520 lineto end_ol grestore -gsave 33.982479 33.945500 translate 0.035278 -0.035278 scale +gsave 33.982479 27.395500 translate 0.035278 -0.035278 scale start_ol 2688 1646 moveto 2688 0 lineto @@ -2392,7 +2533,7 @@ start_ol 2217 2752 2452 2471 conicto 2688 2191 2688 1646 conicto end_ol grestore -gsave 34.387093 33.945500 translate 0.035278 -0.035278 scale +gsave 34.387093 27.395500 translate 0.035278 -0.035278 scale start_ol 2752 1480 moveto 2752 1280 lineto @@ -2417,7 +2558,7 @@ start_ol 753 1964 719 1597 conicto 2304 1600 lineto end_ol grestore -gsave 34.781719 33.945500 translate 0.035278 -0.035278 scale +gsave 34.781719 27.395500 translate 0.035278 -0.035278 scale start_ol 2112 2560 moveto 2112 2176 lineto @@ -2449,7 +2590,7 @@ start_ol 1509 2752 1721 2704 conicto 1933 2656 2112 2560 conicto end_ol grestore -gsave 35.113903 33.945500 translate 0.035278 -0.035278 scale +gsave 35.113903 27.395500 translate 0.035278 -0.035278 scale start_ol 448 2688 moveto 896 2688 lineto @@ -2462,7 +2603,7 @@ start_ol 448 3136 lineto 448 3712 lineto end_ol grestore -gsave 35.291232 33.945500 translate 0.035278 -0.035278 scale +gsave 35.291232 27.395500 translate 0.035278 -0.035278 scale start_ol 1622 1344 moveto 1104 1344 904 1225 conicto @@ -2496,35 +2637,35 @@ start_ol 2496 2137 2496 1513 conicto end_ol grestore 0.050000 slw -n 33.430500 34.098000 m 35.685500 34.098000 l s +n 33.430500 27.548000 m 35.685500 27.548000 l s 0.100000 slw [] 0 sd [] 0 sd 0 slc -n 26.447958 33.760391 m 28.363186 33.771159 l s +n 26.447958 27.210391 m 28.363186 27.221159 l s [] 0 sd 0 slj 0 slc -n 28.738180 33.773268 m 28.236782 34.020453 l 28.363186 33.771159 l 28.239593 33.520461 l ef -n 28.738180 33.773268 m 28.236782 34.020453 l 28.363186 33.771159 l 28.239593 33.520461 l cp s +n 28.738180 27.223268 m 28.236782 27.470453 l 28.363186 27.221159 l 28.239593 26.970461 l ef +n 28.738180 27.223268 m 28.236782 27.470453 l 28.363186 27.221159 l 28.239593 26.970461 l cp s 0.100000 slw [] 0 sd [] 0 sd 0 slc -n 30.948427 33.781163 m 32.393496 33.783042 l s +n 30.948427 27.231163 m 32.393496 27.233042 l s [] 0 sd 0 slj 0 slc -n 32.768496 33.783529 m 32.268171 34.032879 l 32.393496 33.783042 l 32.268821 33.532879 l ef -n 32.768496 33.783529 m 32.268171 34.032879 l 32.393496 33.783042 l 32.268821 33.532879 l cp s +n 32.768496 27.233529 m 32.268171 27.482879 l 32.393496 27.233042 l 32.268821 26.982879 l ef +n 32.768496 27.233529 m 32.268171 27.482879 l 32.393496 27.233042 l 32.268821 26.982879 l cp s 0.541176 0.949020 0.352941 srgb -n 18.200000 36.418500 m 18.200000 44.018500 l 31.750000 44.018500 l 31.750000 36.418500 l f +n 18.200000 29.868500 m 18.200000 37.468500 l 31.750000 37.468500 l 31.750000 29.868500 l f 0.100000 slw [0.200000] 0 sd [0.200000] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb -n 18.200000 36.418500 m 18.200000 44.018500 l 31.750000 44.018500 l 31.750000 36.418500 l cp s +n 18.200000 29.868500 m 18.200000 37.468500 l 31.750000 37.468500 l 31.750000 29.868500 l cp s 0.100000 slw [] 0 sd [] 0 sd @@ -2535,10 +2676,10 @@ n 18.200000 36.418500 m 18.200000 44.018500 l 31.750000 44.018500 l 31.750000 36 0 slj [] 0 sd 0.000000 0.000000 1.000000 srgb -n 23.396100 38.666900 m 26.591100 38.666900 l 26.591100 40.266900 l 24.993600 40.666900 l 23.396100 40.266900 l 23.396100 38.666900 l ef +n 23.396100 32.116900 m 26.591100 32.116900 l 26.591100 33.716900 l 24.993600 34.116900 l 23.396100 33.716900 l 23.396100 32.116900 l ef 0.000000 0.000000 0.000000 srgb -n 23.396100 38.666900 m 26.591100 38.666900 l 26.591100 40.266900 l 24.993600 40.666900 l 23.396100 40.266900 l 23.396100 38.666900 l s -gsave 23.546100 39.666900 translate 0.035278 -0.035278 scale +n 23.396100 32.116900 m 26.591100 32.116900 l 26.591100 33.716900 l 24.993600 34.116900 l 23.396100 33.716900 l 23.396100 32.116900 l s +gsave 23.546100 33.116900 translate 0.035278 -0.035278 scale start_ol 2816 504 moveto 2816 1472 lineto @@ -2564,7 +2705,7 @@ start_ol 2276 320 2469 365 conicto 2662 410 2816 504 conicto end_ol grestore -gsave 24.040631 39.666900 translate 0.035278 -0.035278 scale +gsave 24.040631 33.116900 translate 0.035278 -0.035278 scale start_ol 1622 1344 moveto 1104 1344 904 1225 conicto @@ -2597,7 +2738,7 @@ start_ol 1927 2752 2211 2444 conicto 2496 2137 2496 1513 conicto end_ol grestore -gsave 24.432760 39.666900 translate 0.035278 -0.035278 scale +gsave 24.432760 33.116900 translate 0.035278 -0.035278 scale start_ol 2549 2204 moveto 2714 2485 2942 2618 conicto @@ -2628,7 +2769,7 @@ start_ol 2044 2752 2247 2611 conicto 2451 2471 2549 2204 conicto end_ol grestore -gsave 25.054671 39.666900 translate 0.035278 -0.035278 scale +gsave 25.054671 33.116900 translate 0.035278 -0.035278 scale start_ol 2752 1480 moveto 2752 1280 lineto @@ -2653,7 +2794,7 @@ start_ol 753 1964 719 1597 conicto 2304 1600 lineto end_ol grestore -gsave 25.449298 39.666900 translate 0.035278 -0.035278 scale +gsave 25.449298 33.116900 translate 0.035278 -0.035278 scale start_ol 1424 0 moveto 64 3520 lineto @@ -2664,7 +2805,7 @@ start_ol 1970 0 lineto 1424 0 lineto end_ol grestore -gsave 25.886389 39.666900 translate 0.035278 -0.035278 scale +gsave 25.886389 33.116900 translate 0.035278 -0.035278 scale start_ol 448 3520 moveto 1202 3520 lineto @@ -2685,18 +2826,18 @@ end_ol grestore [] 0 sd [] 0 sd 0 slc -n 25.015859 35.713496 m 25.002252 38.130218 l s +n 25.002240 31.579977 m 25.015825 29.163489 l s [] 0 sd 0 slj 0 slc -n 25.017971 35.338502 m 25.265151 35.839901 l 25.015859 35.713496 l 24.765159 35.837086 l ef -n 25.017971 35.338502 m 25.265151 35.839901 l 25.015859 35.713496 l 24.765159 35.837086 l cp s +n 25.000132 31.954971 m 24.752947 31.453574 l 25.002240 31.579977 l 25.252939 31.456385 l ef +n 25.000132 31.954971 m 24.752947 31.453574 l 25.002240 31.579977 l 25.252939 31.456385 l cp s [] 0 sd 0 slj 0 slc -n 25.000141 38.505212 m 24.752960 38.003813 l 25.002252 38.130218 l 25.252952 38.006628 l ef -n 25.000141 38.505212 m 24.752960 38.003813 l 25.002252 38.130218 l 25.252952 38.006628 l cp s -gsave 20.500000 42.468500 translate 0.035278 -0.035278 scale +n 25.017933 28.788495 m 25.265119 29.289892 l 25.015825 29.163489 l 24.765126 29.287081 l ef +n 25.017933 28.788495 m 25.265119 29.289892 l 25.015825 29.163489 l 24.765126 29.287081 l cp s +gsave 20.500000 35.918500 translate 0.035278 -0.035278 scale start_ol 1152 3840 moveto 1152 2176 lineto @@ -2717,7 +2858,7 @@ start_ol 576 0 lineto 576 4288 lineto end_ol grestore -gsave 20.949577 42.468500 translate 0.035278 -0.035278 scale +gsave 20.949577 35.918500 translate 0.035278 -0.035278 scale start_ol 512 3200 moveto 1024 3200 lineto @@ -2730,7 +2871,7 @@ start_ol 512 3840 lineto 512 4480 lineto end_ol grestore -gsave 21.164369 42.468500 translate 0.035278 -0.035278 scale +gsave 21.164369 35.918500 translate 0.035278 -0.035278 scale start_ol 2688 2688 moveto 2688 4480 lineto @@ -2756,10 +2897,10 @@ start_ol 1373 2816 1134 2492 conicto 896 2169 896 1600 conicto end_ol grestore -gsave 21.656403 42.468500 translate 0.035278 -0.035278 scale +gsave 21.656403 35.918500 translate 0.035278 -0.035278 scale start_ol end_ol grestore -gsave 21.903664 42.468500 translate 0.035278 -0.035278 scale +gsave 21.903664 35.918500 translate 0.035278 -0.035278 scale start_ol 4352 2935 moveto 1364 1885 lineto @@ -2770,7 +2911,7 @@ start_ol 4352 3456 lineto 4352 2935 lineto end_ol grestore -gsave 22.553051 42.468500 translate 0.035278 -0.035278 scale +gsave 22.553051 35.918500 translate 0.035278 -0.035278 scale start_ol 320 1856 moveto 1856 1856 lineto @@ -2778,7 +2919,7 @@ start_ol 320 1408 lineto 320 1856 lineto end_ol grestore -gsave 22.832782 42.468500 translate 0.035278 -0.035278 scale +gsave 22.832782 35.918500 translate 0.035278 -0.035278 scale start_ol 640 2935 moveto 640 3456 lineto @@ -2789,10 +2930,10 @@ start_ol 3622 1885 lineto 640 2935 lineto end_ol grestore -gsave 23.482168 42.468500 translate 0.035278 -0.035278 scale +gsave 23.482168 35.918500 translate 0.035278 -0.035278 scale start_ol end_ol grestore -gsave 23.729430 42.468500 translate 0.035278 -0.035278 scale +gsave 23.729430 35.918500 translate 0.035278 -0.035278 scale start_ol 512 4288 moveto 1088 4288 lineto @@ -2810,7 +2951,7 @@ start_ol 512 781 512 1609 conicto 512 4288 lineto end_ol grestore -gsave 24.296399 42.468500 translate 0.035278 -0.035278 scale +gsave 24.296399 35.918500 translate 0.035278 -0.035278 scale start_ol 512 4288 moveto 1088 4288 lineto @@ -2828,7 +2969,7 @@ start_ol 512 781 512 1609 conicto 512 4288 lineto end_ol grestore -gsave 24.863368 42.468500 translate 0.035278 -0.035278 scale +gsave 24.863368 35.918500 translate 0.035278 -0.035278 scale start_ol 576 4288 moveto 1152 4288 lineto @@ -2836,7 +2977,7 @@ start_ol 576 0 lineto 576 4288 lineto end_ol grestore -gsave 25.090653 42.468500 translate 0.035278 -0.035278 scale +gsave 25.090653 35.918500 translate 0.035278 -0.035278 scale start_ol 1152 3840 moveto 1152 448 lineto @@ -2855,10 +2996,10 @@ start_ol 576 0 lineto 576 4288 lineto end_ol grestore -gsave 25.687594 42.468500 translate 0.035278 -0.035278 scale +gsave 25.687594 35.918500 translate 0.035278 -0.035278 scale start_ol end_ol grestore -gsave 25.934856 42.468500 translate 0.035278 -0.035278 scale +gsave 25.934856 35.918500 translate 0.035278 -0.035278 scale start_ol 2307 3904 moveto 1659 3904 1277 3431 conicto @@ -2884,7 +3025,7 @@ start_ol 4288 1397 3993 868 conicto 3699 340 3141 89 conicto end_ol grestore -gsave 26.544282 42.468500 translate 0.035278 -0.035278 scale +gsave 26.544282 35.918500 translate 0.035278 -0.035278 scale start_ol 512 1278 moveto 512 3200 lineto @@ -2906,7 +3047,7 @@ start_ol 1839 3264 moveto 1839 3264 lineto end_ol grestore -gsave 27.036316 42.468500 translate 0.035278 -0.035278 scale +gsave 27.036316 35.918500 translate 0.035278 -0.035278 scale start_ol 2013 1664 moveto 1346 1664 1089 1515 conicto @@ -2939,7 +3080,7 @@ start_ol 2379 3264 2725 2917 conicto 3072 2571 3072 1867 conicto end_ol grestore -gsave 27.510871 42.468500 translate 0.035278 -0.035278 scale +gsave 27.510871 35.918500 translate 0.035278 -0.035278 scale start_ol 2368 2752 moveto 2280 2785 2175 2800 conicto @@ -2957,7 +3098,7 @@ start_ol 2285 3264 2365 3264 conicto 2368 2752 lineto end_ol grestore -gsave 27.830571 42.468500 translate 0.035278 -0.035278 scale +gsave 27.830571 35.918500 translate 0.035278 -0.035278 scale start_ol 2013 1664 moveto 1346 1664 1089 1515 conicto @@ -2990,7 +3131,7 @@ start_ol 2379 3264 2725 2917 conicto 3072 2571 3072 1867 conicto end_ol grestore -gsave 28.305126 42.468500 translate 0.035278 -0.035278 scale +gsave 28.305126 35.918500 translate 0.035278 -0.035278 scale start_ol 3200 1921 moveto 3200 0 lineto @@ -3010,7 +3151,7 @@ start_ol 2628 3264 2914 2923 conicto 3200 2583 3200 1921 conicto end_ol grestore -gsave 28.797160 42.468500 translate 0.035278 -0.035278 scale +gsave 28.797160 35.918500 translate 0.035278 -0.035278 scale start_ol 1024 4096 moveto 1024 3200 lineto @@ -3032,7 +3173,7 @@ start_ol 512 4096 lineto 1024 4096 lineto end_ol grestore -gsave 29.101869 42.468500 translate 0.035278 -0.035278 scale +gsave 29.101869 35.918500 translate 0.035278 -0.035278 scale start_ol 512 3200 moveto 1024 3200 lineto @@ -3045,7 +3186,7 @@ start_ol 512 3840 lineto 512 4480 lineto end_ol grestore -gsave 29.316661 42.468500 translate 0.035278 -0.035278 scale +gsave 29.316661 35.918500 translate 0.035278 -0.035278 scale start_ol 3200 1921 moveto 3200 0 lineto @@ -3065,7 +3206,7 @@ start_ol 2628 3264 2914 2923 conicto 3200 2583 3200 1921 conicto end_ol grestore -gsave 29.808695 42.468500 translate 0.035278 -0.035278 scale +gsave 29.808695 35.918500 translate 0.035278 -0.035278 scale start_ol 3328 1712 moveto 3328 1472 lineto @@ -3090,4 +3231,336 @@ start_ol 954 2311 913 1853 conicto 2816 1856 lineto end_ol grestore +1.000000 1.000000 1.000000 srgb +n 7.032500 16.650000 m 7.032500 18.550000 l 12.967500 18.550000 l 12.967500 16.650000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 7.032500 16.650000 m 7.032500 18.550000 l 12.967500 18.550000 l 12.967500 16.650000 l cp s +gsave 7.582500 17.795000 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 1792 lineto +1552 1792 lineto +1881 1792 2060 1967 conicto +2240 2142 2240 2465 conicto +2240 2786 2060 2961 conicto +1881 3136 1552 3136 conicto +960 3136 lineto +448 3520 moveto +1552 3520 lineto +2145 3520 2448 3251 conicto +2752 2983 2752 2465 conicto +2752 1943 2448 1675 conicto +2145 1408 1552 1408 conicto +960 1408 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 7.957150 17.795000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 8.204411 17.795000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 8.596540 17.795000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 8.846307 17.795000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 9.238436 17.795000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 9.590605 17.795000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 9.982734 17.795000 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 10.160063 17.795000 translate 0.035278 -0.035278 scale +start_ol +end_ol grestore +gsave 10.362370 17.795000 translate 0.035278 -0.035278 scale +start_ol +896 384 moveto +896 -1024 lineto +448 -1024 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +end_ol grestore +gsave 10.769489 17.795000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 11.161618 17.795000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 11.423870 17.795000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 11.756054 17.795000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 12.150680 17.795000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +0.100000 slw +[] 0 sd +[] 0 sd +0 slc +n 11.396772 18.936367 m 12.590135 20.078122 l s +[] 0 sd +0 slj +0 slc +n 11.125813 18.677126 m 11.659920 18.842142 l 11.396772 18.936367 l 11.314265 19.203421 l ef +n 11.125813 18.677126 m 11.659920 18.842142 l 11.396772 18.936367 l 11.314265 19.203421 l cp s +[] 0 sd +0 slj +0 slc +n 12.861094 20.337363 m 12.326988 20.172347 l 12.590135 20.078122 l 12.672643 19.811068 l ef +n 12.861094 20.337363 m 12.326988 20.172347 l 12.590135 20.078122 l 12.672643 19.811068 l cp s showpage diff --git a/graphics/theory_layout.dia b/graphics/theory_layout.dia new file mode 100644 index 0000000..ebadfd4 Binary files /dev/null and b/graphics/theory_layout.dia differ diff --git a/graphics/theory_layout.eps b/graphics/theory_layout.eps new file mode 100644 index 0000000..bc396bd --- /dev/null +++ b/graphics/theory_layout.eps @@ -0,0 +1,1070 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: /home/jonte/GGS/doc/report/graphics/theory_layout.dia +%%Creator: Dia v0.97.1 +%%CreationDate: Tue Apr 26 20:29:24 2011 +%%For: jonte +%%Orientation: Portrait +%%Magnification: 1.0000 +%%BoundingBox: 0 0 766 511 +%%BeginSetup +%%EndSetup +%%EndComments +%%BeginProlog +[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E +/F /G /H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W /X /Y +/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c +/d /e /f /g /h /i /j /k /l /m +/n /o /p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright +/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior +/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf +/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde +/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex +/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring +/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def +/cp {closepath} bind def +/c {curveto} bind def +/f {fill} bind def +/a {arc} bind def +/ef {eofill} bind def +/ex {exch} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth pop} bind def +/tr {translate} bind def + +/ellipsedict 8 dict def +ellipsedict /mtrx matrix put +/ellipse +{ ellipsedict begin + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def /savematrix mtrx currentmatrix def + x y tr xrad yrad sc + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} def + +/mergeprocs { +dup length +3 -1 roll +dup +length +dup +5 1 roll +3 -1 roll +add +array cvx +dup +3 -1 roll +0 exch +putinterval +dup +4 2 roll +putinterval +} bind def +/dpi_x 300 def +/dpi_y 300 def +/conicto { + /to_y exch def + /to_x exch def + /conic_cntrl_y exch def + /conic_cntrl_x exch def + currentpoint + /p0_y exch def + /p0_x exch def + /p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def + /p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def + /p2_x p1_x to_x p0_x sub 1 3 div mul add def + /p2_y p1_y to_y p0_y sub 1 3 div mul add def + p1_x p1_y p2_x p2_y to_x to_y curveto +} bind def +/start_ol { gsave 1.1 dpi_x div dup scale} bind def +/end_ol { closepath fill grestore } bind def +28.346000 -28.346000 scale +-3.541250 -24.700000 translate +%%EndProlog + + +1.000000 1.000000 1.000000 srgb +n 4.550000 6.750000 m 4.550000 24.650000 l 30.500000 24.650000 l 30.500000 6.750000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 4.550000 6.750000 m 4.550000 24.650000 l 30.500000 24.650000 l 30.500000 6.750000 l cp s +1.000000 1.000000 1.000000 srgb +n 24.696636 11.623318 1.803364 1.676682 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 24.696636 11.623318 1.803364 1.676682 0 360 ellipse cp s +gsave 23.867886 11.818318 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +3008 3520 lineto +3008 3136 lineto +1728 3136 lineto +1728 0 lineto +1216 0 lineto +1216 3136 lineto +-64 3136 lineto +-64 3520 lineto +end_ol grestore +gsave 24.152619 11.818318 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 24.544748 11.818318 translate 0.035278 -0.035278 scale +start_ol +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +896 2304 moveto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +896 0 lineto +448 0 lineto +448 3712 lineto +896 3712 lineto +896 2304 lineto +end_ol grestore +gsave 24.951867 11.818318 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 25.129196 11.818318 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +0.564706 0.933333 0.564706 srgb +n 24.696636 13.926194 0.603709 0.523806 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 24.696636 13.926194 0.603709 0.523806 0 360 ellipse cp s +gsave 24.504136 14.121194 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 1792 lineto +1552 1792 lineto +1881 1792 2060 1967 conicto +2240 2142 2240 2465 conicto +2240 2786 2060 2961 conicto +1881 3136 1552 3136 conicto +960 3136 lineto +448 3520 moveto +1552 3520 lineto +2145 3520 2448 3251 conicto +2752 2983 2752 2465 conicto +2752 1943 2448 1675 conicto +2145 1408 1552 1408 conicto +960 1408 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +0.564706 0.933333 0.564706 srgb +n 24.696636 9.253806 0.603709 0.523806 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 24.696636 9.253806 0.603709 0.523806 0 360 ellipse cp s +gsave 24.504136 9.448806 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 1792 lineto +1552 1792 lineto +1881 1792 2060 1967 conicto +2240 2142 2240 2465 conicto +2240 2786 2060 2961 conicto +1881 3136 1552 3136 conicto +960 3136 lineto +448 3520 moveto +1552 3520 lineto +2145 3520 2448 3251 conicto +2752 2983 2752 2465 conicto +2752 1943 2448 1675 conicto +2145 1408 1552 1408 conicto +960 1408 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +1.000000 1.000000 1.000000 srgb +n 23.018364 20.073318 1.803364 1.676682 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 23.018364 20.073318 1.803364 1.676682 0 360 ellipse cp s +gsave 22.189614 20.268318 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +3008 3520 lineto +3008 3136 lineto +1728 3136 lineto +1728 0 lineto +1216 0 lineto +1216 3136 lineto +-64 3136 lineto +-64 3520 lineto +end_ol grestore +gsave 22.474347 20.268318 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 22.866476 20.268318 translate 0.035278 -0.035278 scale +start_ol +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +896 2304 moveto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +896 0 lineto +448 0 lineto +448 3712 lineto +896 3712 lineto +896 2304 lineto +end_ol grestore +gsave 23.273595 20.268318 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 23.450924 20.268318 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +0.564706 0.933333 0.564706 srgb +n 23.018364 22.376194 0.603709 0.523806 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 23.018364 22.376194 0.603709 0.523806 0 360 ellipse cp s +gsave 22.825864 22.571194 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 1792 lineto +1552 1792 lineto +1881 1792 2060 1967 conicto +2240 2142 2240 2465 conicto +2240 2786 2060 2961 conicto +1881 3136 1552 3136 conicto +960 3136 lineto +448 3520 moveto +1552 3520 lineto +2145 3520 2448 3251 conicto +2752 2983 2752 2465 conicto +2752 1943 2448 1675 conicto +2145 1408 1552 1408 conicto +960 1408 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +0.564706 0.933333 0.564706 srgb +n 23.018364 17.703806 0.603709 0.523806 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 23.018364 17.703806 0.603709 0.523806 0 360 ellipse cp s +gsave 22.825864 17.898806 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 1792 lineto +1552 1792 lineto +1881 1792 2060 1967 conicto +2240 2142 2240 2465 conicto +2240 2786 2060 2961 conicto +1881 3136 1552 3136 conicto +960 3136 lineto +448 3520 moveto +1552 3520 lineto +2145 3520 2448 3251 conicto +2752 2983 2752 2465 conicto +2752 1943 2448 1675 conicto +2145 1408 1552 1408 conicto +960 1408 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +1.000000 1.000000 1.000000 srgb +n 14.383364 15.303318 1.803364 1.676682 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 14.383364 15.303318 1.803364 1.676682 0 360 ellipse cp s +gsave 13.554614 15.498318 translate 0.035278 -0.035278 scale +start_ol +-64 3520 moveto +3008 3520 lineto +3008 3136 lineto +1728 3136 lineto +1728 0 lineto +1216 0 lineto +1216 3136 lineto +-64 3136 lineto +-64 3520 lineto +end_ol grestore +gsave 13.839347 15.498318 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 14.231476 15.498318 translate 0.035278 -0.035278 scale +start_ol +2368 1344 moveto +2368 1823 2171 2095 conicto +1975 2368 1632 2368 conicto +1289 2368 1092 2095 conicto +896 1823 896 1344 conicto +896 865 1092 592 conicto +1289 320 1632 320 conicto +1975 320 2171 592 conicto +2368 865 2368 1344 conicto +896 2304 moveto +1032 2531 1240 2641 conicto +1448 2752 1737 2752 conicto +2217 2752 2516 2364 conicto +2816 1976 2816 1344 conicto +2816 712 2516 324 conicto +2217 -64 1737 -64 conicto +1448 -64 1240 46 conicto +1032 157 896 384 conicto +896 0 lineto +448 0 lineto +448 3712 lineto +896 3712 lineto +896 2304 lineto +end_ol grestore +gsave 14.638595 15.498318 translate 0.035278 -0.035278 scale +start_ol +448 3712 moveto +896 3712 lineto +896 0 lineto +448 0 lineto +448 3712 lineto +end_ol grestore +gsave 14.815924 15.498318 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +0.564706 0.933333 0.564706 srgb +n 14.383364 17.606194 0.603709 0.523806 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 14.383364 17.606194 0.603709 0.523806 0 360 ellipse cp s +gsave 14.190864 17.801194 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 1792 lineto +1552 1792 lineto +1881 1792 2060 1967 conicto +2240 2142 2240 2465 conicto +2240 2786 2060 2961 conicto +1881 3136 1552 3136 conicto +960 3136 lineto +448 3520 moveto +1552 3520 lineto +2145 3520 2448 3251 conicto +2752 2983 2752 2465 conicto +2752 1943 2448 1675 conicto +2145 1408 1552 1408 conicto +960 1408 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +0.564706 0.933333 0.564706 srgb +n 14.383364 12.933806 0.603709 0.523806 0 360 ellipse f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 14.383364 12.933806 0.603709 0.523806 0 360 ellipse cp s +gsave 14.190864 13.128806 translate 0.035278 -0.035278 scale +start_ol +960 3136 moveto +960 1792 lineto +1552 1792 lineto +1881 1792 2060 1967 conicto +2240 2142 2240 2465 conicto +2240 2786 2060 2961 conicto +1881 3136 1552 3136 conicto +960 3136 lineto +448 3520 moveto +1552 3520 lineto +2145 3520 2448 3251 conicto +2752 2983 2752 2465 conicto +2752 1943 2448 1675 conicto +2145 1408 1552 1408 conicto +960 1408 lineto +960 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +0.117647 0.564706 1.000000 srgb +n 20.155464 13.596004 m 22.957839 15.051994 l 20.155464 16.507984 l 17.353090 15.051994 l ef +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 20.155464 13.596004 m 22.957839 15.051994 l 20.155464 16.507984 l 17.353090 15.051994 l cp s +gsave 18.269214 15.246994 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +gsave 18.716294 15.246994 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 19.108423 15.246994 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 19.500552 15.246994 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 19.752816 15.246994 translate 0.035278 -0.035278 scale +start_ol +2176 2304 moveto +2176 3712 lineto +2624 3712 lineto +2624 0 lineto +2176 0 lineto +2176 384 lineto +2040 157 1832 46 conicto +1624 -64 1332 -64 conicto +855 -64 555 324 conicto +256 712 256 1344 conicto +256 1976 555 2364 conicto +855 2752 1332 2752 conicto +1624 2752 1832 2641 conicto +2040 2531 2176 2304 conicto +704 1344 moveto +704 865 900 592 conicto +1096 320 1439 320 conicto +1782 320 1979 592 conicto +2176 865 2176 1344 conicto +2176 1823 1979 2095 conicto +1782 2368 1439 2368 conicto +1096 2368 900 2095 conicto +704 1823 704 1344 conicto +end_ol grestore +gsave 20.159935 15.246994 translate 0.035278 -0.035278 scale +start_ol +448 2688 moveto +896 2688 lineto +896 0 lineto +448 0 lineto +448 2688 lineto +448 3712 moveto +896 3712 lineto +896 3136 lineto +448 3136 lineto +448 3712 lineto +end_ol grestore +gsave 20.337264 15.246994 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 20.741878 15.246994 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 21.134007 15.246994 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 21.383774 15.246994 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 21.775903 15.246994 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +1.000000 1.000000 1.000000 srgb +n 3.591250 9.200000 m 3.591250 22.000000 l 7.558750 22.000000 l 7.558750 9.200000 l f +0.100000 slw +[] 0 sd +[] 0 sd +0 slj +0.000000 0.000000 0.000000 srgb +n 3.591250 9.200000 m 3.591250 22.000000 l 7.558750 22.000000 l 7.558750 9.200000 l cp s +gsave 4.141250 15.795000 translate 0.035278 -0.035278 scale +start_ol +448 3520 moveto +2688 3520 lineto +2688 3136 lineto +960 3136 lineto +960 2112 lineto +2624 2112 lineto +2624 1728 lineto +960 1728 lineto +960 384 lineto +2752 384 lineto +2752 0 lineto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 4.545864 15.795000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 4.950478 15.795000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +gsave 5.200245 15.795000 translate 0.035278 -0.035278 scale +start_ol +1984 2304 moveto +1912 2337 1828 2352 conicto +1744 2368 1642 2368 conicto +1282 2368 1089 2127 conicto +896 1887 896 1437 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1030 2531 1245 2641 conicto +1460 2752 1767 2752 conicto +1811 2752 1864 2752 conicto +1917 2752 1982 2752 conicto +1984 2304 lineto +end_ol grestore +gsave 5.462496 15.795000 translate 0.035278 -0.035278 scale +start_ol +1622 1344 moveto +1104 1344 904 1225 conicto +704 1106 704 818 conicto +704 589 854 454 conicto +1004 320 1262 320 conicto +1618 320 1833 572 conicto +2048 825 2048 1244 conicto +2048 1344 lineto +1622 1344 lineto +2496 1513 moveto +2496 0 lineto +2048 0 lineto +2048 384 lineto +1900 154 1679 45 conicto +1458 -64 1138 -64 conicto +733 -64 494 162 conicto +256 389 256 769 conicto +256 1213 555 1438 conicto +854 1664 1448 1664 conicto +2048 1664 lineto +2048 1712 lineto +2048 2025 1851 2196 conicto +1655 2368 1300 2368 conicto +1074 2368 860 2320 conicto +646 2272 448 2176 conicto +448 2560 lineto +687 2656 912 2704 conicto +1138 2752 1351 2752 conicto +1927 2752 2211 2444 conicto +2496 2137 2496 1513 conicto +end_ol grestore +gsave 5.854626 15.795000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 6.259240 15.795000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 6.611408 15.795000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +showpage diff --git a/report.lyx b/report.lyx index dc8d147..40acde2 100644 --- a/report.lyx +++ b/report.lyx @@ -155,7 +155,7 @@ end{textblock*} \end_layout \begin_layout Title -Generic Game Server +Reliable Generic Game Server \end_layout \begin_layout Author @@ -288,31 +288,29 @@ Introduction \end_layout \begin_layout Standard -The introduction aims to give the reader a good base to stand on when taking - on the rest of this thesis. - A background and motivation of why this topic is interesting is given, - and some basic terminoligy is defined and explained. - To understand many of the core issues in the GGS, some prior knowledge - of other topics is needed, the introduction aims to give this prior knowledge. -\end_layout +Online gaming, and computer gaming in general has become an important part + in many peoples day-to day lives. + A few years ago, computer games were not at all as popular as they are + today. + With the advances in computer graphics and computer hardware today's games + are much more sophisticated then they were in the days of +\emph on +Hack +\emph default +, +\emph on +Zork, +\emph default +or +\emph on +Pac Man. +\emph default -\begin_layout Standard -We draw some parallels to existing solutions which solve similar problems - in different sectors. - The main challenges of the project are outlined, with the solutions thereof - following later on in the paper. - Some boundaries are placed on the project, since it is not possible to - cover everything at once. - By placing these boundaries, the purpose of the GGS is further refined. -\end_layout - -\begin_layout Standard \begin_inset Note Note status open \begin_layout Plain Layout -Also cover the final topics; method (development process, etc). - As of this eriting, the contents of method are unknown. +Was it really called Zork? \end_layout \end_inset @@ -320,6 +318,151 @@ Also cover the final topics; method (development process, etc). \end_layout +\begin_layout Standard +The early computer games featured simple, or no graphics at all. + +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Drop a reference to Hack +\end_layout + +\end_inset + + The games often took place in a textual world, leaving the task of picturing + the world up to the player. + Multi-player games were not as common as they are today, whereas most games + today are expected to have a multi-player mode, most early games did not. +\end_layout + +\begin_layout Standard +Since these early games, the gaming industry have become much more influential + in many ways. + Many advanced in computer hardware are thought to come from pressure from + the computer game industry. + More powerful games require more powerful, and more easily available hardware +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Drop a reference to the gaming industry pressuring more advanced hardware +\end_layout + +\end_inset + +. + Due to the high entertainment value of modern computer games, gaming has + become a huge industry, where large amounts of money are invested. + The gaming industry is today, in some places even larger than the motion + picture industry. + +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Drop a reference to that graphic we found, about the motion picture industry + VS. + gaming industry +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Due to the increasing importance of computer gaming, more focus should be + spent on improving the quality of the gaming service. + As more and more computer games are gaining multi-player capabilities, + the demands for multiplayer networking software rises. + This thesis is about techniques for improving the quality if this networking + software. +\end_layout + +\begin_layout Standard +The reliable generic game server, hereafter known as GGS, is a computer + program designed to +\emph on +host +\emph default + network games on one or more server computers. + Hosting, in a network software setting, means allowing client software + connect to the server software, for the purpose of utilizing services provided + by the server. + The GGS software provides games as a service, and the clients connecting + to the GGS can play these games on the GGS. +\end_layout + +\begin_layout Standard +The idea of game servers is not new, network games have been played for + decades. + Early, popular examples of network games include the +\emph on +Quake +\emph default + series, or the +\emph on +Doom +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout + +\emph on +Come up w/ better game +\end_layout + +\end_inset + + +\emph default + games. + Newer examples of network games include +\emph on +World of Warcraft +\emph default +, and +\emph on +Counter-Strike +\emph default +. + The difference between the GGS and the servers for these games is that + the servers for Doom, Quake, and the others listed, were designed with + these specific games in mind. +\end_layout + +\begin_layout Standard +What GGS does is to provide a +\emph on +generic +\emph default + framework for developing network games. + The framework is generic in the sense that it is not bound to a specific + game. + There are many different types of games, some are inheritly more time sensitive + than others, strategy games are examples of games which are not very sensitive + to time delays, first-person shooters however, can be very sensitive. +\end_layout + +\begin_layout Standard +The generic nature of the GGS allows the creation of many different types + of games, the motivation behind this is to remove the neccessity of writing + new game servers when developing new games. +\end_layout + +\begin_layout Standard +The GGS is in addition to being generic, also +\emph on +reliable +\emph default + in the sense that the gaming service provided is consistant and available. + A consistant and available server is a server that handles hardware failiures + and software failiures gracefully. + In the event of a component breaking within the GGS, the error is handled + by fault recovery processes, thereby creating a more reliable system. +\end_layout + \begin_layout Section Background \end_layout @@ -327,18 +470,36 @@ Background \begin_layout Standard The game industry is a quickly growing industry where the need for new technique s is large. - One specific section where development has stalled is the game server section. + One specific section where the development has stalled is the game server + section. +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Citation needed +\end_layout + +\end_inset + The existing game servers are functional but they lack good fault tolerance - and the ability to scale well. + and the ability to scale well +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Citation needed +\end_layout + +\end_inset + +. Users will notice this in low uptime and many crashes. This is a problem that has existed and been resolved in other industries. - One good example is the telecom industry which managed to develop solutions - to similar problems. + In the telecom industry solutins to similar problems have been found. \end_layout \begin_layout Standard -A common figure often used to measure the availability in telecoms is that - of +A common figure often used in telecoms is that of \emph on the nine nines \emph default @@ -355,24 +516,30 @@ the nine nines industry would not have been accepted in the telecoms industry. This level of instability should not be accepted in the game server industry either. + An unavailabvle phone system could potentially have life threatening consequenc +es, leaving the public unable to contant emergency services. + The same can not be said about an unavailable game server. + The statement that game servers are less important than phone systems is + not a reason not to draw wisdom from what the telecoms have already learnt. \end_layout \begin_layout Standard -The main reason to develop reliable servers are monetary as it is important - for game companies to expand their customer base. +Moving back to the gaming industry. + The main reason to develop reliable servers are monetary, it is important + for game companies to expand its customer base. Reliable game servers are one improvement that will create a good image of a company. In general the downtime of game servers are much higher than the downtime of telecom system. - The structure of the system is similar and it should be possible to reuse - solutions from the telecom system to improve game servers. + The structure of the system is similar in many ways and it should be possible + to reuse solutions from the telecom system to improve game servers. + \end_layout \begin_layout Standard -In the current state game servers are coded for specific games, in many - cases this seems like a bad solution. - Developers that want to make a network game need to understand network - programming. +In the current state game servers are developed on a per-game basis, in + many cases this seems like a bad solution. + Developers of network game need to understand network programming. A way to change this is a generic game server which give the game developers a server which they implement their game towards. This approach would not only make it easier to develop network games, it @@ -380,30 +547,31 @@ In the current state game servers are coded for specific games, in many using the same server. \end_layout -\begin_layout Section -Purpose -\end_layout - \begin_layout Standard -The purpose of the GGS project is to create a +Some factors key to the development of GGS have been isolated. + Many of these come from the telecom sector. + The factors are \emph on -scalable +scalability, fault tolerance \emph default - and -\emph on -fault tolerant -\emph default - server, while still allowing the server to be as +and being \emph on generic \emph default - as possible. - These three italicised terms need some explanation. +. + These terms are defined below. \end_layout \begin_layout Standard -Scalability in computer science is a large topic and is commonly divided - into sub-fields, two of which are +Scalability (see +\begin_inset CommandInset ref +LatexCommand ref +reference "sec:Scalability" + +\end_inset + +) in computer science is a large topic and is commonly divided into sub-fields, + two of which are \emph on structural scalability \emph default @@ -427,7 +595,14 @@ key "Bondi:2000:CSI:350391.350432" \end_layout \begin_layout Standard -Fault tolerance is used to raise the level of +Fault tolerance (see +\begin_inset CommandInset ref +LatexCommand ref +reference "sec:Fault-Tolerance" + +\end_inset + +) is used to raise the level of \emph on dependability \emph default @@ -452,8 +627,15 @@ key "Gartner:1999:FFD:311531.311532" \end_layout \begin_layout Standard -A generic game server has to be able to run different client-server network - games regardless of the platform the clients are running on. +A generic (see +\begin_inset CommandInset ref +LatexCommand ref +reference "sec:Generic" + +\end_inset + +) game server has to be able to run different client-server network games + regardless of the platform the clients are running on. It runs network games of different type. A very rough separation of games is real time games and turn based games. \end_layout @@ -461,14 +643,14 @@ A generic game server has to be able to run different client-server network \begin_layout Standard The server behaves in a way similar to an application server, but is designed to help running games. - An application server provides processing ability and time; therefore, - it is different from a file- or print-server, which only serves resources + An application server provides processing ability and time, therefore it + is different from a file- or print-server, which only serves resources to the clients. \end_layout \begin_layout Standard -The most common type of application servers are web servers, where the user - run a web application within the server. +The most common type of application servers are web servers, where you run + a web application within the server. The application server provides an environment and interfaces to the outer world, in which applications run. Hooks and helpers are provided to use the resources of the server. @@ -507,10 +689,114 @@ One of the purposes of this thesis is to investigate how we can make a game server as generic as possible. Some important helpers are discussed, such as abstraction of the network layer, data store and game specific features. + +\end_layout + +\begin_layout Standard +As an aid in discussing the theoretical parts of the GGS a prototype has + been developed. + The prototype does not feature all of the characteristics described in + this thesis. + A selection has been made among the features, and the most important ones + have been implemented either full or in part in the prototype. +\end_layout + +\begin_layout Standard +The choice of implementation language for the prototype of the GGS was made + with inspiration from the telecom industry. + The Erlang language was developed by the telecom company Ericsson to develop + highly available and dependable telecom switches. + One of the most reliable systems ever developed by Ericsson, the AXD301 + was developed using Erlang. + The AXD301 is also possibly has the largest code base even written in a + functional language +\begin_inset CommandInset citation +LatexCommand citep +key "Armstrong03" + +\end_inset + +. + The same language is used to develop the prototype of the GGS. + Chapter +\begin_inset CommandInset ref +LatexCommand vref +reference "cha:Implementation-of-a" + +\end_inset + + provides a description of the prototype developed for this thesis. + +\begin_inset Note Note +status open + +\begin_layout Plain Layout +We could go on and on about erlang.. +\end_layout + +\end_inset + + \end_layout \begin_layout Section -Challenges +Purpose +\end_layout + +\begin_layout Standard +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout +The purpose of the GGS project. + What is the purpose of creating a fault tolerant server, why is it generic, + and what good does it do to have a scalable system? In the background, + we should give the motivations behind creating this software, but here + we should outline why the software is needed. + This section should be shortened, and the bulk of the text should be moved + to theory or background. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The purpose of creating a generic and fault tolerant game server is to provide + a good framework for the development of many different types of games. + Allowing the system to scale up and down is a powerful way to maximize + the usage of physical resources. + By scaling up to new machines when load increases, and scaling down from + machines when load decreases costs and energy consumption can be optimized. +\end_layout + +\begin_layout Standard +Fault tolerance is important for the GGS in order to create a reliable service. + The purpose of a reliable game server is to provide a consistant service + to people using the server. + Going back to the telecom example, the purpose of creating a reliable telecom + system is to allow calls, possibly emergency calls, at any time. + Should the telecom network be unavailable at any time, emergency services + may become unavailable, furthermore the consumer image of the telecom system + degrades. +\end_layout + +\begin_layout Standard +Returning to the game industry, emergency services will not be contacted + using a game server, however an unavailable server will degrade the consumer + image of the system. + Consider an online casino company. + The online casino company's servers must be available at all times to allow + customers to play. + If the servers are unavailable, customers can not play, and the company + loses money. + In this scenario, an unavailable server can be compared to a closed real-world + casino. +\end_layout + +\begin_layout Section +Challenges in developing the prototype \end_layout \begin_layout Standard @@ -518,9 +804,9 @@ The word \emph on generic \emph default - in the GGS implies that the system is able to run a very broad range of - different code, for instance code written in different programming languages, - in addition to a broad range of different game types. + in the name of the GGS implies that the system is able to run a very broad + range of different code, for instance code written in different programming + languages, in addition to a broad range of different game types. In order to support this, a virtual machine (VM) for each \emph on game development language @@ -591,7 +877,7 @@ reliable \end_layout \begin_layout Section -Delimitations +Limitations of the prototype \end_layout \begin_layout Standard @@ -603,20 +889,42 @@ The implementation of the GGS protocol, together with storage possibilities, \end_layout \begin_layout Standard -The UDP protocol will not be implemented, only TCP, the main reason behind - this is a strict timetable. - This decision means that games that requires a high speed protocol will - not be supported by the GGS prototype. +The UDP protocol is not supported for communication between client and server. + The TCP protocol was chosen in favour of UDP, due to the fact that the + implementation process using TCP was faster than if UDP would have been + used. + UDP is generally considered to be faster than TCP for the transfer of game + (and other) related data, this is discussed in more depth in +\begin_inset CommandInset ref +LatexCommand vref +reference "sec:Choice-of-network" + +\end_inset + +. + In short, the decision of using TCP means that games that requires a high + speed protocol will not be supported by the GGS prototype. Another limitation necessary to set on the system is the possibility to - have huge game worlds. - + have huge game worlds due to the implementation of the scaling mechanism + in the prototype. \end_layout \begin_layout Standard In real time games all players are playing together at the same time. Latency is a huge problem in real time games, a typical round trip time - for such games is one of 50 to 150 ms and everything above 200 ms is reported - to be intolerable + for such games is one of +\begin_inset Formula $50$ +\end_inset + + to +\begin_inset Formula $150ms$ +\end_inset + + and everything above +\begin_inset Formula $200ms$ +\end_inset + + is reported to be intolerable \begin_inset CommandInset citation LatexCommand citet key "Farber:2002:NGT:566500.566508" @@ -653,9 +961,8 @@ ng them, a Generic Game Server should address all of them and help the developer \end_layout \begin_layout Standard -Due to the limited capability of threading in many GDL VMs, the GGS prototype - will not support MMORPGs as it is not possible to implement and test something - that complex within the projects timetable. +Due to the limited capability of threading in many GDL VM:s, the GGS prototype + will not support MMORPG:s. \end_layout \begin_layout Standard @@ -668,7 +975,7 @@ The implementation of the GGS described in this thesis is only a small prototype \end_layout \begin_layout Section -Method +Method \end_layout \begin_layout Subsection @@ -676,17 +983,54 @@ Development process \end_layout \begin_layout Standard -May be Extreme Programming(XP), need to check this out further. - Maybe adapt so we can say that we use a standardized software development - method. +A prototype was developed early on in the project in order to carry out + experiments. + Using this prototype, the system was divided into modules. + A demand specification was created, using this specification, the modules + were easily identifiable. \end_layout -\begin_layout Subsubsection -Demand specification +\begin_layout Standard +The first prototype of the GGS consisted of simple modules, however, due + to the separation of concerns between the modules, they were easily independant +ly modified and improved. +\end_layout + +\begin_layout Standard +Once the basic structure of the GGS had been established, the first prototype + was removed, remaining was the structure of the modules and the internal + flow of the application. + This could be seen as an interative workflow, with the first prototype + being the first iteration. + The second iteration later became the final result of the GGS \end_layout \begin_layout Subsection -Design +Design +\end_layout + +\begin_layout Standard +The layout of the GGS is both layered and modular. + The first layer handles the most primitive data and produces a higher level + representation of the data, passing it along to different modules of the + GGS. + The modular structure of the GGS plays an important role in making the + system fault tolerant. + The approach to fault tolerance is by replication, and restarting faulting + modules with the last known good data. +\end_layout + +\begin_layout Standard +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Perhaps a graphic of this modular layout..? +\end_layout + +\end_inset + + \end_layout \begin_layout Subsection @@ -698,7 +1042,7 @@ Can we use quickcheck? \end_layout \begin_layout Chapter -Theory +Theory behind the GGS \begin_inset CommandInset label LatexCommand label name "cha:Theory" @@ -710,16 +1054,727 @@ name "cha:Theory" \begin_layout Standard In this chapter, the theory behind the techniques used in the GGS are discussed. - Performance issues and the measuring of performance are discussed. + Performance issues and the measuring of performance is discussed. Benchmarking techniques are discussed. - The options when choosing network protocols are given, along with advantages - and disadvantages for each of the alternatives. - Finally, an overview of scalability, fault tolerance and availability is + The options when choosing network protocols are given, along with a discussion + of each alternative. + Finally, a overview of scalability, fault tolerance and availability is presented. \end_layout \begin_layout Section -Performance +Design of the GGS system +\begin_inset CommandInset label +LatexCommand label +name "sec:Design-of-the" + +\end_inset + + +\end_layout + +\begin_layout Standard +The GGS is modelled after a real world system performing much of the same + duties as GGS. + This is common practice +\begin_inset CommandInset citation +LatexCommand citep +key "armstrong2011" + +\end_inset + + in the computer software world, in order to understand complex problems + more easily. + While there may not always be a real world example of a system performing + th exact duties of the system being modelled in the computer, it is often + easier to create and analyze requirements for real world systems and processes + than systems existing soley in a computer. + The requirements and limitations imposed on the real-world system can, + using the proper tools, be transferred in to the software. +\end_layout + +\begin_layout Standard +The real world system chosen for the GGS is a +\begin_inset Quotes eld +\end_inset + +Chess club +\begin_inset Quotes erd +\end_inset + + - a building where chess players can meet and play chess. + Since a real-world scenario is readily available, and to such a large extent + resembles the computer software required for the GGS, the next step in + developing the GGS system is to duplicate this real world scenario in a + software setting. +\end_layout + +\begin_layout Standard +Some requirements, limitations and additions were made to the chess club + system, so that the system would more easily and efficiently be replicated + in a software setting. +\end_layout + +\begin_layout Standard +In the text below, two examples will be presented. + On example is that of a real-world chess club, in which players meet to + play chess against each other, the other example is the GGS, and how it + corresponds to this chess club. + +\begin_inset Float figure +wide false +sideways false +status collapsed + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{centering} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Graphics + filename graphics/theory_layout.eps + scale 40 + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{centering} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "fig:theory-layout" + +\end_inset + +The layout of a physical +\begin_inset Quotes eld +\end_inset + +Chess club +\begin_inset Quotes erd +\end_inset + + with two players (P) sitting by each chess table (Table), a coordinator + keeps track of all moves and players in the building. + A player has to pass by the entrance to enter or exit the building. + The building is represented by the outermost box. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + +In figure +\begin_inset CommandInset ref +LatexCommand vref +reference "fig:theory-layout" + +\end_inset + + a graphical representation for the chess club is presented. + The club is seen from above. + The outermost box represents the building. + In the GGS setting, the building would represent one instance of GGS. + Several buildings linked together would represent a cluster of GGS instances. + In order for a player (the P symbol in the graphic) to enter the theoretical + chess club, the player must pass by the entrance. + By having each player pass by the entrance, a tally +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Does this mean what I think it does? +\begin_inset Quotes eld +\end_inset + +Räkning +\begin_inset Quotes erd +\end_inset + + ? +\end_layout + +\end_inset + + can be kept, ensuring that there are not too many players within the building. + In the GGS setting, too many players entering would mean too many connections + have been accepted to the GGS system, and that the structure of the system + thus must be modified, adding additional servers. +\end_layout + +\begin_layout Standard +Once a player has been allowed in to the chess club the player is greeted + by the host of the chess club, in the GGS setting represented by the +\emph on +Coordinator +\emph default +, and is seated by a table. + The coordinator keeps track of all the players in the building, and all + moved made by the players. + The information available to the coordinator means that cheating can be + monitored and book keeping can be performed by this entity. +\end_layout + +\begin_layout Standard +Moves by players are made using the tables present in the chess club. + Every game is isolated to a table, just as expected. + This means that communication during a game only has to pass by the players + of that particular game, and the coordinator, making sure that no cheating + takes place. +\end_layout + +\begin_layout Standard +This isolation of the games plays an imporant part in many properties of + the GGS, the isolation means that games can for example be transferred + between different chess clubs, furthermore, if cheating takes place, corruption + can only occur in the particular table where it was found, and can not + spread. +\end_layout + +\begin_layout Standard +Moving chess players from one location to another is one of the alterations + made to the real world chess club system to make the system more appropriate + for a software setting. + Allowing games to be transferred is not a property usually desired in a + real world chess club, where transferring players would mean moving the + players from one building to another. + In the software setting, moving players means moving the game processes + from one system to another, perhaps to balance the system load. + This transfer of players can occur transparently, without notifying the + players. +\end_layout + +\begin_layout Standard +The simplified life cycle of a game in GGS can be viewed using algorithm + +\begin_inset CommandInset ref +LatexCommand vref +reference "alg:game-lifecycle" + +\end_inset + +. + In order to make this life cycle as efficient and useful as possible, the + scalability, fault tolerant and generic traits are added to the GGS. + These are not shown in the algorithm, as these traits are tools in making + the algorithm behave as efficient as possible, and are not the main focus + when studying the life cycle of a game. +\end_layout + +\begin_layout Standard +The limits imposed in +\begin_inset CommandInset ref +LatexCommand vref +reference "alg:game-lifecycle" + +\end_inset + + are arbitrary for this example, there are no limits in the GGS on the number + of players connecting, for example. +\end_layout + +\begin_layout Standard +\begin_inset Float algorithm +wide false +sideways false +status collapsed + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{algorithmic}[1] +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +newcommand{ +\backslash +INDSTATE}[1][1]{ +\backslash +STATE +\backslash +hspace{#1 +\backslash +algorithmicindent}} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +STATE +\end_layout + +\end_inset + + +\series bold +while +\series default + +\begin_inset Formula $players<2$ +\end_inset + +: +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +INDSTATE +\end_layout + +\end_inset + + +\series bold +if +\series default + a player connects, call +\emph on +connected +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +STATE +\end_layout + +\end_inset + + +\series bold +while +\series default +the game commences: +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +INDSTATE +\end_layout + +\end_inset + +call the function +\emph on +game +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +STATE +\end_layout + +\end_inset + + +\series bold +when +\series default + the game has stopped +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +INDSTATE +\end_layout + +\end_inset + +call the function +\emph on +endGame +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +STATE +\end_layout + +\end_inset + + +\series bold +function +\series default +connected: +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +INDSTATE +\end_layout + +\end_inset + +assign the new player an id +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +INDSTATE +\end_layout + +\end_inset + +alert the coordinator of the new player +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +INDSTATE +\end_layout + +\end_inset + + +\series bold +if +\series default + a free table does not exist: +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +INDSTATE[2] +\end_layout + +\end_inset + +the coordinator creates a new table +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +INDSTATE +\end_layout + +\end_inset + +the coordinator places the player by the table, and begins watching the + player +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +STATE +\end_layout + +\end_inset + + +\series bold +function +\series default + game +\series bold +: +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +INDSTATE +\end_layout + +\end_inset + + perform game-specific functions. + In chess, the rules of chess are placed here +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +STATE +\end_layout + +\end_inset + + +\series bold +function +\series default +endGame: +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +INDSTATE +\end_layout + +\end_inset + +alert the coordinator, de-registering the players +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +INDSTATE +\end_layout + +\end_inset + +disconnect the players from the system, freeing system resources +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{algorithmic} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "alg:game-lifecycle" + +\end_inset + +A very simple example of the flow through the GGS system when a game played. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard + +\end_layout + +\begin_layout Section +Performance +\end_layout + +\begin_layout Standard +There are many ways in which performance could be measured. + For the clients, time and response times are useful measurements in time + critical settings. + In non-time critical settings, the reliability of message delivery may + be an even more important factor than speed. +\end_layout + +\begin_layout Standard +In a first person shooter game, the speed of delivery of messages is essential. + Failiure to deliver messages in time results in choppy gameplay for the + players. + In strategy games, the reliability of delivery may be more important than + the speed, since the game is not percieved as choppy even if the messages + are delayed. +\end_layout + +\begin_layout Standard +For someone operating a GGS, it is perhaps more interesting to measure the + system load, memory consumption, energy consumption and network saturation. + These topics are discussed in theory in this section. + The practical results for the prototype are discussed in chapter +\begin_inset CommandInset ref +LatexCommand vref +reference "cha:Implementation-of-a" + +\end_inset + +. +\end_layout + +\begin_layout Subsection +Performance measurements +\end_layout + +\begin_layout Standard +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Tue apr 26, 9:15. + Continue from here on. + Discuss which results we may expect in a fully fledged GGS system. + What impedes the speeds, what raises the CPU load (and therefore the temperetur +es & power consumption). + What factors are there in the network saturation problem? +\end_layout + +\begin_layout Plain Layout +Which games are affected by what, and what does this mean for the number + of players a GGS can handle? +\end_layout + +\end_inset + + \end_layout \begin_layout Standard @@ -818,6 +1873,13 @@ Find reference on how to benchmark distributed, multiprocess systems \begin_layout Section Choice of network protocol +\begin_inset CommandInset label +LatexCommand label +name "sec:Choice-of-network" + +\end_inset + + \end_layout \begin_layout Standard @@ -915,15 +1977,47 @@ Same here it is simply not true for a generic server to chose one or the \end_layout \begin_layout Section -Fault Tolerance +Generic +\begin_inset CommandInset label +LatexCommand label +name "sec:Generic" + +\end_inset + + \end_layout \begin_layout Standard -Fault tolerance is an important factor in all servers; a server that is +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Bad name of the chapter, but here we should give the theory of how the server + is generic +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Fault Tolerance +\begin_inset CommandInset label +LatexCommand label +name "sec:Fault-Tolerance" + +\end_inset + + +\end_layout + +\begin_layout Standard +Fault tolerance is an important factor in all servers, a server that is fault tolerant should be able to follow a given specification when parts of the system failures. This means that fault tolerance is different in each system depending on - what specification the system have. + what specification they have. A system could be fault tolerant in different aspects, one is where the system is guaranteed to be available but not safe and it could also be reversed, that the system is safe but not guaranteed to be available. @@ -952,11 +2046,11 @@ In order to make the GGS prototype fault tolerant the programming language \begin_layout Standard The need for fault tolerance in game servers is not as obvious as it may - be for other types of servers. + be for other typ of servers. In general all servers strive to be fault tolerant as fault tolerance means more uptime and a safer system. - This applies to game servers as well, in brief good fault tolerance is - a way of satisfying customers. + This applies to game servers aswell, in brief good fault tolerance is a + way of satisfying customers. In general, game servers differ from many other fault tolerant systems in that high-availability is more important than the safety of the system. For example a simple calculation error will not be critical for a game @@ -971,14 +2065,21 @@ Performance penalties \end_layout \begin_layout Section -Availability +Availability +\begin_inset CommandInset label +LatexCommand label +name "sec:Availability" + +\end_inset + + \end_layout \begin_layout Standard One important factor of any server is the availability. A server to which you are unable to connect to is a useless server. - Other then within telecommunication, their uptime is of about 99,9999999%, - the game developer community hasn't approached this problem very genuinely + Other then within telecomunication, their uptime is of about 99,9999999%, + the game developer community hasn't approched this problem very genuinely yet so there is much room for improvement. \end_layout @@ -1019,7 +2120,14 @@ messages \end_layout \begin_layout Section -Scalability +Scalability +\begin_inset CommandInset label +LatexCommand label +name "sec:Scalability" + +\end_inset + + \end_layout \begin_layout Standard @@ -1035,7 +2143,7 @@ Each instance of the GGS contains several tables. down at a new table, all within the same game session. With this in mind, the main focus of the GGS is not to move players between tables, but to keep a player in a table, and to start new tables instead. - When a server has reached a certain number of players the performance will + When a server has reached a certain amount of players the performance will start to decrease. To avoid this the GGS will start new tables on another server, using this technique the players will be close to evenly distributed between the servers. @@ -1143,7 +2251,7 @@ UUID \begin_inset Float algorithm wide false sideways false -status collapsed +status open \begin_layout Plain Layout \begin_inset ERT @@ -1432,7 +2540,7 @@ reference "alg:A-simple-generator" \begin_inset Float figure wide false sideways false -status open +status collapsed \begin_layout Plain Layout \begin_inset ERT @@ -1481,7 +2589,7 @@ end{centering} status open \begin_layout Plain Layout -Add clients on each side, and replace the cloud with pole-landlines being +Add clients on each side, and replace the cloud with phole-landlines being cut by a pair of scissors \end_layout @@ -1518,7 +2626,7 @@ Security \end_layout \begin_layout Standard -The project only support languages running in a sandboxed environment. +We only support languages running in a sandboxed environment. Each game session is started in its own sandbox. The sandboxing isolates the games in such a way that they can not interfere with each other. @@ -1543,11 +2651,11 @@ Game Development Language in a Virtual Machine There is only a very limited number of game developers who would like to write their games in Erlang, therefore we had to come up with something to resolve this problem. - The main idea was to offer a replaceable module which would introduce a + The main idea was to offer a replacable module which would introduce a interface to different virtual machines which would run the game code. - This way a game developer can write the game in his favorite language while - the server part still is written in Erlang and can benefit from all of - its advantages. + This way a game developer can write the game in his favourite language + while the server part still is written in Erlang and can benefit from all + of its advantages. \end_layout \begin_layout Subsection @@ -1709,40 +2817,21 @@ number of clients \end_layout \begin_layout Chapter -Implementation -\begin_inset Note Note -status collapsed - -\begin_layout Plain Layout -Perhaps call this -\begin_inset Quotes eld -\end_inset - -realization -\begin_inset Quotes erd -\end_inset - - or -\begin_inset Quotes eld -\end_inset - -implementation -\begin_inset Quotes erd -\end_inset - - -\end_layout +Implementation of a prototype +\begin_inset CommandInset label +LatexCommand label +name "cha:Implementation-of-a" \end_inset - + \end_layout \begin_layout Standard -This chapter contains the realization of many of the principles and techniques +This chapter contains the realization of much of the principles and techniques described in chapter \begin_inset CommandInset ref -LatexCommand ref +LatexCommand vref reference "cha:Theory" \end_inset @@ -1764,6 +2853,577 @@ and distribution of erlang nodes on physical nodes. with third parties are also discussed here. \end_layout +\begin_layout Section +Overview of the prototype +\end_layout + +\begin_layout Standard +The prototype of the GGS was developed using the Erlang language. + The functional and concurrent style of Erlang facilitates devlopment of + software based on a real-world model +\begin_inset CommandInset citation +LatexCommand citep +key "armstrong2011" + +\end_inset + +. + In Erlang, most things are processes. + The software running the Erlang code is known as the Erlang machine, or + an Erlang node. + Each Erlang node is capable of running several +\emph on +threads +\emph default +(also known as +\emph on +Light Weight Processes; LWP +\emph default +) +\emph on +, +\emph default +much like the threads in an operating system. + Threads in a Linux system, for example, are treated much like operating + system processes in different systems. + Due to the size of datastructures related to each process, swapping one + process for another (known as +\emph on +context switching +\emph default +) is an expensive task in many systems. +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Citation needed, perhaps the book for the +\emph on +Unix Internals +\emph default + course? +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The cost of swapping operating system processes becomes a problem when many + processes are involved. + If the GGS system had been developed using regular operating system processes, + it would have had to be designed in a way to minimize the number of processes. + Using Erlang, which is capable of running very many processes, several + times more than an operating system can, the mapping between the real world + system (described in +\begin_inset CommandInset ref +LatexCommand vref +reference "sec:Design-of-the" + +\end_inset + +) becomes clearer. +\end_layout + +\begin_layout Standard +Erlang allows the GGS to create several process for each player connecting, + these processes can handle a multitude of different tasks, parsing data + for example. + Since each task is handled by a different process, the tasks are clearly + separated and the failiure of one is easily recovered without affecting + the others. +\end_layout + +\begin_layout Standard +In addition to creating (or +\emph on +spawning +\emph default +) processes specifically to handle new players connecting, the GGS has more + permanent processes running at all times. + The constantly running processes in the GGS system are called +\emph on +modules +\emph default +. + An example of a module in the GGS is the +\emph on +dispatcher module +\emph default +, which handles the initial connection made by a client, passing the connection + along further in to the system. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status collapsed + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{centering} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Graphics + filename graphics/Chess_no_text.eps + width 100text% + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{centering} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "fig:The-layout-of" + +\end_inset + +The layout of the GGS. + The circles marked with 'C' topmost in the picture represent clients. + The cloud marked 'network' pictured directly below the clients can be any + network, for example the Internet. + The barell figure marked 'backup' is a process being fed backup data from + the coordinator. + The barell marked 'State' contains the state of a table, and this is fed + into the box marked 'Mnesia' which is database. + Finally the figure shaped as a shield marked 'GameVM' contains the actual + game process. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +In figure +\begin_inset CommandInset ref +LatexCommand vref +reference "fig:The-layout-of" + +\end_inset + + the entire GGS system is represented graphically. + The circles marked with 'C' topmost in the picture represent game clients. + These circles represent processes running on gamers' computers, and not + on the GGS machine. + If a game of chess is to be played on the server, the clients on the gamers' + machines will be chess game clients. + Clients connect through a network, pictured as a cloud, to the dispatcher + process in the GGS. + The dispatcher process and all other modules are discussed in +\begin_inset CommandInset ref +LatexCommand vref +reference "sec:The-modular-structure" + +\end_inset + +. + For each connection, a new player process is spawned, which immediately + after spawning is integrated in to the GGS by the coordinator process. +\end_layout + +\begin_layout Section +The usage of Erlang in the GGS +\end_layout + +\begin_layout Standard +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Here we can have a more in-depth look at why Erlang was used, and outline + the characteristics of EWrlang that we make use of in the GGS. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +The modular structure of the GGS prototype +\begin_inset CommandInset label +LatexCommand label +name "sec:The-modular-structure" + +\end_inset + + +\end_layout + +\begin_layout Standard +The separation of concerns, and principle of single responsibility +\begin_inset Foot +status collapsed + +\begin_layout Plain Layout +More information on the SRP is available at: +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Insert adress! +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + are widely respected as good practices in the world of software engineering + and development. + By dividing the GGS up into modules each part of the GGS can be modified + without damaging the rest of the system. +\end_layout + +\begin_layout Standard +The responsibility and concern of each module comes from the responsibility + and concern of the real-world entity the model represents. + The modelling of the GGS after a real world system was discussed in chapter + +\begin_inset CommandInset ref +LatexCommand vref +reference "cha:Theory" + +\end_inset + +. +\end_layout + +\begin_layout Standard +In the text below the word module refers to the actual code of the discussed + feature, while the word process is used when referring to a running instance + of the code. + Those familiar to object oriented programming may be helped by thinking + in the lines of classes and objects. +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Am I right here? +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +The dispatcher module +\end_layout + +\begin_layout Standard +\begin_inset Note Note +status open + +\begin_layout Plain Layout +The discussion of the modules is divided into the following parts: +\end_layout + +\begin_layout Itemize +What does the module do? +\end_layout + +\begin_layout Itemize +What happens when the module fails? +\end_layout + +\begin_layout Itemize +How does the module correspond to the real-world scenario of the chess club? +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +The dispatcher module is the first module to have contact with a player. + When a player connects to the GGS, it is first greeted by the dispatcher + module, which sets up an accepting socket for each player. + +\begin_inset Note Note +status collapsed + +\begin_layout Plain Layout +Is this the proper way to day the dispatcher greets connecting players? +\end_layout + +\end_inset + + The dispatcher is the module which handles the interfacing to the operating + system when working with sockets. + Operating system limits concering the number of open files, or number of + open sockets are handled here. + The operating system limits can impose problems on the GGS, this is discussed + more in detail in chapter +\begin_inset CommandInset ref +LatexCommand vref +reference "cha:Problems-of-implementation" + +\end_inset + +. +\end_layout + +\begin_layout Standard +Should the dispatcher module fail to function, no new connections to the + GGS can be made. + In the event of a crash in the dispatcher module, a supervisor process + immediately restarts the dispatcher. + There exists a window of time between the crashing of the dispatcher and + the restarting of the dispatcher, this window is very short, and only during + this window is the GGS unable to process new connection requests. + Due to the modular structure of the GGS, the rest of the system is not + harmed by the dispatcher process not functioning. + The process does not contain a state, therefore a simple restart of the + process is sufficient in restoring the GGS to a pristine state after a + dispatcher crash +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Well.. + In theory.. +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout Standard +Returning to scenario of the chess club, the dispatcher module is the doorman + of the club. + When a player enters the chess club, the player is greeted by the doorman, + letting the player in to the club. + The actual letting in to the club is in the GGS represented by the creation + of a player process discussed in +\begin_inset CommandInset ref +LatexCommand vref +reference "sub:The-player-module" + +\end_inset + +. + The newly created player process is handed, and granted rights to, the + socket of the newly connected player. +\end_layout + +\begin_layout Subsection +The player module +\begin_inset CommandInset label +LatexCommand label +name "sub:The-player-module" + +\end_inset + + +\end_layout + +\begin_layout Standard +The player module is responsible for representing a player in the system. + Each connected player has its own player process. + The player process has access to the connection of the player it represents, + and can communicate with this player. + In order to communicate with a player, the data to and from the player + object must pass through a protocol parser module, discussed in +\begin_inset CommandInset ref +LatexCommand vref +reference "sub:The-protocol-parser" + +\end_inset + +. + Raw communication, witout passing the data through a protocol parser is + in theory possible, but is not useful. +\end_layout + +\begin_layout Standard +In the creation of a player process, the coordinator process, discussed + in +\begin_inset CommandInset ref +LatexCommand vref +reference "sub:The-coordinator-module" + +\end_inset + +, is notified by the newly connected process. +\end_layout + +\begin_layout Standard +In the event of a crash in a player process, several things happen. + +\end_layout + +\begin_layout Enumerate +The player process, which is the only process with a reference to the socket + leading to the remote client software, passes this reference of the socket + to the coordinator process temporarily. +\end_layout + +\begin_layout Enumerate +The player process exits. +\end_layout + +\begin_layout Enumerate +The coordinator spawns a new player process, with the same socket reference + as the old player process had. +\end_layout + +\begin_layout Enumerate +The player process resumes operation, immediately starting a new protocol + parser process, and begind receiving and sending network messaged again. +\end_layout + +\begin_layout Standard +The window of time between the crash of the player process and the starting + of a new player process is, as with the dispatcher, very short. + Since the connection changes owners for a short period of time, but is + never dropped, the implications of a crash are only noticed, at worst, + as choppy gameplay for the client. + Note however that this crash recovery scheme is not implemented in the + GGS prototype. + +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Can we do this..? Seems a bit sneaky. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Moving back to the real world example, the player process represent an actual + person in the chess club. + When a person sits down at a table in the chess club, the person does so + by requesting a seat from some coordinating person, and is then seated + by the same coordinator. + Once seated, the player may make moves on the table he or she is seated + by, this corresponds clearly to how the GGS is structured, as can be seen + in the following sections. +\end_layout + +\begin_layout Subsection +The protocol parser module +\begin_inset CommandInset label +LatexCommand label +name "sub:The-protocol-parser" + +\end_inset + + +\end_layout + +\begin_layout Standard +The protocol parser is an easily interchangable module in the GGS, handling + the client-to-server, and server-to-client protocol parsing. + In the GGS prototype, there is only one protocol supported, namely the + +\emph on +GGS Protocol +\emph default +. + The role of the protocol parser is to translate the meaning of packets + sent using the prototocol in use to internal messages of the GGS system. + The GGS protocol, discussed below is used as a sample protocol in order + to explain how protocol parsers can be built for the GGS. +\end_layout + +\begin_layout Subsubsection +The structure of the GGS Protocol +\begin_inset CommandInset label +LatexCommand label +name "sub:The-structure-of" + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Note Note +status open + +\begin_layout Plain Layout +Mention that the protocol is heavily influenced bye HTTP, is parsed using + a FSM, perhaps give a sample packet. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +The coordinator module +\begin_inset CommandInset label +LatexCommand label +name "sub:The-coordinator-module" + +\end_inset + + +\end_layout + +\begin_layout Subsection +The table module +\end_layout + +\begin_layout Subsection +The game virtual machine module +\end_layout + +\begin_layout Subsection +The database module +\end_layout + \begin_layout Section Techniques for ensuring reliability \end_layout @@ -1772,7 +3432,7 @@ Techniques for ensuring reliability One of the main goals of the project is to achieve high reliability. A highly reliable application is one that crashes very, very rarely \begin_inset Note Note -status collapsed +status open \begin_layout Plain Layout CITATION NEEDED @@ -1818,6 +3478,16 @@ d reliability systems in Erlang. \begin_layout Subsection Supervisor structure +\begin_inset Note Note +status open + +\begin_layout Plain Layout +This entire section is bad. +\end_layout + +\end_inset + + \end_layout \begin_layout Standard @@ -1853,7 +3523,7 @@ In Erlang, we have a simple version of supervisors. \end_layout \begin_layout Standard -When the linking of processes in order to monitor exit behavior is coupled +When the linking of processes in order to monitor exit behaviour is coupled with the transparent distribution of Erlang, a very powerful supervision system is created. For instance, we can restart a failing process on a different, new node, @@ -1862,7 +3532,7 @@ When the linking of processes in order to monitor exit behavior is coupled \end_layout \begin_layout Standard -In the GGS, we have separated the system into two large supervised parts. +In the GGS, we have separated the system in to two large supervised parts. We try to restart a crashing child separately, if this fails too many \begin_inset Foot status collapsed @@ -1888,7 +3558,7 @@ too many \begin_inset Float figure wide false sideways false -status collapsed +status open \begin_layout Plain Layout \begin_inset Note Note @@ -2009,7 +3679,14 @@ User interface \end_layout \begin_layout Chapter -Problems +Problems of implementation +\begin_inset CommandInset label +LatexCommand label +name "cha:Problems-of-implementation" + +\end_inset + + \end_layout \begin_layout Section @@ -2017,20 +3694,20 @@ erlang_js \end_layout \begin_layout Standard -To be able to run JavaScript on the server there was a need to embed a JavaScrip -t engine within the server. - After a thorough investigation erlang_js became the choice. +To be able to run JavaScript on our server we needed to embed a JavaScript + engine within the server. + After a thorough investigation erlang_js became our choice. Erlang_js provides direct communication with a JavaScript VM (Virtual Machine). - This was exactly what was wanted, but there was also a need to communicate - from erlang_js to Erlang. + This was exactly what we wanted, but we also needed the possibility to + communicate from erlang_js to Erlang. This functionality was not yet implemented in erlang_js, due to lack of time. \end_layout \begin_layout Standard There were two possible solutions to the problem. - To rewrite some part of erlang_js, or to switch erlang_js for some other - JavaScript engine. + We could rewrite some part of erlang_js, or we could switch erlang_js for + some other JavaScript engine. Searching for other engines we found erlv8 and beam.js which provided the functionality that we wanted. As we tested beam.js it occurred random crashes of the whole Erlang environment. @@ -2072,7 +3749,7 @@ Design choices \begin_layout Standard When designing concurrent applications, it is useful to picture them as - real world scenarios, and to model each actor# as a real world process. + real world scenarios, and to model each actor as a real world process. A real world process is a process which performs some action in the real world, such as a mailbox receiving a letter, a door being opened, a person translating a text, a soccer player kicking the ball, just to name a few @@ -2158,68 +3835,6 @@ Coordinator \emph default rounding up all the tables, running to a new location and building the club up in the exact state it was prior to the fire. -\begin_inset Float figure -wide false -sideways false -status collapsed - -\begin_layout Plain Layout -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -begin{centering} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Plain Layout -\begin_inset Graphics - filename graphics/Chess_no_text.eps - width 100text% - -\end_inset - - -\end_layout - -\begin_layout Plain Layout -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -end{centering} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Plain Layout -\begin_inset Caption - -\begin_layout Plain Layout -The layout of GGS -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - \end_layout \begin_layout Section @@ -2325,6 +3940,18 @@ The GGS doesn't support many programming languages nor does it have a complete Conclusion \end_layout +\begin_layout Chapter* +Glossary +\end_layout + +\begin_layout Standard +Here we could add some important words and their definitions.. +\end_layout + +\begin_layout Standard + +\end_layout + \begin_layout Standard \begin_inset CommandInset bibtex LatexCommand bibtex