diff --git a/annotations/html/inheritance/hierarchy.gif b/annotations/html/inheritance/hierarchy.gif
index 4b19d87c..18ca019d 100644
Binary files a/annotations/html/inheritance/hierarchy.gif and b/annotations/html/inheritance/hierarchy.gif differ
diff --git a/annotations/latex/inheritance/hierarchy.eps b/annotations/latex/inheritance/hierarchy.eps
index 51894cb5..394d5213 100644
--- a/annotations/latex/inheritance/hierarchy.eps
+++ b/annotations/latex/inheritance/hierarchy.eps
@@ -1,761 +1,357 @@
%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: 0.45.1
+%%Creator: cairo 1.14.8 (http://cairographics.org)
+%%CreationDate: Sun May 28 15:58:26 2017
%%Pages: 1
-%%Orientation: Portrait
-%%BoundingBox: 0 0 240 160
-%%HiResBoundingBox: 0 0 240 160
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 0 -1 232 128
%%EndComments
+%%BeginProlog
+save
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+%%EndProlog
%%BeginSetup
+%%BeginResource: font Arimo
+11 dict begin
+/FontType 42 def
+/FontName /Arimo def
+/PaintType 0 def
+/FontMatrix [ 1 0 0 1 0 0 ] def
+/FontBBox [ 0 0 0 0 ] def
+/Encoding 256 array def
+0 1 255 { Encoding exch /.notdef put } for
+Encoding 65 /A put
+Encoding 67 /C put
+Encoding 76 /L put
+Encoding 86 /V put
+Encoding 87 /W put
+Encoding 97 /a put
+Encoding 99 /c put
+Encoding 100 /d put
+Encoding 101 /e put
+Encoding 104 /h put
+Encoding 105 /i put
+Encoding 108 /l put
+Encoding 110 /n put
+Encoding 114 /r put
+Encoding 116 /t put
+/CharStrings 16 dict dup begin
+/.notdef 0 def
+/V 1 def
+/e 2 def
+/h 3 def
+/i 4 def
+/c 5 def
+/l 6 def
+/L 7 def
+/a 8 def
+/n 9 def
+/d 10 def
+/W 11 def
+/t 12 def
+/r 13 def
+/A 14 def
+/C 15 def
+end readonly def
+/sfnts [
+<00010000000900800003001063767420589f555f00000c48000002966670676d360b160c0000
+0ee0000007b4676c7966b79587ff0000009c00000bac686561640bd4a1e30000169400000036
+68686561198a0f8b000016cc00000024686d74784523061e000016f0000000406c6f63610000
+5a4c00001730000000446d61787003a603e40000177400000020707265708dbea8b100001794
+000003f7000200cd00000532058100030007001f400d02060503060309080503040003003fcd
+2fcd11120139391133113331301321112113112111cd0465fb9b4c03cd0581fa7f0535fb1704
+e9000000000100090000054d05810008003e402607080100050302020508030a09200a500a02
+300a600a900ac00af00a052f0a01070203050112003f333f33015d5d71111217391133113333
+11333130212301330117370133030ec6fdc1c9018654540184c90581fc20f9f903e000000002
+0057ffec0418044e0012001900774046131106071900000c0c0711031b1a0606000319005059
+0d190114041919090f0f1650590f10090350590916d01b01c01b01a01b01901b01801b01701b
+01601b01501b01301b01717171717171717171003f2b00183f2b11120039182f5f5e5d2b1112
+0039182f11120117391133113311331133313001141633323637170221220211101233201115
+2726262322060701149a94758d199e61fea8f0fbfbe901ddba0f908783990601f7baca5e482d
+ff00011e011a010c011efdc1188aab9daf9900000001008e000003ee05cc00180060403b1511
+111208071207191a13000003120715030d50590310d01a01c01a01b01a01f01a01b01a01ff1a
+01e01a01d01a01c01a01b01a01a01a01701a015d5d5d5d5d5d5d7171727272003f2b00183f33
+12393f1112013939113311331133313001363633321615112311342626232206151123113311
+140607013d3aa37db0a7b52a60557f99b4b4070103816a63afcefd2f02ae726f34b095fd8205
+ccfe7e3d820a000200890000013d05cc00030007006e40480307070004040809050f04150100
+53590100ff0901e00901df0901c00901b009019f09018009017009011f0901000901f00901df
+0901c00901b00901a009019009014f09011f09015d7171717171717172727272727272727272
+003f2b00183f3f1112013911333311333130133533150311331189b4b4b40520acacfae0043a
+fbc600010057ffec03ca044e001900664045000d1413060707130d031a1b101750591f147f14
+8f14df140414141010200670068006d006e0060500061006600670068006c006d00607090306
+060a0a0350590a161f1b015d003f2b110033182f5f5e5d713f332f5d2b111201173911331133
+1133313001141633323637170606232202111012333216170726262322060113888960810fb6
+15e0ace3eff0e0a6db1cb90e72698f800222d8d0686c0c9cba011f01130111011fac970e5a6a
+be0000000001008a0000013e05cc000300764051030000050401000015f00501e00501df0501
+c00501b005019f05018005017005011f05010f0501f00501df0501c00501b00501a005019005
+014f0501ff0501e00501d00501c005018005017005011f05015d5d5d5d5d5d5d717171717171
+7172727272727272727272003f3f1112013911333130331133118ab405ccfa340000000100a8
+0000042f05810005001f400e030000040607010300035f590012003f2b00183f111201393911
+333130331133112115a8bf02c80581fb1b9c00020057ffec0473044e00230030008e40562029
+290707150e0f2e03030f151a0432311d1851591d1620001107295159070711003f0e010f0e6f
+0e020b030e0e11110b50591110002450590016c03201a0320190320180320170320160320150
+3201303201a032015d7171717171717171003f2b00183f2b110033182f5f5e5d711112392f2b
+11120039183f2b11120117391133113311331133113331300522263534363737353426232206
+07271221321615111416333237150623222627230606273236363535070e02151416019ea3a4
+ddf6f37078796e0bbc2e0184ccce2a3b1a214447645b060645b75a639a59c57f83465f14ac96
+a8b406043b8472525a110124bbb1fe2e505107701069707c67875a9d53590402306451586000
+000000010088000003ee044e001a0061403c1209090a001a0a1a1b1c1216001605505916100d
+0f0a0015d01c01c01c01b01c01f01c01b01c01ff1c01e01c01d01c01c01c01b01c01a01c0170
+1c015d5d5d5d5d5d5d7171727272003f323f3f2b111200391112013939113311331133313021
+11342626232206151123113427331e0217333636333216151103392a5c598296b406aa010203
+02033ea379b2a502ae6b7634b29efd8d0353bd2a052c394f705db1ccfd2f00020056ffec03ef
+05cc00160022005640311d000e0e0f17060f06242312150e00000b0308082050590810031a50
+5903169024017024011f2401ff2401e02401c024015d5d5d717171003f2b00183f2b11120039
+39183f3f11120139391133113311333331302506062322021110213216173327113311141723
+262635011416333236353426232206033532a57acdc1018e7ba4320202b406ac0307fdda7887
+998a8a978879ae685a0114011802365a627901c1fb13a93610742a0170e3c4d4dfd7c8c90001
+0009000007860581001901fc40ff1819080101010014071101081001111004080707010b0307
+0d0a09090d041419051b1a8b1b011bc07c7f48391b012a1b01191b010a1b01f91b01ea1b01d9
+1b01ca1b01b81b01891b991ba91b03781b01691b013a1b4a1b5a1b03291b011a1b010c1b0168
+fd1b01ec1b01dd1b01cc1b01bd1b01ab1b019c1b018b1b017c1b016b1b015c1b014b1b013c1b
+012b1b011c1b010b1b01fc1b01eb1b01dc1b01cb1b01bc1b01ab1b019c1b01008d1b017f1b01
+6d1b015f1b014d1b012f1b3f1b021d1b010f1b01fd1b01ef1b01dd1b01cf1b01bd1b01af1b01
+9d1b018f1b016d1b7d1b025b1b014d1b013b1b012d1b011b1b010d1b0138fb1b01ed1b01db1b
+01cd1b406f01bb1b01ad1b019b1b018d1b017b1b016d1b014b1b5b1b02391b012b1b01191b01
+0b1b01f91b01eb1b01dd1b01cb1b01bd1b01ab1b019d1b018b1b017d1b016b1b015d1b014b1b
+013d1b01012b1b011f1b01025f1b7f1b9f1bbf1bdf1bff1b06001b01081810040903140d0d01
+0812003f333311333f333333015e5d5d5f71715f717171717171717171717171717272727272
+727272727272727272725e5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d71717171717171715f717171
+71717171727272727272727272727272727272725e5d5d5d5d5d5d5d5d5d5d5d5d717171712b
+7111121739113311335f5e5d331133335d5d1133335d11333130212303262706060323013313
+161736121333131617373636013305e7e4f4182e1a24ffe4fe61c7fd2d26183ff6b7f5382009
+1b220108c7037f54d9749cfc640581fc81a8b26e01040367fc93d79523739103b20000000001
+001ffff0022a052c0014004540240d14140b0f0f09040416150e05080550590b0f09010c0309
+40080f0212505902168016015d003f2b00183f1acd5f5e5d332b110033111201391133331133
+3211333130250623223511233533373315331523111416333237022a595dd87d843578c8c833
+3f24440818f502d283f2f283fd554e3f0e0000000001008800000288044e0013002340100613
+1300000c14150f060a10040f0015003f3f3f3333111201393911331133313033113427331615
+333636333217152623220615118e06aa08042b70662425243c7076033e728ab8258b660aa50a
+c1b4fdcc00000002000400000552058100070010005b40360d01000c02030605080003040408
+070312110c025f590c0c080503040012b01201501201f01201c012019012016012013012012f
+12015d5d5d5d5d5d7171003f323f33392f2b1112011739113332113333123939123939313021
+03210323013301010706070321032627048fa1fd7ea2c6023fd90236fd5b091931b4020fb51c
+1c019cfe640581fa7f04f11c5382fe3101d14557000000010068ffec057905960019005e4039
+031017160809091610031a1b0f17010d0317171313005f59130400081008400850089008a008
+d008e008080c0308080c0c065f590c13201b015d003f2b110033182f5f5e5d3f2b110033182f
+5f5e5d1112011739113311331133313001220011100033201317060423222402351000213204
+170726260318eafefc010fe70128959c57fec5d0d5fec9a3016c0142e1012e47b531d904fafe
+d3fefafefdfec501254eb6beb10149e10151017eb0ad3c7b8200000005cc05cc007d05810015
+0079058100150000000000000000000000000000043a001400770000ffec00000000ffec0000
+0000ffec0000fe57000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000008000000000000b400bd00af00a00000000000000000000000000088
+007e000000ac00000000000000000000000000bf00c300ab00000000009b008d000000000000
+000000000000000000000000000000000000000000b900aa0000000000000094009900870000
+00000000000000000000000000000000000000000000006a0083008d00a400b4000000000000
+000000000060006a0079009800ac00b800a700000122013300c3006b00000000000000db00c9
+0000000000000000000000000000000000000000000001e101c9009200a8006b009200b7006b
+009b0000027b02f200920252006e02d703810082008900a0009f0169008f0000016000a4015b
+005e0082000000000000005e0065006f0000000000000000000000000000008a009000a5007a
+0080000000000000000000000581fff3000dfcb300830089008f00960069007105cc000ffc1e
+fff2003404e6000dfed400bf031f00a700ae00b500000000008100000000000000000748036a
+02b60202fd930000009100670091006101d90000028d03410000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000363000bfd0ffff500000000
+000006810468001404cb0000ffecffd3fe7f008300db00aa00ba00a000cf072b000906ab04ba
+fff70430fff7000040475b5a59585554535251504f4e4d4c4b4a494847464544434241403f3e
+3d3c3b3a393837363531302f2e2d2c28272625242322211f181411100f0e0d0b0a0908070605
+04030201002c20b0016045b003252011466123452361482d2c20451868442d2c45234660b020
+6120b04660b004262348482d2c4523462361b0206020b02661b02061b004262348482d2c4523
+4660b0406120b06660b004262348482d2c4523462361b0406020b02661b04061b00426234848
+2d2c0110203c003c2d2c20452320b0cd442320b8015a51582320b08d44235920b0ed51582320
+b04d44235920b0042651582320b00d44235921212d2c20204518684420b001602045b0467668
+8a4560442d2c01b10b0a432343650a2d2c00b10a0b4323430b2d2c00b0282370b101283e01b0
+282370b10228453ab10200080d2d2c2045b00325456164b050515845441b2121592d2c49b00e
+23442d2c2045b0004360442d2c01b00643b00743650a2d2c2069b04061b0008b20b12cc08a8c
+b8100062602b0c642364615c58b00361592d2c8a03458a8a87b0112bb0292344b0297ae4182d
+2c4565b02c234445b02b23442d2c4b525845441b2121592d2c4b515845441b2121592d2c01b0
+05251023208af500b0016023edec2d2c01b005251023208af500b0016123edec2d2c01b00625
+10f500edec2d2cb00243b001525821212121211b462346608a8a462320468a608a61b8ff8062
+232010238ab10c0c8a70456020b0005058b00161b8ffba8b1bb0468c59b0106068013a592d2c
+2045b0032546524bb013515b58b0022546206861b00325b003253f2321381b2111592d2c2045
+b00325465058b0022546206861b00325b003253f2321381b2111592d2c00b00743b006430b2d
+2c20b003254550588a20458a8b44211b214544592d2c21b08051580c6423648bb82000621bb2
+00402f2b59b002602d2c21b0c051580c6423648bb81555621bb200802f2b59b002602d2c0c64
+23648bb84000626023212d2c4b53588ab004254964234569b0408b61b08062b020616ab00e23
+442310b00ef61b21238a121120392f592d2c4b535820b0032549646920b00526b00625496423
+61b08062b020616ab00e2344b0042610b00ef68a10b00e2344b00ef6b00e2344b00eed1b8ab0
+0426111220392320392f2f592d2c4523456023456023456023766818b08062202d2cb0482b2d
+2c2045b0005458b040442045b04061441b2121592d2c45b1302f4523456160b0016069442d2c
+4b5158b02f2370b01423421b2121592d2c4b515820b0032545695358441b2121591b2121592d
+2c45b01443b0006063b0016069442d2cb02f45442d2c452320458a60442d2c45234560442d2c
+4b235158b90033ffe0b134201bb3330034005944442d2cb0164358b00326458a586466b01f60
+1b64b020606620581b21b04059b001615923586559b02923442310b029e01b2121212121592d
+2cb0024354584b53234b515a58381b2121591b21212121592d2cb0164358b004254564b02060
+6620581b21b04059b0016123581b6559b0292344b00525b00825082058021b0359b0042510b0
+05252046b0042523423cb00425b0072508b0072510b006252046b00425b0016023423c205801
+1b0059b0042510b00525b029e0b02920456544b0072510b00625b029e0b00525b00825082058
+021b0359b00525b003254348b00425b0072508b00625b00325b0016043481b21592121212121
+21212d2c02b00425202046b004252342b0052508b003254548212121212d2c02b0032520b004
+2508b0022543482121212d2c452320451820b00050205823652359236820b040505821b04059
+235865598a60442d2c4b53234b515a5820458a60441b2121592d2c4b545820458a60441b2121
+592d2c4b53234b515a58381b2121592d2cb000214b5458381b2121592d2cb002435458b0462b
+1b21212121592d2cb002435458b0472b1b212121592d2c20b0025423b000545b58b080b00243
+50b001b00243545b58212121211bb0482b591bb080b0024350b001b00243545b58b0482b1b21
+21212159592d2c20b0025423b000545b58b080b0024350b001b00243545b582121211bb0492b
+591bb080b0024350b001b00243545b58b0492b1b21212159592d2c208a08234b538a4b515a58
+23381b2121592d2c00b0022511b00225496a20b0005358b04060381b2121592d2c00b0022511
+b00225496a20b0005158b04061381b2121592d2c208a2349648a2353583c1b21592d2c4b5258
+7d1b7a592d2cb012004b014b54422d2cb1020142b123018851b1400188535a58b1020042b910
+000020885458b202010243604259b12401885158b920000040885458b2020202436042b12401
+885458b2022002436042004b014b5258b2020802436042591bb940000080885458b202040243
+604259b94000008063b80100885458b202080243604259b94000010063b80200885458b20210
+0243604259b12601885158b94000020063b80400885458b202400243604259b94000040063b8
+0800885458b2028002436042595959595959b10002435458b1020142592d2c451868234b5158
+2320452064b04050587c59688a6059442d2cb00016b00225b0022501b001233e00b002233eb1
+0102060cb00a236542b00b234201b001233f00b002233fb10102060cb006236542b0072342b0
+0116012d2cb080b0024350b001b00243545b58212310b0201ac91b8a10ed592d2cb0592b2d2c
+8a10e52d00010000000151ec7883b8d45f0f3cf5001b080000000000c840f99a00000000d25f
+0c23fba6fce31660085800000009000100010000000000010000073efe4e004316b2fba6fa7a
+1660000100000000000000000000000000000010060000cd05560009047300570473008e01c7
+00890400005701c7008a047300a8047300570473008804730056078d00090239001f02aa0088
+0556000405c70068000000000000004c000000b80000018c0000023c000002d0000003900000
+04200000045c0000057c00000630000006f400000954000009dc00000a4000000ae800000bac
+00010000001001520054005c000600020010002f005c000002cb02040004000141110009014a
+003d01490055000001490020014900400149000300e001490001ffc00149b2080b4641250148
+003d0147005500400147000100df01470001000001470020014700300147000300080145003d
+01460055002f0144003f01440002000f0144001f0144000200ff0144000100400144b3353946
+40b80144b31f274640b80144b20f1546412c0132003d0131005501310001012f00550130003d
+012f0055013f000101390055013e000101390055014201400014001f01410140001f001f013b
+0033013a00550138003301390055004001070001001f01070001009f010440aa01c0fd01affd
+0100fd010a4ffb0120fb01f550281ff246281ff1462a1ff0462b1f5fef7fef020fef4fef5fef
+8fefafef050be5e41e1fe3e2461f0fe20140e246161fe1e0461fcfe0dfe0efe00340e0333646
+e046181feeedff1fed01e855ec48eb55ea320055e9e8e855e7480055e600ff1fdd3ddf55df01
+0355de3d0355dc03ff1f0fd51fd5020fd51fd50240ca181b46cfc201bdc03c1fc150261fbcbe
+281fffb90150b870b880b803b8ffc040ffb81232461fb73fb74fb76fb77fb79fb7afb70718b6
+0170b2a0b2b0b2030fb20190b501b0b5010fb501080fb33fb3efb30380b090b002b0b0c0b0d0
+b0032faf3faf02a0adb0ad02c0add0ad022fac3fac029fab01c0aad0aa024fa98fa9022fa96f
+a9bfa9ffa9049c9b241f509b016f9601bf960196461d1f9594171f0f941f947f948f94ff9405
+3091409102809101708f808f02908f01c08fd08f024f8c5f8c6f8c038646ff1f9f8501848331
+1f74733f1f7350261f6f6e3c1f6e46351f1a01185519331855073303550603ff1f6050261f5f
+50261f5c46311f5b5a481f5a46311f1332125505010355043203556c03010c033c034c036c03
+7c0305ef51ff4064510240513538464051252846cf50014946201f4846351f4746351faf4601
+df46ef46028046011632155511010f5510320f55020100550100011f1f0f3f0f5f0f7f0f040f
+0f2f0f4f0f6f0f8f0fdf0fff0f073f0f7f0fef0f036f00014f00010380800501b9019000542b
+4bb807ff524bb007505bb00188b02553b00188b040515ab00688b000555a5b58b101018e5985
+8d8d001d424bb0325358b20360601d42594bb0645358b20340401d42594bb0805358b2031010
+1d425973747374752b2b2b2b2b017374752b2b2b00742b2b7373752b2b2b012b2b2b002b2b2b
+2b2b2b012b2b002b2b012b732b00747374757374732b012b747500732b737401737374007374
+74737473015e73737473730073732b7373012b002b012b00732b74752b2b2b2b2b2b2b2b2b2b
+2b012b2b742b2b5e732b002b5e7374012b2b2b002b73735e73737301737373002b2b2b2b2b2b
+2b2b2b2b2b2b7374752b5e7373742b2b73742b185e0000>
+] def
+/f-0-0 currentdict end definefont pop
+%%EndResource
%%EndSetup
%%Page: 1 1
-0 160 translate
-0.8 -0.8 scale
-0 0 0 setrgbcolor
-[] 0 setdash
-1 setlinewidth
-0 setlinejoin
-0 setlinecap
-gsave [1 0 0 1 0 0] concat
-gsave
-0.84705883 0.84705883 0.84705883 setrgbcolor
-newpath
-106 21 moveto
-194 21 lineto
-194 58.999996 lineto
-106 58.999996 lineto
-106 21 lineto
-closepath
-fill
-grestore
-0 0 0 setrgbcolor
-[] 0 setdash
-2.0000002 setlinewidth
-0 setlinejoin
-0 setlinecap
-newpath
-106 21 moveto
-194 21 lineto
-194 58.999996 lineto
-106 58.999996 lineto
-106 21 lineto
-closepath
-stroke
-gsave
-0.84705883 0.84705883 0.84705883 setrgbcolor
-newpath
-106 81 moveto
-194 81 lineto
-194 119 lineto
-106 119 lineto
-106 81 lineto
-closepath
-fill
-grestore
-0 0 0 setrgbcolor
-[] 0 setdash
-2.0000002 setlinewidth
-0 setlinejoin
-0 setlinecap
-newpath
-106 81 moveto
-194 81 lineto
-194 119 lineto
-106 119 lineto
-106 81 lineto
-closepath
-stroke
-gsave
-0.84705883 0.84705883 0.84705883 setrgbcolor
-newpath
-206 81 moveto
-294 81 lineto
-294 119 lineto
-206 119 lineto
-206 81 lineto
-closepath
-fill
-grestore
-0 0 0 setrgbcolor
-[] 0 setdash
-2.0000002 setlinewidth
-0 setlinejoin
-0 setlinecap
-newpath
-206 81 moveto
-294 81 lineto
-294 119 lineto
-206 119 lineto
-206 81 lineto
-closepath
-stroke
-gsave
-0.84705883 0.84705883 0.84705883 setrgbcolor
-newpath
-6 81 moveto
-94 81 lineto
-94 119 lineto
-6 119 lineto
-6 81 lineto
-closepath
-fill
-grestore
-0 0 0 setrgbcolor
-[] 0 setdash
-2.0000002 setlinewidth
-0 setlinejoin
-0 setlinecap
-newpath
-6 81 moveto
-94 81 lineto
-94 119 lineto
-6 119 lineto
-6 81 lineto
-closepath
-stroke
-gsave
-0.84705883 0.84705883 0.84705883 setrgbcolor
-newpath
-6 141 moveto
-94 141 lineto
-94 179 lineto
-6 179 lineto
-6 141 lineto
-closepath
-fill
-grestore
-0 0 0 setrgbcolor
-[] 0 setdash
-2.0000002 setlinewidth
-0 setlinejoin
-0 setlinecap
-newpath
-6 141 moveto
-94 141 lineto
-94 179 lineto
-6 179 lineto
-6 141 lineto
-closepath
-stroke
-0 0 0 setrgbcolor
-[] 0 setdash
-2 setlinewidth
-0 setlinejoin
-0 setlinecap
-newpath
-150 80 moveto
-150 70 lineto
-250 70 lineto
-250 80 lineto
-stroke
-0 0 0 setrgbcolor
-[] 0 setdash
-2 setlinewidth
-0 setlinejoin
-0 setlinecap
-newpath
-50 80 moveto
-50 70 lineto
-150 70 lineto
-150 60 lineto
-stroke
-gsave
-0 0 0 setrgbcolor
-newpath
-131.14757 45.021484 moveto
-127.26476 35 lineto
-128.7003 35 lineto
-131.30479 42.280273 lineto
-131.51443 42.863609 131.68988 43.410483 131.83116 43.920898 curveto
-131.9861 43.374025 132.16612 42.827151 132.3712 42.280273 curveto
-135.07823 35 lineto
-136.43175 35 lineto
-132.50792 45.021484 lineto
-131.14757 45.021484 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-142.44737 42.683594 moveto
-143.71886 42.84082 lineto
-143.51833 43.58366 143.14691 44.160157 142.6046 44.570313 curveto
-142.06228 44.980469 141.36957 45.185547 140.52647 45.185547 curveto
-139.46462 45.185547 138.62266 44.858561 138.0006 44.20459 curveto
-137.37852 43.55062 137.06749 42.633466 137.06749 41.453125 curveto
-137.06749 40.231776 137.38194 39.28386 138.01085 38.609375 curveto
-138.63975 37.934903 139.45551 37.597664 140.45811 37.597656 curveto
-141.42881 37.597664 142.22178 37.928067 142.83702 38.588867 curveto
-143.45225 39.24968 143.75987 40.179367 143.75987 41.37793 curveto
-143.75987 41.45085 143.75759 41.560225 143.75304 41.706055 curveto
-138.33897 41.706055 lineto
-138.38455 42.503583 138.61013 43.11426 139.01573 43.538086 curveto
-139.42133 43.961915 139.92719 44.173829 140.53331 44.173828 curveto
-140.98448 44.173829 141.36957 44.05534 141.68858 43.818359 curveto
-142.00759 43.581382 142.26052 43.203127 142.44737 42.683594 curveto
-142.44737 42.683594 lineto
-closepath
-138.40733 40.694336 moveto
-142.46104 40.694336 lineto
-142.40635 40.083664 142.2514 39.625656 141.9962 39.320313 curveto
-141.60427 38.84636 141.09613 38.609381 140.47179 38.609375 curveto
-139.90668 38.609381 139.43158 38.798509 139.04649 39.176758 curveto
-138.6614 39.555018 138.44835 40.060877 138.40733 40.694336 curveto
-138.40733 40.694336 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-145.27061 45.021484 moveto
-145.27061 35 lineto
-146.50108 35 lineto
-146.50108 38.595703 lineto
-147.0753 37.930346 147.79991 37.597664 148.67491 37.597656 curveto
-149.21267 37.597664 149.67979 37.703621 150.07628 37.915527 curveto
-150.47276 38.127448 150.75645 38.420254 150.92735 38.793945 curveto
-151.09824 39.167649 151.18369 39.709966 151.1837 40.420898 curveto
-151.1837 45.021484 lineto
-149.95323 45.021484 lineto
-149.95323 40.420898 lineto
-149.95323 39.805669 149.81993 39.357916 149.55333 39.077637 curveto
-149.28672 38.79737 148.90961 38.657233 148.42198 38.657227 curveto
-148.05739 38.657233 147.71446 38.751797 147.39317 38.940918 curveto
-147.07188 39.130051 146.84288 39.386399 146.70616 39.709961 curveto
-146.56944 40.033534 146.50108 40.480148 146.50108 41.049805 curveto
-146.50108 45.021484 lineto
-145.27061 45.021484 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-153.07042 36.415039 moveto
-153.07042 35 lineto
-154.30089 35 lineto
-154.30089 36.415039 lineto
-153.07042 36.415039 lineto
-closepath
-153.07042 45.021484 moveto
-153.07042 37.761719 lineto
-154.30089 37.761719 lineto
-154.30089 45.021484 lineto
-153.07042 45.021484 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-160.91808 42.362305 moveto
-162.12804 42.519531 lineto
-161.99587 43.353517 161.65749 44.006349 161.1129 44.478027 curveto
-160.5683 44.949707 159.89952 45.185547 159.10655 45.185547 curveto
-158.11306 45.185547 157.3144 44.86084 156.71056 44.211426 curveto
-156.10671 43.562013 155.80479 42.631187 155.80479 41.418945 curveto
-155.80479 40.635096 155.93468 39.949224 156.19444 39.361328 curveto
-156.45421 38.773444 156.84955 38.332526 157.38048 38.038574 curveto
-157.9114 37.744636 158.48904 37.597664 159.11339 37.597656 curveto
-159.90179 37.597664 160.54665 37.797045 161.04796 38.195801 curveto
-161.54925 38.59457 161.87054 39.160813 162.01183 39.894531 curveto
-160.81554 40.079102 lineto
-160.7016 39.591477 160.49994 39.224615 160.21056 38.978516 curveto
-159.92116 38.732428 159.57139 38.609381 159.16124 38.609375 curveto
-158.54144 38.609381 158.03786 38.831549 157.6505 39.275879 curveto
-157.26313 39.72022 157.06944 40.423182 157.06944 41.384766 curveto
-157.06944 42.360029 157.25629 43.068687 157.62999 43.510742 curveto
-158.00368 43.952801 158.49131 44.173829 159.09288 44.173828 curveto
-159.57595 44.173829 159.97927 44.025717 160.30284 43.729492 curveto
-160.6264 43.43327 160.83148 42.977541 160.91808 42.362305 curveto
-160.91808 42.362305 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-163.15343 45.021484 moveto
-163.15343 35 lineto
-164.3839 35 lineto
-164.3839 45.021484 lineto
-163.15343 45.021484 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-171.26768 42.683594 moveto
-172.53917 42.84082 lineto
-172.33864 43.58366 171.96722 44.160157 171.42491 44.570313 curveto
-170.88259 44.980469 170.18988 45.185547 169.34679 45.185547 curveto
-168.28493 45.185547 167.44298 44.858561 166.82091 44.20459 curveto
-166.19884 43.55062 165.8878 42.633466 165.8878 41.453125 curveto
-165.8878 40.231776 166.20225 39.28386 166.83116 38.609375 curveto
-167.46007 37.934903 168.27582 37.597664 169.27843 37.597656 curveto
-170.24913 37.597664 171.04209 37.928067 171.65733 38.588867 curveto
-172.27256 39.24968 172.58018 40.179367 172.58018 41.37793 curveto
-172.58018 41.45085 172.5779 41.560225 172.57335 41.706055 curveto
-167.15929 41.706055 lineto
-167.20486 42.503583 167.43044 43.11426 167.83604 43.538086 curveto
-168.24164 43.961915 168.7475 44.173829 169.35362 44.173828 curveto
-169.80479 44.173829 170.18988 44.05534 170.5089 43.818359 curveto
-170.8279 43.581382 171.08083 43.203127 171.26768 42.683594 curveto
-171.26768 42.683594 lineto
-closepath
-167.22765 40.694336 moveto
-171.28136 40.694336 lineto
-171.22666 40.083664 171.07172 39.625656 170.81651 39.320313 curveto
-170.42458 38.84636 169.91644 38.609381 169.2921 38.609375 curveto
-168.72699 38.609381 168.25189 38.798509 167.86681 39.176758 curveto
-167.48171 39.555018 167.26866 40.060877 167.22765 40.694336 curveto
-167.22765 40.694336 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-35.562778 104.92827 moveto
-35.562778 94.906784 lineto
-36.88895 94.906784 lineto
-36.88895 103.74565 lineto
-41.824497 103.74565 lineto
-41.824497 104.92827 lineto
-35.562778 104.92827 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-47.990513 104.03276 moveto
-47.534778 104.42013 47.09614 104.69357 46.674595 104.85307 curveto
-46.253041 105.01258 45.800731 105.09233 45.317661 105.09233 curveto
-44.520133 105.09233 43.907178 104.89751 43.478794 104.50786 curveto
-43.050408 104.11821 42.836215 103.62033 42.836216 103.01421 curveto
-42.836215 102.65874 42.917107 102.33403 43.078892 102.04008 curveto
-43.240675 101.74614 43.452589 101.5103 43.714634 101.33257 curveto
-43.976677 101.15483 44.271761 101.02039 44.599888 100.92924 curveto
-44.841422 100.86545 45.206005 100.80392 45.693638 100.74467 curveto
-46.687123 100.62619 47.418568 100.48491 47.887974 100.32085 curveto
-47.892526 100.15223 47.894804 100.04514 47.89481 99.999557 curveto
-47.894804 99.498261 47.778593 99.145071 47.546177 98.939987 curveto
-47.231719 98.661999 46.764597 98.523001 46.14481 98.522995 curveto
-45.56603 98.523001 45.138785 98.624401 44.863071 98.827194 curveto
-44.587353 99.03 44.383414 99.388886 44.251255 99.903854 curveto
-43.04813 99.739792 lineto
-43.157504 99.224824 43.337517 98.808971 43.588169 98.492233 curveto
-43.838819 98.175508 44.201123 97.931693 44.675083 97.760788 curveto
-45.149039 97.589897 45.698192 97.504448 46.322544 97.50444 curveto
-46.942331 97.504448 47.445911 97.577364 47.833286 97.72319 curveto
-48.22065 97.869031 48.505481 98.052462 48.687778 98.273483 curveto
-48.870064 98.494518 48.997668 98.773652 49.070591 99.110886 curveto
-49.1116 99.320527 49.132108 99.698781 49.132114 100.24565 curveto
-49.132114 101.88628 lineto
-49.132108 103.03016 49.158312 103.75363 49.210728 104.05669 curveto
-49.26313 104.35975 49.366808 104.65027 49.521763 104.92827 curveto
-48.236607 104.92827 lineto
-48.108997 104.67306 48.026965 104.37456 47.990513 104.03276 curveto
-47.990513 104.03276 lineto
-closepath
-47.887974 101.28471 moveto
-47.441354 101.46701 46.771433 101.62196 45.878208 101.74956 curveto
-45.372346 101.82248 45.014599 101.90451 44.804966 101.99565 curveto
-44.595328 102.0868 44.433545 102.2201 44.319614 102.39555 curveto
-44.20568 102.57101 44.148714 102.76584 44.148716 102.98003 curveto
-44.148714 103.30815 44.2729 103.58159 44.521275 103.80034 curveto
-44.769645 104.01909 45.133088 104.12846 45.611607 104.12846 curveto
-46.085561 104.12846 46.50711 104.02479 46.876255 103.81743 curveto
-47.245391 103.61007 47.516549 103.32638 47.689732 102.96635 curveto
-47.821888 102.68836 47.887968 102.27821 47.887974 101.73589 curveto
-47.887974 101.28471 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-51.046177 104.92827 moveto
-51.046177 97.668503 lineto
-52.153599 97.668503 lineto
-52.153599 98.700729 lineto
-52.686799 97.90321 53.456981 97.504448 54.464146 97.50444 curveto
-54.901641 97.504448 55.303821 97.583061 55.670689 97.74028 curveto
-56.037545 97.897514 56.312121 98.103731 56.494419 98.358932 curveto
-56.676704 98.614147 56.804308 98.917207 56.877232 99.268112 curveto
-56.922798 99.495982 56.945584 99.894745 56.945591 100.4644 curveto
-56.945591 104.92827 lineto
-55.715122 104.92827 lineto
-55.715122 100.51225 lineto
-55.715117 100.01096 55.667265 99.636119 55.571568 99.387741 curveto
-55.475859 99.139374 55.3061 98.941132 55.06229 98.793015 curveto
-54.81847 98.644909 54.532501 98.570853 54.20438 98.570847 curveto
-53.680288 98.570853 53.227977 98.737194 52.847446 99.06987 curveto
-52.46691 99.402558 52.276644 100.03374 52.276646 100.96342 curveto
-52.276646 104.92827 lineto
-51.046177 104.92827 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-63.549107 104.92827 moveto
-63.549107 104.01225 lineto
-63.088815 104.73231 62.412058 105.09233 61.518833 105.09233 curveto
-60.940054 105.09233 60.407991 104.93283 59.922642 104.61382 curveto
-59.437289 104.29481 59.061312 103.84933 58.794712 103.27739 curveto
-58.52811 102.70545 58.394809 102.04806 58.39481 101.30522 curveto
-58.394809 100.58062 58.515577 99.923228 58.757114 99.333054 curveto
-58.99865 98.742891 59.360954 98.29058 59.844028 97.97612 curveto
-60.327099 97.661674 60.867138 97.504448 61.464146 97.50444 curveto
-61.901642 97.504448 62.29129 97.596733 62.633091 97.781296 curveto
-62.974883 97.965873 63.252877 98.20627 63.467075 98.502487 curveto
-63.467075 94.906784 lineto
-64.690708 94.906784 lineto
-64.690708 104.92827 lineto
-63.549107 104.92827 lineto
-closepath
-59.659458 101.30522 moveto
-59.659456 102.23491 59.85542 102.9299 60.247349 103.39018 curveto
-60.639273 103.85047 61.101838 104.08061 61.635044 104.08061 curveto
-62.1728 104.08061 62.629668 103.86072 63.00565 103.42094 curveto
-63.381621 102.98117 63.569609 102.31011 63.569614 101.40776 curveto
-63.569609 100.41428 63.378203 99.68511 62.995396 99.220261 curveto
-62.612578 98.755423 62.140899 98.523001 61.580357 98.522995 curveto
-61.033478 98.523001 60.57661 98.746308 60.209751 99.192917 curveto
-59.842887 99.639537 59.659456 100.34364 59.659458 101.30522 curveto
-59.659458 101.30522 lineto
-closepath
-fill
-grestore
-0 0 0 setrgbcolor
-[] 0 setdash
-2 setlinewidth
-0 setlinejoin
-0 setlinecap
-newpath
-50 120 moveto
-50 140 lineto
-stroke
-gsave
-0 0 0 setrgbcolor
-newpath
-133.92017 105.07926 moveto
-131.26099 95.057777 lineto
-132.62134 95.057777 lineto
-134.14575 101.62711 lineto
-134.30981 102.31527 134.45109 102.99886 134.56958 103.67789 curveto
-134.82478 102.60693 134.97518 101.98942 135.02075 101.82536 curveto
-136.92798 95.057777 lineto
-138.52759 95.057777 lineto
-139.96313 100.13004 lineto
-140.32315 101.38786 140.58292 102.57048 140.74243 103.67789 curveto
-140.87003 103.04443 141.03637 102.31755 141.24146 101.49723 curveto
-142.81372 95.057777 lineto
-144.14673 95.057777 lineto
-141.39868 105.07926 lineto
-140.12036 105.07926 lineto
-138.00806 97.44352 lineto
-137.83032 96.805507 137.7255 96.41358 137.6936 96.267738 curveto
-137.58878 96.728033 137.4908 97.11996 137.39966 97.44352 curveto
-135.27368 105.07926 lineto
-133.92017 105.07926 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-149.95728 104.18375 moveto
-149.50154 104.57112 149.0629 104.84456 148.64136 105.00407 curveto
-148.2198 105.16357 147.76749 105.24332 147.28442 105.24332 curveto
-146.4869 105.24332 145.87394 105.0485 145.44556 104.65885 curveto
-145.01717 104.2692 144.80298 103.77132 144.80298 103.1652 curveto
-144.80298 102.80973 144.88387 102.48503 145.04565 102.19108 curveto
-145.20744 101.89714 145.41935 101.6613 145.6814 101.48356 curveto
-145.94344 101.30583 146.23852 101.17139 146.56665 101.08024 curveto
-146.80818 101.01644 147.17277 100.95492 147.6604 100.89567 curveto
-148.65389 100.77718 149.38533 100.63591 149.85474 100.47184 curveto
-149.85929 100.30322 149.86157 100.19613 149.86157 100.15055 curveto
-149.86157 99.649254 149.74536 99.296064 149.51294 99.090981 curveto
-149.19848 98.812992 148.73136 98.673995 148.11157 98.673988 curveto
-147.53279 98.673995 147.10555 98.775394 146.82983 98.978188 curveto
-146.55412 99.180993 146.35018 99.539879 146.21802 100.05485 curveto
-145.01489 99.890785 lineto
-145.12427 99.375817 145.30428 98.959965 145.55493 98.643227 curveto
-145.80558 98.326502 146.16789 98.082687 146.64185 97.911781 curveto
-147.1158 97.74089 147.66495 97.655441 148.28931 97.655434 curveto
-148.90909 97.655441 149.41267 97.728358 149.80005 97.874184 curveto
-150.18741 98.020024 150.47224 98.203455 150.65454 98.424477 curveto
-150.83683 98.645512 150.96443 98.924646 151.03735 99.261879 curveto
-151.07836 99.47152 151.09887 99.849775 151.09888 100.39664 curveto
-151.09888 102.03727 lineto
-151.09887 103.18115 151.12507 103.90462 151.17749 104.20768 curveto
-151.22989 104.51074 151.33357 104.80127 151.48853 105.07926 curveto
-150.20337 105.07926 lineto
-150.07576 104.82405 149.99373 104.52555 149.95728 104.18375 curveto
-149.95728 104.18375 lineto
-closepath
-149.85474 101.43571 moveto
-149.40812 101.618 148.7382 101.77295 147.84497 101.90055 curveto
-147.33911 101.97347 146.98136 102.0555 146.77173 102.14664 curveto
-146.56209 102.23779 146.40031 102.37109 146.28638 102.54655 curveto
-146.17244 102.72201 146.11548 102.91683 146.11548 103.13102 curveto
-146.11548 103.45915 146.23966 103.73258 146.48804 103.95133 curveto
-146.73641 104.17008 147.09985 104.27946 147.57837 104.27946 curveto
-148.05232 104.27946 148.47387 104.17578 148.84302 103.96842 curveto
-149.21215 103.76107 149.48331 103.47738 149.65649 103.11735 curveto
-149.78865 102.83936 149.85473 102.4292 149.85474 101.88688 curveto
-149.85474 101.43571 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-155.69946 103.97868 moveto
-155.8772 105.06559 lineto
-155.53084 105.13851 155.22094 105.17496 154.94751 105.17496 curveto
-154.50089 105.17496 154.15454 105.10433 153.90845 104.96305 curveto
-153.66235 104.82178 153.48918 104.63607 153.38892 104.40592 curveto
-153.28865 104.17578 153.23852 103.69157 153.23853 102.95329 curveto
-153.23853 98.776527 lineto
-152.33618 98.776527 lineto
-152.33618 97.819496 lineto
-153.23853 97.819496 lineto
-153.23853 96.021645 lineto
-154.46216 95.283363 lineto
-154.46216 97.819496 lineto
-155.69946 97.819496 lineto
-155.69946 98.776527 lineto
-154.46216 98.776527 lineto
-154.46216 103.02164 lineto
-154.46216 103.37256 154.4838 103.59814 154.5271 103.6984 curveto
-154.57039 103.79866 154.64103 103.87842 154.73901 103.93766 curveto
-154.83699 103.99691 154.97713 104.02653 155.15942 104.02653 curveto
-155.29614 104.02653 155.47615 104.01058 155.69946 103.97868 curveto
-155.69946 103.97868 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-161.86548 102.74137 moveto
-163.13696 102.8986 lineto
-162.93644 103.64144 162.56502 104.21793 162.02271 104.62809 curveto
-161.48038 105.03825 160.78767 105.24332 159.94458 105.24332 curveto
-158.88273 105.24332 158.04077 104.91634 157.4187 104.26237 curveto
-156.79663 103.6084 156.4856 102.69124 156.4856 101.5109 curveto
-156.4856 100.28955 156.80005 99.341637 157.42896 98.667152 curveto
-158.05786 97.99268 158.87361 97.655441 159.87622 97.655434 curveto
-160.84692 97.655441 161.63989 97.985844 162.25513 98.646645 curveto
-162.87035 99.307458 163.17797 100.23714 163.17798 101.43571 curveto
-163.17797 101.50863 163.17569 101.618 163.17114 101.76383 curveto
-157.75708 101.76383 lineto
-157.80265 102.56136 158.02824 103.17204 158.43384 103.59586 curveto
-158.83943 104.01969 159.34529 104.23161 159.95142 104.23161 curveto
-160.40258 104.23161 160.78767 104.11312 161.10669 103.87614 curveto
-161.42569 103.63916 161.67862 103.2609 161.86548 102.74137 curveto
-161.86548 102.74137 lineto
-closepath
-157.82544 100.75211 moveto
-161.87915 100.75211 lineto
-161.82446 100.14144 161.66951 99.683434 161.41431 99.37809 curveto
-161.02237 98.904138 160.51424 98.667159 159.88989 98.667152 curveto
-159.32479 98.667159 158.84969 98.856286 158.4646 99.234535 curveto
-158.07951 99.612796 157.86645 100.11865 157.82544 100.75211 curveto
-157.82544 100.75211 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-164.67505 105.07926 moveto
-164.67505 97.819496 lineto
-165.78247 97.819496 lineto
-165.78247 98.920082 lineto
-166.06502 98.405115 166.32593 98.065597 166.56519 97.901527 curveto
-166.80444 97.737472 167.06762 97.655441 167.35474 97.655434 curveto
-167.76945 97.655441 168.19099 97.787602 168.61938 98.051918 curveto
-168.19556 99.19352 lineto
-167.89477 99.015791 167.59399 98.926924 167.29321 98.926918 curveto
-167.02433 98.926924 166.78279 99.007816 166.5686 99.169594 curveto
-166.35441 99.331383 166.20174 99.55583 166.1106 99.842934 curveto
-165.97387 100.28044 165.90552 100.75895 165.90552 101.27848 curveto
-165.90552 105.07926 lineto
-164.67505 105.07926 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-241.39774 105.02148 moveto
-245.24637 94.999992 lineto
-246.67508 94.999992 lineto
-250.77664 105.02148 lineto
-249.2659 105.02148 lineto
-248.09695 101.98632 lineto
-243.90652 101.98632 lineto
-242.80594 105.02148 lineto
-241.39774 105.02148 lineto
-closepath
-244.28934 100.90624 moveto
-247.6868 100.90624 lineto
-246.6409 98.130852 lineto
-246.32188 97.287761 246.08491 96.595053 245.92996 96.052727 curveto
-245.80235 96.695313 245.62234 97.333333 245.38992 97.966789 curveto
-244.28934 100.90624 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-251.69949 96.415031 moveto
-251.69949 94.999992 lineto
-252.92996 94.999992 lineto
-252.92996 96.415031 lineto
-251.69949 96.415031 lineto
-closepath
-251.69949 105.02148 moveto
-251.69949 97.761711 lineto
-252.92996 97.761711 lineto
-252.92996 105.02148 lineto
-251.69949 105.02148 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-254.79617 105.02148 moveto
-254.79617 97.761711 lineto
-255.90359 97.761711 lineto
-255.90359 98.862297 lineto
-256.18614 98.34733 256.44705 98.007812 256.68631 97.843742 curveto
-256.92556 97.679687 257.18875 97.597656 257.47586 97.597649 curveto
-257.89057 97.597656 258.31212 97.729817 258.74051 97.994133 curveto
-258.31668 99.135735 lineto
-258.0159 98.958006 257.71511 98.869139 257.41434 98.869133 curveto
-257.14545 98.869139 256.90392 98.950031 256.68973 99.111809 curveto
-256.47553 99.273598 256.32286 99.498045 256.23172 99.785149 curveto
-256.095 100.22265 256.02664 100.70117 256.02664 101.2207 curveto
-256.02664 105.02148 lineto
-254.79617 105.02148 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-35.629951 164.86845 moveto
-39.478584 154.84697 lineto
-40.907295 154.84697 lineto
-45.008858 164.86845 lineto
-43.498116 164.86845 lineto
-42.32917 161.8333 lineto
-38.138741 161.8333 lineto
-37.038155 164.86845 lineto
-35.629951 164.86845 lineto
-closepath
-38.521553 160.75322 moveto
-41.919014 160.75322 lineto
-40.873116 157.97783 lineto
-40.5541 157.13474 40.317121 156.44203 40.162178 155.8997 curveto
-40.034569 156.54229 39.854557 157.18031 39.622139 157.81377 curveto
-38.521553 160.75322 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-50.682686 164.86845 moveto
-50.682686 163.80205 lineto
-50.117577 164.62236 49.349674 165.03252 48.378975 165.03252 curveto
-47.950587 165.03252 47.550685 164.95049 47.179268 164.78642 curveto
-46.807847 164.62236 46.532131 164.41614 46.352119 164.16777 curveto
-46.172105 163.9194 46.045641 163.6152 45.972725 163.25517 curveto
-45.922594 163.01364 45.897529 162.63083 45.89753 162.10674 curveto
-45.89753 157.60869 lineto
-47.127998 157.60869 lineto
-47.127998 161.63506 lineto
-47.127996 162.27764 47.153061 162.71058 47.203194 162.93388 curveto
-47.280665 163.25745 47.444728 163.51152 47.695381 163.69609 curveto
-47.946029 163.88066 48.255925 163.97295 48.625069 163.97295 curveto
-48.994205 163.97295 49.340559 163.87838 49.664131 163.68925 curveto
-49.987694 163.50013 50.216698 163.24264 50.351143 162.91679 curveto
-50.485578 162.59095 50.552797 162.11813 50.552803 161.49834 curveto
-50.552803 157.60869 lineto
-51.783272 157.60869 lineto
-51.783272 164.86845 lineto
-50.682686 164.86845 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-56.404366 163.76787 moveto
-56.5821 164.85478 lineto
-56.235742 164.9277 55.925847 164.96416 55.652412 164.96416 curveto
-55.205795 164.96416 54.859442 164.89352 54.61335 164.75224 curveto
-54.367255 164.61097 54.194078 164.42526 54.093819 164.19511 curveto
-53.993557 163.96497 53.943427 163.48076 53.943428 162.74248 curveto
-53.943428 158.56572 lineto
-53.041084 158.56572 lineto
-53.041084 157.60869 lineto
-53.943428 157.60869 lineto
-53.943428 155.81084 lineto
-55.167061 155.07256 lineto
-55.167061 157.60869 lineto
-56.404366 157.60869 lineto
-56.404366 158.56572 lineto
-55.167061 158.56572 lineto
-55.167061 162.81084 lineto
-55.167058 163.16175 55.188706 163.38734 55.232002 163.48759 curveto
-55.275294 163.58786 55.345932 163.66761 55.443916 163.72685 curveto
-55.541895 163.7861 55.682032 163.81572 55.864326 163.81572 curveto
-56.001042 163.81572 56.181055 163.79977 56.404366 163.76787 curveto
-56.404366 163.76787 lineto
-closepath
-fill
-grestore
-gsave
-0 0 0 setrgbcolor
-newpath
-57.142647 161.23857 moveto
-57.142646 159.89418 57.516344 158.89841 58.263741 158.25127 curveto
-58.888087 157.71351 59.649154 157.44463 60.546944 157.44463 curveto
-61.544986 157.44463 62.36074 157.77162 62.994209 158.42558 curveto
-63.627666 159.07956 63.944397 159.98304 63.944405 161.13603 curveto
-63.944397 162.07028 63.804261 162.80514 63.523994 163.34062 curveto
-63.243714 163.8761 62.835837 164.29196 62.300362 164.58818 curveto
-61.764875 164.8844 61.180403 165.03252 60.546944 165.03252 curveto
-59.530665 165.03252 58.709214 164.70667 58.082588 164.05498 curveto
-57.45596 163.40329 57.142646 162.46449 57.142647 161.23857 curveto
-57.142647 161.23857 lineto
-closepath
-58.407295 161.23857 moveto
-58.407293 162.16826 58.610093 162.86439 59.015694 163.32695 curveto
-59.42129 163.78952 59.931706 164.0208 60.546944 164.0208 curveto
-61.157616 164.0208 61.665754 163.78838 62.071358 163.32353 curveto
-62.476951 162.85869 62.67975 162.15003 62.679756 161.19756 curveto
-62.67975 160.29977 62.475812 159.6196 62.06794 159.15703 curveto
-61.660057 158.69447 61.153059 158.46319 60.546944 158.46318 curveto
-59.931706 158.46319 59.42129 158.69333 59.015694 159.15361 curveto
-58.610093 159.6139 58.407293 160.30889 58.407295 161.23857 curveto
-58.407295 161.23857 lineto
-closepath
-fill
-grestore
-grestore
+%%BeginPageSetup
+%%PageBoundingBox: 0 -1 232 128
+%%EndPageSetup
+q 0 -1 232 129 rectclip q
+0.847059 g
+80.801 127.199 70.398 -30.398 re f
+0 g
+1.6 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 -1 0 127.999992 cm
+80.801 0.801 70.398 30.398 re S Q
+0.847059 g
+80.801 79.199 70.398 -30.398 re f
+0 g
+q 1 0 0 -1 0 127.999992 cm
+80.801 48.801 70.398 30.398 re S Q
+0.847059 g
+160.801 79.199 70.398 -30.398 re f
+0 g
+q 1 0 0 -1 0 127.999992 cm
+160.801 48.801 70.398 30.398 re S Q
+0.847059 g
+0.801 79.199 70.398 -30.398 re f
+0 g
+q 1 0 0 -1 0 127.999992 cm
+0.801 48.801 70.398 30.398 re S Q
+0.847059 g
+0.801 31.199 70.398 -30.398 re f
+0 g
+q 1 0 0 -1 0 127.999992 cm
+0.801 96.801 70.398 30.398 re S Q
+1.6 w
+q 1 0 0 -1 0 127.999992 cm
+116 48 m 116 40 l 196 40 l 196 48 l S Q
+q 1 0 0 -1 0 127.999992 cm
+36 48 m 36 40 l 116 40 l 116 32 l S Q
+BT
+11.2 0 0 11.2 97.762581 107.982806 Tm
+/f-0-0 1 Tf
+[(V)54(ehicle)]TJ
+-6.618988 -4.279055 Td
+[(Land)]TJ
+ET
+q 1 0 0 -1 0 127.999992 cm
+36 80 m 36 96 l S Q
+BT
+11.2 0 0 11.2 100.872067 59.93658 Tm
+/f-0-0 1 Tf
+[(W)38(ater)]TJ
+7.880582 0.00412754 Td
+[(Air)]TJ
+-14.697698 -4.274784 Td
+(Car)Tj
+ET
+Q Q
showpage
+%%Trailer
+end restore
%%EOF
diff --git a/annotations/yo/inheritance/accessrights.yo b/annotations/yo/inheritance/accessrights.yo
index 60559ff8..49c3ec12 100644
--- a/annotations/yo/inheritance/accessrights.yo
+++ b/annotations/yo/inheritance/accessrights.yo
@@ -1,7 +1,7 @@
Early in the annotations() (cf. section ref(HIDING)) we encountered two
important design principles when developing classes: em(data hiding) and
em(encapsulation). Data hiding restricts control over an object's data to the
-members of its class, encapsulating is used to restrict access to the
+members of its class, encapsulation is used to restrict access to the
functionality of objects. Both principles are invaluable tools for maintaining
data integrity.
@@ -15,13 +15,13 @@ requests sent to objects are handled. In a well-designed class its objects are
in full control of their data.
Inheritance doesn't change these principles, nor does it change the way the
-tt(private) and tt(protected) keywords operate. A derived class does not have
-access to a base class's private section.
+`tt(private)' and `tt(protected)' keywords operate. A derived class does not
+have access to a base class's private section.
Sometimes this is a bit too restrictive. Consider a class implementing a
random number generating tt(streambuf) (cf. chapter ref(IOStreams)). Such a
tt(streambuf) can be used to construct an tt(istream irand), after which
-extractions from tt(irand) produces the next random number, like in the next
+extractions from tt(irand) produces series of random numbers, like in the next
example in which 10 random numbers are generated using stream I/O:
verb(
RandBuf buffer;
@@ -43,8 +43,9 @@ number. RandBuf, therefore, operates as follows:
it() It is passed in textual form to its base class tt(streambuf);
it() The tt(istream) object extracts this random number, merely
using tt(streambuf)'s interface;
- it() this process is repeated for subsequent random numbers;
)
+ (this process is repeated for subsequent random numbers).
+
Once tt(RandBuf) has stored the text representation of the next
random number in some buffer, it must tell its base class (tt(streambuf))
where to find the random number's characters. For this tt(streambuf) offers a
diff --git a/annotations/yo/inheritance/constructor.yo b/annotations/yo/inheritance/constructor.yo
index 73b5b3f0..f60a3e46 100644
--- a/annotations/yo/inheritance/constructor.yo
+++ b/annotations/yo/inheritance/constructor.yo
@@ -15,7 +15,7 @@ follows:
Land::Land(size_t mass, size_t speed)
{
setMass(mass);
- setspeed(speed);
+ setSpeed(speed);
}
)
However, this implementation has several disadvantages.
@@ -27,7 +27,7 @@ called.
it() Using the base class constructor only to reassign new values to its
data members in the derived class constructor's body usually is inefficient,
but sometimes sheer impossible as in situations where base class reference or
-const data members must be initialized. In those cases a specialized base
+tt(const) data members must be initialized. In those cases a specialized base
class constructor must be used instead of the base class default constructor.
)
A derived class's base class may be initialized using a dedicated base
diff --git a/annotations/yo/inheritance/depth.yo b/annotations/yo/inheritance/depth.yo
index 040a37f3..918af579 100644
--- a/annotations/yo/inheritance/depth.yo
+++ b/annotations/yo/inheritance/depth.yo
@@ -23,7 +23,7 @@ features are used, but others need to be shielded off. Consider the tt(stack)
container: it is commonly implemented in-terms-of a tt(deque), returning
tt(deque::back)'s value as tt(stack::top)'s value.
-When using inheritance to implement an tt(is-a) relationship make sure to get
+When using inheritance to implement an em(is-a) relationship make sure to get
the `direction of use' right: inheritance aiming at implementing an em(is-a)
relationship should focus on the base class: the base class facilities aren't
there to be used by the derived class, but the derived class facilities should
diff --git a/annotations/yo/inheritance/derivationtypes.yo b/annotations/yo/inheritance/derivationtypes.yo
index b16c9597..9e355956 100644
--- a/annotations/yo/inheritance/derivationtypes.yo
+++ b/annotations/yo/inheritance/derivationtypes.yo
@@ -26,16 +26,15 @@ private members in the derived class. The derived class members may access
all base class public and protected members but base class members cannot be
used elsewhere.
- Public derivation should be used to define an tt(is-a) relationship
-between a derived class and a base class: the derived class object
-em(is-a) base class object allowing the derived class object to be used
-polymorphically as a base class object in code expecting a base class
-object. Private inheritance is used in situations where a derived class object
-is defined in-terms-of the base class where composition cannot be
-used. There's little documented use for protected inheritance, but one could
-maybe encounter protected inheritance when defining a base class that is
-itself a derived class and needs to make its base class members available to
-classes derived from itself.
+ Public derivation should be used to define an em(is-a) relationship
+between a derived class and a base class: the derived class object em(is-a)
+base class object allowing the derived class object to be used polymorphically
+as a base class object in code expecting a base class object. Private
+inheritance is used in situations where a derived class object is defined
+in-terms-of the base class where composition cannot be used. There's little
+documented use for protected inheritance, but one could maybe encounter
+protected inheritance when defining a base class that is itself a derived
+class making its base class members available to classes derived from it.
Combinations of inheritance types do occur. For example, when designing a
stream-class it is usually derived from tt(std::istream) or
diff --git a/annotations/yo/inheritance/examples/placement.cc b/annotations/yo/inheritance/examples/placement.cc
index 3c300277..df776415 100644
--- a/annotations/yo/inheritance/examples/placement.cc
+++ b/annotations/yo/inheritance/examples/placement.cc
@@ -57,11 +57,11 @@ int main()
/*
After providing 5 lines containing, respectively
- alfa, bravo, charlie, delta, echo
+ alpha, bravo, charley, delta, echo
the program displays:
- destructor: alfa
+ destructor: alpha
destructor: bravo
- destructor: charlie
+ destructor: charley
destructor: delta
destructor: echo
*/
diff --git a/annotations/yo/inheritance/multiple.yo b/annotations/yo/inheritance/multiple.yo
index 9b80dd99..44eddb8b 100644
--- a/annotations/yo/inheritance/multiple.yo
+++ b/annotations/yo/inheritance/multiple.yo
@@ -1,17 +1,17 @@
-Up to now, a class has always been derived from a single base class. In
-addition to i(single inheritance) hi(inheritance: multiple) bf(C++) also
-supports emi(multiple inheritance). In multiple inheritance a class is derived
-from several base classes and hence inherits functionality from multiple
-parent classes at the same time.
+Except for the class tt(Randbuf) classes thus far have always been derived
+from a single base class. In addition to i(single inheritance) hi(inheritance:
+multiple) bf(C++) also supports emi(multiple inheritance). In multiple
+inheritance a class is derived from several base classes and hence inherits
+functionality from multiple parent classes at the same time.
- When using multiple inheritance it should be
-defensible to consider the newly derived class an instantiation of both base
-classes. Otherwise, i(composition) is more appropriate. In general,
-linear derivation (using only one base class) is used much more
-frequently than multiple derivation. Good class design dictates that a class
-should have a single, well described responsibility and that principle often
-conflicts with multiple inheritance where we can state that objects of class
-tt(Derived) are em(both) tt(Base1) em(and) tt(Base2) objects.
+ When using multiple inheritance it should be defensible to consider the
+newly derived class an instantiation of both base classes. Otherwise,
+i(composition) is more appropriate. In general, linear derivation (using only
+one base class) is used much more frequently than multiple derivation. Good
+class design dictates that a class should have a single, well described
+responsibility and that principle often conflicts with multiple inheritance
+where we can state that objects of class tt(Derived) are em(both) tt(Base1)
+em(and) tt(Base2) objects.
But then, consider em(the) prototype of an object for which
multiple inheritance was used to its extreme: the
@@ -19,10 +19,11 @@ multiple inheritance was used to its extreme: the
scissors, it em(is) a can-opener, it em(is) a corkscrew, it em(is) ....
The `Swiss army knife' is an extreme example of multiple inheritance. In
-bf(C++) there em(are) some good reasons, not violating the `one class, one
-responsibility' principle that is covered in the
- link(next chapter)(POLYMORPHISM). In this section the technical details of
-constructing classes using multiple inheritance are discussed.
+bf(C++) there em(are) various good arguments for using multiple inheritance as
+well, without violating the `one class, one responsibility' principle. We
+postpone those arguments until the link(next chapter)(POLYMORPHISM). The
+current section concentrates on the technical details of constructing classes
+using multiple inheritance.
How to construct a `Swiss army knife' in bf(C++)? First we need (at least)
two base classes. For example, let's assume we are designing a toolkit
diff --git a/annotations/yo/inheritance/pointerconv.yo b/annotations/yo/inheritance/pointerconv.yo
index d9e71424..f5c7e0c9 100644
--- a/annotations/yo/inheritance/pointerconv.yo
+++ b/annotations/yo/inheritance/pointerconv.yo
@@ -2,7 +2,7 @@
pointer variable:
verb(
Land land(1200, 130);
- Car auto(500, 75, "Daf");
+ Car car(500, 75, "Daf");
Truck truck(2600, 120, "Mercedes", 6000);
Vehicle *vp;
)
@@ -10,7 +10,7 @@ pointer variable:
the derived classes to the tt(Vehicle) pointer:
verb(
vp = &land;
- vp = &auto;
+ vp = &car;
vp = &truck;
)
Each of these assignments is acceptable. However, an
diff --git a/annotations/yo/inheritance/redefining.yo b/annotations/yo/inheritance/redefining.yo
index 811133ac..2670476f 100644
--- a/annotations/yo/inheritance/redefining.yo
+++ b/annotations/yo/inheritance/redefining.yo
@@ -27,10 +27,9 @@ member:
Truck::Truck(size_t tractor_mass, size_t speed, char const *name,
size_t trailer_mass)
:
- Car(tractor_mass, speed, name)
- {
- d_mass = trailer_mass + trailer_mass;
- }
+ Car(tractor_mass, speed, name),
+ d_mass(tractor_mass + trailer_mass)
+ {}
)
Note that the class tt(Truck) now contains two functions already
present in the base class tt(Car): tt(setMass) and tt(mass).
@@ -135,7 +134,7 @@ size_t Truck::mass() const
)
The class tt(Truck) was derived from tt(Car). However, one might question
-this class design. Since a truck is conceived of as a combination of an
+this class design. Since a truck is conceived of as a combination of a
tractor and a trailer it is probably better defined using a mixed design,
using inheritance for the tractor part (inheriting from tt(Car), and
composition for the trailer part).
diff --git a/annotations/yo/inheritance/related.yo b/annotations/yo/inheritance/related.yo
index 5d63cea7..1daedc4f 100644
--- a/annotations/yo/inheritance/related.yo
+++ b/annotations/yo/inheritance/related.yo
@@ -73,7 +73,7 @@ tt(Vehicle):
Land();
Land(size_t mass, size_t speed);
- void setspeed(size_t speed);
+ void setSpeed(size_t speed);
size_t speed() const;
};
)
diff --git a/annotations/zip/eps.zip b/annotations/zip/eps.zip
index a79d34c9..f601ed4f 100644
Binary files a/annotations/zip/eps.zip and b/annotations/zip/eps.zip differ
diff --git a/annotations/zip/gif.zip b/annotations/zip/gif.zip
index c3b64843..23558176 100644
Binary files a/annotations/zip/gif.zip and b/annotations/zip/gif.zip differ
diff --git a/annotations/zip/svg.zip b/annotations/zip/svg.zip
index 76ad8e46..cb32ccc6 100644
Binary files a/annotations/zip/svg.zip and b/annotations/zip/svg.zip differ