From 21c84a0a962ce9f6bde3ec6ba5680da77cf09f85 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 27 Jun 2008 11:27:40 +0000 Subject: [PATCH] rm old tutorials --- doc/tutorial-next/Food.gf | 14 - doc/tutorial-next/FoodEng.gf | 23 - doc/tutorial-next/FoodIta.gf | 22 - doc/tutorial-next/Foodmarket.png | Bin 2971 -> 0 bytes doc/tutorial-next/Makefile | 6 - doc/tutorial-next/StringOper.gf | 10 - doc/tutorial-next/Tree2.png | Bin 1717 -> 0 bytes doc/tutorial-next/food.cf | 15 - doc/tutorial/DocGF.tex | 489 -- doc/tutorial/FORMULAone.tex | 4 - doc/tutorial/Food2Eng.gf | 23 - doc/tutorial/Foodmarket.gf | 5 - doc/tutorial/Foodmarket.png | Bin 1353 -> 0 bytes doc/tutorial/FoodmarketEng.gf | 5 - doc/tutorial/Fruit.gf | 4 - doc/tutorial/FruitEng.gf | 5 - doc/tutorial/Makefile | 16 - doc/tutorial/Morefood.gf | 8 - doc/tutorial/MorefoodEng.gf | 7 - doc/tutorial/Multi.png | Bin 14399 -> 0 bytes doc/tutorial/Mushroom.gf | 4 - doc/tutorial/MushroomEng.gf | 5 - doc/tutorial/SETLENGTHS.tex | 4 - doc/tutorial/StringOper.gf | 10 - doc/tutorial/Tree.png | Bin 2582 -> 0 bytes doc/tutorial/Tree2.png | Bin 1124 -> 0 bytes doc/tutorial/applications/Comments.gf | 12 - doc/tutorial/applications/CommentsEng.gf | 2 - doc/tutorial/applications/CommentsI.gf | 21 - doc/tutorial/applications/CommentsIta.gf | 2 - doc/tutorial/applications/FoodComments.gf | 7 - doc/tutorial/applications/FoodCommentsEng.gf | 18 - doc/tutorial/applications/FoodCommentsIta.gf | 17 - doc/tutorial/arithm/Arithm.gf | 13 - doc/tutorial/arithm/ArithmEng.gf | 27 - doc/tutorial/arithm/ArithmI.gf | 20 - doc/tutorial/arithm/ArithmSwe.gf | 29 - doc/tutorial/arithm/Lex.gf | 6 - doc/tutorial/arithm/LexEng.gf | 6 - doc/tutorial/arithm/LexSwe.gf | 8 - doc/tutorial/food.cf | 15 - doc/tutorial/food1.png | Bin 22805 -> 0 bytes doc/tutorial/food2.png | Bin 31506 -> 0 bytes doc/tutorial/gf-tutorial2.html | 4854 ----------- doc/tutorial/gf-tutorial2.pdf | 7504 ------------------ doc/tutorial/gf-tutorial2.txt | 3943 --------- doc/tutorial/gf-tutorial2_1.html | 3504 -------- doc/tutorial/gf-tutorial2_1.txt | 3166 -------- doc/tutorial/music/Music.gf | 12 - doc/tutorial/music/MusicEng.gf | 11 - doc/tutorial/music/MusicFin.gf | 5 - doc/tutorial/music/MusicFre.gf | 6 - doc/tutorial/music/MusicGer.gf | 6 - doc/tutorial/music/MusicI.gf | 9 - doc/tutorial/music/MusicLex.gf | 5 - doc/tutorial/music/MusicLexEng.gf | 5 - doc/tutorial/music/MusicLexFin.gf | 7 - doc/tutorial/music/MusicLexFre.gf | 6 - doc/tutorial/music/MusicLexGer.gf | 6 - doc/tutorial/music/old/Music.gf | 9 - doc/tutorial/music/old/MusicEng.gf | 7 - doc/tutorial/music/old/MusicEng0.gf | 3 - doc/tutorial/music/old/MusicFin.gf | 5 - doc/tutorial/music/old/MusicFre.gf | 6 - doc/tutorial/music/old/MusicGer.gf | 6 - doc/tutorial/music/old/MusicI.gf | 9 - doc/tutorial/music/old/MusicLex.gf | 5 - doc/tutorial/music/old/MusicLexEng.gf | 5 - doc/tutorial/music/old/MusicLexFin.gf | 6 - doc/tutorial/music/old/MusicLexFre.gf | 5 - doc/tutorial/music/old/MusicLexGer.gf | 5 - doc/tutorial/old/Fish.gf | 4 - doc/tutorial/old/FishEng.gf | 5 - doc/tutorial/old/Gatherer.gf | 5 - doc/tutorial/old/Gatherer.gif | Bin 12415 -> 0 bytes doc/tutorial/old/GathererEng.gf | 5 - doc/tutorial/old/Mushrooms.gf | 4 - doc/tutorial/old/MushroomsEng.gf | 5 - doc/tutorial/old/Neolithic.gf | 5 - doc/tutorial/old/NeolithicEng.gf | 6 - doc/tutorial/old/Paleolithic.gf | 16 - doc/tutorial/old/PaleolithicEng.gf | 28 - doc/tutorial/old/PaleolithicIta.gf | 28 - doc/tutorial/old/paleolithic.cf | 23 - doc/tutorial/old/paleolithic.ebnf | 8 - doc/tutorial/prelude | 12 - doc/tutorial/resource-food/Food.gf | 14 - doc/tutorial/resource-food/FoodEng.gf | 9 - doc/tutorial/resource-food/FoodFin.gf | 5 - doc/tutorial/resource-food/FoodFre.gf | 30 - doc/tutorial/resource-food/FoodGer.gf | 5 - doc/tutorial/resource-food/FoodI.gf | 28 - doc/tutorial/resource-food/LexFood.gf | 16 - doc/tutorial/resource-food/LexFoodFin.gf | 16 - doc/tutorial/resource-food/LexFoodGer.gf | 16 - doc/tutorial/resource/LexEng.gf | 34 - doc/tutorial/resource/LexFoods.gf | 4 - doc/tutorial/resource/LexIta.gf | 46 - doc/tutorial/smarthouse/Smart.gf | 17 - doc/tutorial/smarthouse/SmartEng.gf | 19 - 100 files changed, 24415 deletions(-) delete mode 100644 doc/tutorial-next/Food.gf delete mode 100644 doc/tutorial-next/FoodEng.gf delete mode 100644 doc/tutorial-next/FoodIta.gf delete mode 100644 doc/tutorial-next/Foodmarket.png delete mode 100644 doc/tutorial-next/Makefile delete mode 100644 doc/tutorial-next/StringOper.gf delete mode 100644 doc/tutorial-next/Tree2.png delete mode 100644 doc/tutorial-next/food.cf delete mode 100644 doc/tutorial/DocGF.tex delete mode 100644 doc/tutorial/FORMULAone.tex delete mode 100644 doc/tutorial/Food2Eng.gf delete mode 100644 doc/tutorial/Foodmarket.gf delete mode 100644 doc/tutorial/Foodmarket.png delete mode 100644 doc/tutorial/FoodmarketEng.gf delete mode 100644 doc/tutorial/Fruit.gf delete mode 100644 doc/tutorial/FruitEng.gf delete mode 100644 doc/tutorial/Makefile delete mode 100644 doc/tutorial/Morefood.gf delete mode 100644 doc/tutorial/MorefoodEng.gf delete mode 100644 doc/tutorial/Multi.png delete mode 100644 doc/tutorial/Mushroom.gf delete mode 100644 doc/tutorial/MushroomEng.gf delete mode 100644 doc/tutorial/SETLENGTHS.tex delete mode 100644 doc/tutorial/StringOper.gf delete mode 100644 doc/tutorial/Tree.png delete mode 100644 doc/tutorial/Tree2.png delete mode 100644 doc/tutorial/applications/Comments.gf delete mode 100644 doc/tutorial/applications/CommentsEng.gf delete mode 100644 doc/tutorial/applications/CommentsI.gf delete mode 100644 doc/tutorial/applications/CommentsIta.gf delete mode 100644 doc/tutorial/applications/FoodComments.gf delete mode 100644 doc/tutorial/applications/FoodCommentsEng.gf delete mode 100644 doc/tutorial/applications/FoodCommentsIta.gf delete mode 100644 doc/tutorial/arithm/Arithm.gf delete mode 100644 doc/tutorial/arithm/ArithmEng.gf delete mode 100644 doc/tutorial/arithm/ArithmI.gf delete mode 100644 doc/tutorial/arithm/ArithmSwe.gf delete mode 100644 doc/tutorial/arithm/Lex.gf delete mode 100644 doc/tutorial/arithm/LexEng.gf delete mode 100644 doc/tutorial/arithm/LexSwe.gf delete mode 100644 doc/tutorial/food.cf delete mode 100644 doc/tutorial/food1.png delete mode 100644 doc/tutorial/food2.png delete mode 100644 doc/tutorial/gf-tutorial2.html delete mode 100644 doc/tutorial/gf-tutorial2.pdf delete mode 100644 doc/tutorial/gf-tutorial2.txt delete mode 100644 doc/tutorial/gf-tutorial2_1.html delete mode 100644 doc/tutorial/gf-tutorial2_1.txt delete mode 100644 doc/tutorial/music/Music.gf delete mode 100644 doc/tutorial/music/MusicEng.gf delete mode 100644 doc/tutorial/music/MusicFin.gf delete mode 100644 doc/tutorial/music/MusicFre.gf delete mode 100644 doc/tutorial/music/MusicGer.gf delete mode 100644 doc/tutorial/music/MusicI.gf delete mode 100644 doc/tutorial/music/MusicLex.gf delete mode 100644 doc/tutorial/music/MusicLexEng.gf delete mode 100644 doc/tutorial/music/MusicLexFin.gf delete mode 100644 doc/tutorial/music/MusicLexFre.gf delete mode 100644 doc/tutorial/music/MusicLexGer.gf delete mode 100644 doc/tutorial/music/old/Music.gf delete mode 100644 doc/tutorial/music/old/MusicEng.gf delete mode 100644 doc/tutorial/music/old/MusicEng0.gf delete mode 100644 doc/tutorial/music/old/MusicFin.gf delete mode 100644 doc/tutorial/music/old/MusicFre.gf delete mode 100644 doc/tutorial/music/old/MusicGer.gf delete mode 100644 doc/tutorial/music/old/MusicI.gf delete mode 100644 doc/tutorial/music/old/MusicLex.gf delete mode 100644 doc/tutorial/music/old/MusicLexEng.gf delete mode 100644 doc/tutorial/music/old/MusicLexFin.gf delete mode 100644 doc/tutorial/music/old/MusicLexFre.gf delete mode 100644 doc/tutorial/music/old/MusicLexGer.gf delete mode 100644 doc/tutorial/old/Fish.gf delete mode 100644 doc/tutorial/old/FishEng.gf delete mode 100644 doc/tutorial/old/Gatherer.gf delete mode 100644 doc/tutorial/old/Gatherer.gif delete mode 100644 doc/tutorial/old/GathererEng.gf delete mode 100644 doc/tutorial/old/Mushrooms.gf delete mode 100644 doc/tutorial/old/MushroomsEng.gf delete mode 100644 doc/tutorial/old/Neolithic.gf delete mode 100644 doc/tutorial/old/NeolithicEng.gf delete mode 100644 doc/tutorial/old/Paleolithic.gf delete mode 100644 doc/tutorial/old/PaleolithicEng.gf delete mode 100644 doc/tutorial/old/PaleolithicIta.gf delete mode 100644 doc/tutorial/old/paleolithic.cf delete mode 100644 doc/tutorial/old/paleolithic.ebnf delete mode 100644 doc/tutorial/prelude delete mode 100644 doc/tutorial/resource-food/Food.gf delete mode 100644 doc/tutorial/resource-food/FoodEng.gf delete mode 100644 doc/tutorial/resource-food/FoodFin.gf delete mode 100644 doc/tutorial/resource-food/FoodFre.gf delete mode 100644 doc/tutorial/resource-food/FoodGer.gf delete mode 100644 doc/tutorial/resource-food/FoodI.gf delete mode 100644 doc/tutorial/resource-food/LexFood.gf delete mode 100644 doc/tutorial/resource-food/LexFoodFin.gf delete mode 100644 doc/tutorial/resource-food/LexFoodGer.gf delete mode 100644 doc/tutorial/resource/LexEng.gf delete mode 100644 doc/tutorial/resource/LexFoods.gf delete mode 100644 doc/tutorial/resource/LexIta.gf delete mode 100644 doc/tutorial/smarthouse/Smart.gf delete mode 100644 doc/tutorial/smarthouse/SmartEng.gf diff --git a/doc/tutorial-next/Food.gf b/doc/tutorial-next/Food.gf deleted file mode 100644 index 1a2d38d1e..000000000 --- a/doc/tutorial-next/Food.gf +++ /dev/null @@ -1,14 +0,0 @@ -abstract Food = { - - cat - S ; Item ; Kind ; Quality ; - - fun - Is : Item -> Quality -> S ; - This, That : Kind -> Item ; - QKind : Quality -> Kind -> Kind ; - Wine, Cheese, Fish : Kind ; - Very : Quality -> Quality ; - Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ; - -} \ No newline at end of file diff --git a/doc/tutorial-next/FoodEng.gf b/doc/tutorial-next/FoodEng.gf deleted file mode 100644 index f75727292..000000000 --- a/doc/tutorial-next/FoodEng.gf +++ /dev/null @@ -1,23 +0,0 @@ -concrete FoodEng of Food = { - - lincat - S, Item, Kind, Quality = {s : Str} ; - - lin - Is item quality = {s = item.s ++ "is" ++ quality.s} ; - This kind = {s = "this" ++ kind.s} ; - That kind = {s = "that" ++ kind.s} ; - QKind quality kind = {s = quality.s ++ kind.s} ; - Wine = {s = "wine"} ; - Cheese = {s = "cheese"} ; - Fish = {s = "fish"} ; - Very quality = {s = "very" ++ quality.s} ; - Fresh = {s = "fresh"} ; - Warm = {s = "warm"} ; - Italian = {s = "Italian"} ; - Expensive = {s = "expensive"} ; - Delicious = {s = "delicious"} ; - Boring = {s = "boring"} ; - -} - \ No newline at end of file diff --git a/doc/tutorial-next/FoodIta.gf b/doc/tutorial-next/FoodIta.gf deleted file mode 100644 index 5c565037a..000000000 --- a/doc/tutorial-next/FoodIta.gf +++ /dev/null @@ -1,22 +0,0 @@ -concrete FoodIta of Food = { - - lincat - S, Item, Kind, Quality = {s : Str} ; - - lin - Is item quality = {s = item.s ++ "è" ++ quality.s} ; - This kind = {s = "questo" ++ kind.s} ; - That kind = {s = "quello" ++ kind.s} ; - QKind quality kind = {s = kind.s ++ quality.s} ; - Wine = {s = "vino"} ; - Cheese = {s = "formaggio"} ; - Fish = {s = "pesce"} ; - Very quality = {s = "molto" ++ quality.s} ; - Fresh = {s = "fresco"} ; - Warm = {s = "caldo"} ; - Italian = {s = "italiano"} ; - Expensive = {s = "caro"} ; - Delicious = {s = "delizioso"} ; - Boring = {s = "noioso"} ; - -} diff --git a/doc/tutorial-next/Foodmarket.png b/doc/tutorial-next/Foodmarket.png deleted file mode 100644 index 753cc850d1167477e68168890e9874f5f61de386..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2971 zcmeAS@N?(olHy`uVBq!ia0y~yV2WU1U=(IzW?*2LUO%Chfq{WDz$e7@|Nnms3=IGO z|GzP#c6)_t1T!m>N&?)h*3&wa@heW>0kcyP`4s7so4Na7J{j~PF=C$^H zV%^%h>uN5;71=kdPRO(SG=JyMm_^dwP^7kIUGzWG*ZHRPxBTiEG6FB3bzd8wth4;> z@)>{hlV66d3e&m%`&@sT!Me?h!%nT*xcwe)Rm~sSu;pt?{n!3FZt!>Y6=!MVuVK%p z1Ul)5u;^cFo!e(4V!y{msC~KSti3;}S4*qP^4h!T zV}21{Ghco;_#PJXrD)ApuQ@$GI3kYu?Qga{d*i>Xn4+k=KFIyc-*?tui=O`C*dzoB zSD$q2>-jVJcO!%#s8)B{Ypb`pKW6N=-JY+%z1H~jcI}N}Z~f!)?ti(re=bARm9A1B zQx}5^@61e-T<;40ytVP7djG~E(crI+(eEyIoIMvd@+t8Pwj)vV^}BCCu3y?;}l{Xr<{>D;Nw zDR%c|_OwJ)riX5nYM#!sI%A21qqs|0TN)Z%=eE5QN)+`KG1Fdi>qe~7nnkR9 zVZjq7BusUbZeZXOHreRez&gk5!lo(SN8-*Oee|0>BH&hRj80tuOM1zYyGM@*#rRA(-`&h2>|MalSQ{s$ zQV~&5(D0k}m=GJMoY1JY>}X~U&k)G|X`ZCtDQOu| z@ZJ7@vq*h%{$9>ACk{BB3rY??$9Gt0#>T$Z*jrNj1eRZRxGyMk^YZgj9UXzJp6!R@ zV?*w2h&ouca651N+?}(7YZ4;w*0QX2|9fTOHPsCq%*z*TjOo9ZEGzWn@bBdo)0Dq` z+}I&@ufo1;2lLIobXTeF6;FCyFTY7$88U5$T++mdz7RL#5m$BwmRlsRohcD!#oS5)Q+Pd94r%$mno+*v{t+g@9c@#RA6~S& z*<5mFMP%=PF)^vGN3zqCBTd%qI`Mw}u|;VU7u8-*kX4$$v~TX#V?PUY)|_HFbT3vs zIaJNRI(n;}}S;;2l zlIPs#n+x2Mf>JIhW+QH3rl{#PZ^^1NykGkOZf9h0U)33>W ztX2%IPx~HcMf|?LccMtP`Ta|?Mb}*KyXxyKVm;$z-@e<=E{Ey7-Pm(v@gk1XCD&H3 z6cY{KmV7oc{ciDve!D9#dS>;#h@HOUZkOpdMP;9vg>T+|Ub+3*or}T+Zb}8Gf)73y zusQK-$0nBS5By8rq_b-HmT|{l-gw|%wAqvMn!9UmcI|j9e9ogs`_@mUiBUDLSLhrr zx*Vx%%9pmziq}auBG4^~`PvmXgGDmlZyy&+XrJ;}lbkzMHR9n1k=HYiO)A}!`sY=}N)N+J+}RY_veC ze%7rz{IxJua9Z^mw>j&NoP7HGLUiEy!;3GUlnvH7#(Vy4gh%Ss+kIb;PL1eM_;fGn z&dCpxD)SYOU$0&*VCEhrwzFiiYT9 zn-^V^Uz1dD=12DDPoLQe&OSGI{Ppvv%{+UYw(aNr6sS`ZtFOQAdwuXDU5}mzo1SbG z>R%HrCf|_%vgWX&O7WTWcSj{s!n?&HT*{B{F4?5sDfDOd#qooHX-B#7_su>8^h2mGVi+PsJr#3d~Oa7Le9H&hXel ze~sOikqCYkgt8X^&UA z;l_x_$j@$#lCBX8^qG@2ctyCs)EEnyv&e~+#7W%{>w7x;qls7uV~Afn|2D}^iQ|Wp z@}jM$X1fWBT`*n{`@w5xno8Hk4G!uGHqDuCz3-D+gEu6vXuSGz!Ks5yy-uz-y#Mv} zYW&W;C|ZAgW|!Fwj~+NwGh6QCTw`Ts?rgjJ^B&GOO70BZvB{0^ zY_;KGo77`gVpis}5=A9MjVFa0B^-HS+oW)%HHIr_mqO+-@tI7I+q6N*zhcQ$*N$Ncuf3d)rAV}yj}yBS$&N* z=8qztq@?k7OYKvMFkrZ+n(<1f>8sx<;pInu#cM1`a}g>JcP#WiZeMUTLQ1=3)<+hx zd2h_$+g@8HQ<$i5`=U%J%W3(`(qWUs3tL>bG=?lZX>Hr^)oR1MD+~YqIQ={S(In?j z%`bP#3a#F>rAjAZ|H?qVKVq!4#~7|nd=&0^t2_J+hxVb@n2nf>qdN!+;(&Iwi}E+3cGT1x6ZP+ z7JqyA#Oh5E;;I+hV$S4o$SbWeoo^Om99EOfDG=-~@N#GL+U(H6B4gHR$#0+AUON6$ z*>1_@tM!sZ}oE0J|y0~lOspN}x8g8{yS!;J0pKeQD z^Qq^eokrP(_4XlgeH!J*BX-^B{^s~|Rzju0a=A56Ik;Cye*L*AW2b7++h-vWhQ~f# ztnhd{TcOqXMwgV^>8kUIjs9C+oR#se77GixqLXlCsm1)(SA}bmvRl6DZ8W&7l78U8 zr|Rd2B96YC9uel-uW8%6Rjl^Qv6po-MVIWU(zBCD%}sYVUvc4xwdA>{Z=XcWHB(b5 zH{4)l+h()%YKM-_x&e#{n|t?ZMt%aMf@~F#EGw} zN20RgdN`7wzKyva&3L+fR_oraTaSKS+mM=jz{p0&coysGquW`+7kyN`8F0RzlSjvT zjT?_|$A%)s2!|PKkLm`6++pHdwy0)V)D(4B*GkT?n|^QSd35bjpT=H)nB$T6@#y>tD+pnSSm@&C5U6wx47Bck9l}78Rog_3I;Fx- xG`%`lI9<$eqx6I4KVw$G8>`3+{iDD1^)E-w+3?_#J_7>-gQu&X%Q~loCIE2{tA+po diff --git a/doc/tutorial-next/Makefile b/doc/tutorial-next/Makefile deleted file mode 100644 index d226e7348..000000000 --- a/doc/tutorial-next/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -html: - txt2tags -thtml --toc gf-tutorial2.txt -tex: - txt2tags -ttex --toc gf-tutorial2.txt - pdflatex gf-tutorial2.tex - pdflatex gf-tutorial2.tex diff --git a/doc/tutorial-next/StringOper.gf b/doc/tutorial-next/StringOper.gf deleted file mode 100644 index 803d957f0..000000000 --- a/doc/tutorial-next/StringOper.gf +++ /dev/null @@ -1,10 +0,0 @@ -resource StringOper = { - oper - SS : Type = {s : Str} ; - - ss : Str -> SS = \x -> {s = x} ; - - cc : SS -> SS -> SS = \x,y -> ss (x.s ++ y.s) ; - - prefix : Str -> SS -> SS = \p,x -> ss (p ++ x.s) ; -} \ No newline at end of file diff --git a/doc/tutorial-next/Tree2.png b/doc/tutorial-next/Tree2.png deleted file mode 100644 index f58e56b9586a264dd3bf7c2a81dc4508a4ff860c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1717 zcmeAS@N?(olHy`uVBq!ia0y~yU_8gbz*x-0%)r2K>JDQE0|NtRfKQ0)|Ns9O7#RNl z|9@jf%Wnn-2F8*gzhDN3XE)Lq7}%mbT^vIy=DfXgw(qfq0Q-kpPo36kzLnn_56}4) zr2KGs%z?h!@-G%~SriD*O*k<%--S0WJLTZ=!^1?=&z596oMm?C@x+TJVk>T=<6Y`wT z3LLJ^S3KK%G`#N3W^tHNAvSlepT56+q4vqA>wl$vx&F%ZZtJ>*@jJWsN#1PUSI8O|-t?Y@s^!O1B)Bdywbe z7m10Jyk5C_7Cd1KnQ+C=M9{}E$ogW7f=8D6tS;5q-enC{LG}W^&(_Cz)@Bs_t5W^C z@TJG4tr=CnvVwMB@KIRp`PRvJbNJ+2tXqi8!!zTyY?$X2WY4QR#e3-_s|$yUw5DEZ40^m%Zp)5YMM3sFx?{#F#n@`wqQe$GfmaLdmfrpF+i~{lEor%- zTb8+0_Bo&*W@hdG%IQoh|dJDmUHp4|5&g-bw!z zm${?;IpftckIR-O>;DSfl9;vl+X}^{6`oH|TwCn+b&fZ;p z5&)CyN*BOWrQH{Lt3;&#s{M{dLlh-0eTWd_TXR>v!hi6Mq6EG%oDt z68*N9ne|t0#n}+m7s7xw!Y`-F9_{+!u;>7nwDmUf%;>EDYozifiFQ^jv*>&|9q+Z&-Q#iiWxT}JA6`0}Z4Cg0wvT_|*Nk9%t+ zeXHmE!u|`lcP;qHAsP@SXqt8N;Way(Rc*!Eq5CG7t_kNR-zn_|? z)F;k6{q92Ef`jedwQqlYciVF5?ymE(buX@!Co|u&{j>Pfayvv|_w73K+WVq!GxOb+ zyt>n`pX}#~4h*j-m)w;tzcBhj{L$^=3%Ar(FUo&*_(JW|l8{L0vX)!FW{&?V3Ewr{dhWuKIex1omOftiY>C&!5T@CawOl8!UetXtC{L1otM=IhLJ9Lnb&a5dRG`FT;6&AWrI`**PHdd;$KL7UV6w<}H@ zse2iI3Wz|-i4*Lw%ghBbyW6W+Hq{@qHl8#xL$dFX$}}} &{\symb{\{}} &{\symb{\}}} \\ -{\symb{**}} &{\symb{,}} &{\symb{(}} \\ -{\symb{)}} &{\symb{[}} &{\symb{]}} \\ -{\symb{{$-$}}} &{\symb{.}} &{\symb{{$|$}}} \\ -{\symb{?}} &{\symb{{$<$}}} &{\symb{{$>$}}} \\ -{\symb{@}} &{\symb{!}} &{\symb{*}} \\ -{\symb{{$+$}}} &{\symb{{$+$}{$+$}}} &{\symb{$\backslash$}} \\ -{\symb{{$=$}{$>$}}} &{\symb{\_}} &{\symb{\$}} \\ -{\symb{/}} & & \\ -\end{tabular}\\ - -\subsection{Comments} -Single-line comments begin with {\symb{{$-$}{$-$}}}. \\Multiple-line comments are enclosed with {\symb{\{{$-$}}} and {\symb{{$-$}\}}}. - -\section{The syntactic structure of GF} -Non-terminals are enclosed between $\langle$ and $\rangle$. -The symbols {\arrow} (production), {\delimit} (union) -and {\emptyP} (empty rule) belong to the BNF notation. -All other symbols are terminals.\\ - -\begin{tabular}{lll} -{\nonterminal{Grammar}} & {\arrow} &{\nonterminal{ListModDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListModDef}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{ModDef}} {\nonterminal{ListModDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ModDef}} & {\arrow} &{\nonterminal{ModDef}} {\terminal{;}} \\ - & {\delimit} &{\nonterminal{ComplMod}} {\nonterminal{ModType}} {\terminal{{$=$}}} {\nonterminal{ModBody}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ModType}} & {\arrow} &{\terminal{abstract}} {\nonterminal{Ident}} \\ - & {\delimit} &{\terminal{resource}} {\nonterminal{Ident}} \\ - & {\delimit} &{\terminal{interface}} {\nonterminal{Ident}} \\ - & {\delimit} &{\terminal{concrete}} {\nonterminal{Ident}} {\terminal{of}} {\nonterminal{Ident}} \\ - & {\delimit} &{\terminal{instance}} {\nonterminal{Ident}} {\terminal{of}} {\nonterminal{Ident}} \\ - & {\delimit} &{\terminal{transfer}} {\nonterminal{Ident}} {\terminal{:}} {\nonterminal{Open}} {\terminal{{$-$}{$>$}}} {\nonterminal{Open}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ModBody}} & {\arrow} &{\nonterminal{Extend}} {\nonterminal{Opens}} {\terminal{\{}} {\nonterminal{ListTopDef}} {\terminal{\}}} \\ - & {\delimit} &{\nonterminal{ListIncluded}} \\ - & {\delimit} &{\nonterminal{Included}} {\terminal{with}} {\nonterminal{ListOpen}} \\ - & {\delimit} &{\nonterminal{Included}} {\terminal{with}} {\nonterminal{ListOpen}} {\terminal{**}} {\nonterminal{Opens}} {\terminal{\{}} {\nonterminal{ListTopDef}} {\terminal{\}}} \\ - & {\delimit} &{\nonterminal{ListIncluded}} {\terminal{**}} {\nonterminal{Included}} {\terminal{with}} {\nonterminal{ListOpen}} \\ - & {\delimit} &{\nonterminal{ListIncluded}} {\terminal{**}} {\nonterminal{Included}} {\terminal{with}} {\nonterminal{ListOpen}} {\terminal{**}} {\nonterminal{Opens}} {\terminal{\{}} {\nonterminal{ListTopDef}} {\terminal{\}}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListTopDef}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{TopDef}} {\nonterminal{ListTopDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Extend}} & {\arrow} &{\nonterminal{ListIncluded}} {\terminal{**}} \\ - & {\delimit} &{\emptyP} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListOpen}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{Open}} \\ - & {\delimit} &{\nonterminal{Open}} {\terminal{,}} {\nonterminal{ListOpen}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Opens}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\terminal{open}} {\nonterminal{ListOpen}} {\terminal{in}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Open}} & {\arrow} &{\nonterminal{Ident}} \\ - & {\delimit} &{\terminal{(}} {\nonterminal{QualOpen}} {\nonterminal{Ident}} {\terminal{)}} \\ - & {\delimit} &{\terminal{(}} {\nonterminal{QualOpen}} {\nonterminal{Ident}} {\terminal{{$=$}}} {\nonterminal{Ident}} {\terminal{)}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ComplMod}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\terminal{incomplete}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{QualOpen}} & {\arrow} &{\emptyP} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListIncluded}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{Included}} \\ - & {\delimit} &{\nonterminal{Included}} {\terminal{,}} {\nonterminal{ListIncluded}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Included}} & {\arrow} &{\nonterminal{Ident}} \\ - & {\delimit} &{\nonterminal{Ident}} {\terminal{[}} {\nonterminal{ListIdent}} {\terminal{]}} \\ - & {\delimit} &{\nonterminal{Ident}} {\terminal{{$-$}}} {\terminal{[}} {\nonterminal{ListIdent}} {\terminal{]}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Def}} & {\arrow} &{\nonterminal{ListName}} {\terminal{:}} {\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{ListName}} {\terminal{{$=$}}} {\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{Name}} {\nonterminal{ListPatt}} {\terminal{{$=$}}} {\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{ListName}} {\terminal{:}} {\nonterminal{Exp}} {\terminal{{$=$}}} {\nonterminal{Exp}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{TopDef}} & {\arrow} &{\terminal{cat}} {\nonterminal{ListCatDef}} \\ - & {\delimit} &{\terminal{fun}} {\nonterminal{ListFunDef}} \\ - & {\delimit} &{\terminal{data}} {\nonterminal{ListFunDef}} \\ - & {\delimit} &{\terminal{def}} {\nonterminal{ListDef}} \\ - & {\delimit} &{\terminal{data}} {\nonterminal{ListDataDef}} \\ - & {\delimit} &{\terminal{param}} {\nonterminal{ListParDef}} \\ - & {\delimit} &{\terminal{oper}} {\nonterminal{ListDef}} \\ - & {\delimit} &{\terminal{lincat}} {\nonterminal{ListPrintDef}} \\ - & {\delimit} &{\terminal{lindef}} {\nonterminal{ListDef}} \\ - & {\delimit} &{\terminal{lin}} {\nonterminal{ListDef}} \\ - & {\delimit} &{\terminal{printname}} {\terminal{cat}} {\nonterminal{ListPrintDef}} \\ - & {\delimit} &{\terminal{printname}} {\terminal{fun}} {\nonterminal{ListPrintDef}} \\ - & {\delimit} &{\terminal{flags}} {\nonterminal{ListFlagDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{CatDef}} & {\arrow} &{\nonterminal{Ident}} {\nonterminal{ListDDecl}} \\ - & {\delimit} &{\terminal{[}} {\nonterminal{Ident}} {\nonterminal{ListDDecl}} {\terminal{]}} \\ - & {\delimit} &{\terminal{[}} {\nonterminal{Ident}} {\nonterminal{ListDDecl}} {\terminal{]}} {\terminal{\{}} {\nonterminal{Integer}} {\terminal{\}}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{FunDef}} & {\arrow} &{\nonterminal{ListIdent}} {\terminal{:}} {\nonterminal{Exp}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{DataDef}} & {\arrow} &{\nonterminal{Ident}} {\terminal{{$=$}}} {\nonterminal{ListDataConstr}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{DataConstr}} & {\arrow} &{\nonterminal{Ident}} \\ - & {\delimit} &{\nonterminal{Ident}} {\terminal{.}} {\nonterminal{Ident}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListDataConstr}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{DataConstr}} \\ - & {\delimit} &{\nonterminal{DataConstr}} {\terminal{{$|$}}} {\nonterminal{ListDataConstr}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ParDef}} & {\arrow} &{\nonterminal{Ident}} {\terminal{{$=$}}} {\nonterminal{ListParConstr}} \\ - & {\delimit} &{\nonterminal{Ident}} {\terminal{{$=$}}} {\terminal{(}} {\terminal{in}} {\nonterminal{Ident}} {\terminal{)}} \\ - & {\delimit} &{\nonterminal{Ident}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ParConstr}} & {\arrow} &{\nonterminal{Ident}} {\nonterminal{ListDDecl}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{PrintDef}} & {\arrow} &{\nonterminal{ListName}} {\terminal{{$=$}}} {\nonterminal{Exp}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{FlagDef}} & {\arrow} &{\nonterminal{Ident}} {\terminal{{$=$}}} {\nonterminal{Ident}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListDef}} & {\arrow} &{\nonterminal{Def}} {\terminal{;}} \\ - & {\delimit} &{\nonterminal{Def}} {\terminal{;}} {\nonterminal{ListDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListCatDef}} & {\arrow} &{\nonterminal{CatDef}} {\terminal{;}} \\ - & {\delimit} &{\nonterminal{CatDef}} {\terminal{;}} {\nonterminal{ListCatDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListFunDef}} & {\arrow} &{\nonterminal{FunDef}} {\terminal{;}} \\ - & {\delimit} &{\nonterminal{FunDef}} {\terminal{;}} {\nonterminal{ListFunDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListDataDef}} & {\arrow} &{\nonterminal{DataDef}} {\terminal{;}} \\ - & {\delimit} &{\nonterminal{DataDef}} {\terminal{;}} {\nonterminal{ListDataDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListParDef}} & {\arrow} &{\nonterminal{ParDef}} {\terminal{;}} \\ - & {\delimit} &{\nonterminal{ParDef}} {\terminal{;}} {\nonterminal{ListParDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListPrintDef}} & {\arrow} &{\nonterminal{PrintDef}} {\terminal{;}} \\ - & {\delimit} &{\nonterminal{PrintDef}} {\terminal{;}} {\nonterminal{ListPrintDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListFlagDef}} & {\arrow} &{\nonterminal{FlagDef}} {\terminal{;}} \\ - & {\delimit} &{\nonterminal{FlagDef}} {\terminal{;}} {\nonterminal{ListFlagDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListParConstr}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{ParConstr}} \\ - & {\delimit} &{\nonterminal{ParConstr}} {\terminal{{$|$}}} {\nonterminal{ListParConstr}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListIdent}} & {\arrow} &{\nonterminal{Ident}} \\ - & {\delimit} &{\nonterminal{Ident}} {\terminal{,}} {\nonterminal{ListIdent}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Name}} & {\arrow} &{\nonterminal{Ident}} \\ - & {\delimit} &{\terminal{[}} {\nonterminal{Ident}} {\terminal{]}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListName}} & {\arrow} &{\nonterminal{Name}} \\ - & {\delimit} &{\nonterminal{Name}} {\terminal{,}} {\nonterminal{ListName}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{LocDef}} & {\arrow} &{\nonterminal{ListIdent}} {\terminal{:}} {\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{ListIdent}} {\terminal{{$=$}}} {\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{ListIdent}} {\terminal{:}} {\nonterminal{Exp}} {\terminal{{$=$}}} {\nonterminal{Exp}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListLocDef}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{LocDef}} \\ - & {\delimit} &{\nonterminal{LocDef}} {\terminal{;}} {\nonterminal{ListLocDef}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Exp6}} & {\arrow} &{\nonterminal{Ident}} \\ - & {\delimit} &{\nonterminal{Sort}} \\ - & {\delimit} &{\nonterminal{String}} \\ - & {\delimit} &{\nonterminal{Integer}} \\ - & {\delimit} &{\nonterminal{Double}} \\ - & {\delimit} &{\terminal{?}} \\ - & {\delimit} &{\terminal{[}} {\terminal{]}} \\ - & {\delimit} &{\terminal{data}} \\ - & {\delimit} &{\terminal{[}} {\nonterminal{Ident}} {\nonterminal{Exps}} {\terminal{]}} \\ - & {\delimit} &{\terminal{[}} {\nonterminal{String}} {\terminal{]}} \\ - & {\delimit} &{\terminal{\{}} {\nonterminal{ListLocDef}} {\terminal{\}}} \\ - & {\delimit} &{\terminal{{$<$}}} {\nonterminal{ListTupleComp}} {\terminal{{$>$}}} \\ - & {\delimit} &{\terminal{{$<$}}} {\nonterminal{Exp}} {\terminal{:}} {\nonterminal{Exp}} {\terminal{{$>$}}} \\ - & {\delimit} &{\terminal{(}} {\nonterminal{Exp}} {\terminal{)}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Exp5}} & {\arrow} &{\nonterminal{Exp5}} {\terminal{.}} {\nonterminal{Label}} \\ - & {\delimit} &{\nonterminal{Exp6}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Exp4}} & {\arrow} &{\nonterminal{Exp4}} {\nonterminal{Exp5}} \\ - & {\delimit} &{\terminal{table}} {\terminal{\{}} {\nonterminal{ListCase}} {\terminal{\}}} \\ - & {\delimit} &{\terminal{table}} {\nonterminal{Exp6}} {\terminal{\{}} {\nonterminal{ListCase}} {\terminal{\}}} \\ - & {\delimit} &{\terminal{table}} {\nonterminal{Exp6}} {\terminal{[}} {\nonterminal{ListExp}} {\terminal{]}} \\ - & {\delimit} &{\terminal{case}} {\nonterminal{Exp}} {\terminal{of}} {\terminal{\{}} {\nonterminal{ListCase}} {\terminal{\}}} \\ - & {\delimit} &{\terminal{variants}} {\terminal{\{}} {\nonterminal{ListExp}} {\terminal{\}}} \\ - & {\delimit} &{\terminal{pre}} {\terminal{\{}} {\nonterminal{Exp}} {\terminal{;}} {\nonterminal{ListAltern}} {\terminal{\}}} \\ - & {\delimit} &{\terminal{strs}} {\terminal{\{}} {\nonterminal{ListExp}} {\terminal{\}}} \\ - & {\delimit} &{\nonterminal{Ident}} {\terminal{@}} {\nonterminal{Exp6}} \\ - & {\delimit} &{\nonterminal{Exp5}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Exp3}} & {\arrow} &{\nonterminal{Exp3}} {\terminal{!}} {\nonterminal{Exp4}} \\ - & {\delimit} &{\nonterminal{Exp3}} {\terminal{*}} {\nonterminal{Exp4}} \\ - & {\delimit} &{\nonterminal{Exp3}} {\terminal{**}} {\nonterminal{Exp4}} \\ - & {\delimit} &{\nonterminal{Exp4}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Exp1}} & {\arrow} &{\nonterminal{Exp2}} {\terminal{{$+$}}} {\nonterminal{Exp1}} \\ - & {\delimit} &{\nonterminal{Exp2}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Exp}} & {\arrow} &{\nonterminal{Exp1}} {\terminal{{$+$}{$+$}}} {\nonterminal{Exp}} \\ - & {\delimit} &{\terminal{$\backslash$}} {\nonterminal{ListBind}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\ - & {\delimit} &{\terminal{$\backslash$}} {\terminal{$\backslash$}} {\nonterminal{ListBind}} {\terminal{{$=$}{$>$}}} {\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{Decl}} {\terminal{{$-$}{$>$}}} {\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{Exp3}} {\terminal{{$=$}{$>$}}} {\nonterminal{Exp}} \\ - & {\delimit} &{\terminal{let}} {\terminal{\{}} {\nonterminal{ListLocDef}} {\terminal{\}}} {\terminal{in}} {\nonterminal{Exp}} \\ - & {\delimit} &{\terminal{let}} {\nonterminal{ListLocDef}} {\terminal{in}} {\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{Exp3}} {\terminal{where}} {\terminal{\{}} {\nonterminal{ListLocDef}} {\terminal{\}}} \\ - & {\delimit} &{\terminal{in}} {\nonterminal{Exp5}} {\nonterminal{String}} \\ - & {\delimit} &{\nonterminal{Exp1}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Exp2}} & {\arrow} &{\nonterminal{Exp3}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListExp}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{Exp}} \\ - & {\delimit} &{\nonterminal{Exp}} {\terminal{;}} {\nonterminal{ListExp}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Exps}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{Exp6}} {\nonterminal{Exps}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Patt2}} & {\arrow} &{\terminal{\_}} \\ - & {\delimit} &{\nonterminal{Ident}} \\ - & {\delimit} &{\nonterminal{Ident}} {\terminal{.}} {\nonterminal{Ident}} \\ - & {\delimit} &{\nonterminal{Integer}} \\ - & {\delimit} &{\nonterminal{Double}} \\ - & {\delimit} &{\nonterminal{String}} \\ - & {\delimit} &{\terminal{\{}} {\nonterminal{ListPattAss}} {\terminal{\}}} \\ - & {\delimit} &{\terminal{{$<$}}} {\nonterminal{ListPattTupleComp}} {\terminal{{$>$}}} \\ - & {\delimit} &{\terminal{(}} {\nonterminal{Patt}} {\terminal{)}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Patt1}} & {\arrow} &{\nonterminal{Ident}} {\nonterminal{ListPatt}} \\ - & {\delimit} &{\nonterminal{Ident}} {\terminal{.}} {\nonterminal{Ident}} {\nonterminal{ListPatt}} \\ - & {\delimit} &{\nonterminal{Patt2}} {\terminal{*}} \\ - & {\delimit} &{\nonterminal{Ident}} {\terminal{@}} {\nonterminal{Patt2}} \\ - & {\delimit} &{\terminal{{$-$}}} {\nonterminal{Patt2}} \\ - & {\delimit} &{\nonterminal{Patt2}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Patt}} & {\arrow} &{\nonterminal{Patt}} {\terminal{{$|$}}} {\nonterminal{Patt1}} \\ - & {\delimit} &{\nonterminal{Patt}} {\terminal{{$+$}}} {\nonterminal{Patt1}} \\ - & {\delimit} &{\nonterminal{Patt1}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{PattAss}} & {\arrow} &{\nonterminal{ListIdent}} {\terminal{{$=$}}} {\nonterminal{Patt}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Label}} & {\arrow} &{\nonterminal{Ident}} \\ - & {\delimit} &{\terminal{\$}} {\nonterminal{Integer}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Sort}} & {\arrow} &{\terminal{Type}} \\ - & {\delimit} &{\terminal{PType}} \\ - & {\delimit} &{\terminal{Str}} \\ - & {\delimit} &{\terminal{Strs}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListPattAss}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{PattAss}} \\ - & {\delimit} &{\nonterminal{PattAss}} {\terminal{;}} {\nonterminal{ListPattAss}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListPatt}} & {\arrow} &{\nonterminal{Patt2}} \\ - & {\delimit} &{\nonterminal{Patt2}} {\nonterminal{ListPatt}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Bind}} & {\arrow} &{\nonterminal{Ident}} \\ - & {\delimit} &{\terminal{\_}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListBind}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{Bind}} \\ - & {\delimit} &{\nonterminal{Bind}} {\terminal{,}} {\nonterminal{ListBind}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Decl}} & {\arrow} &{\terminal{(}} {\nonterminal{ListBind}} {\terminal{:}} {\nonterminal{Exp}} {\terminal{)}} \\ - & {\delimit} &{\nonterminal{Exp4}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{TupleComp}} & {\arrow} &{\nonterminal{Exp}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{PattTupleComp}} & {\arrow} &{\nonterminal{Patt}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListTupleComp}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{TupleComp}} \\ - & {\delimit} &{\nonterminal{TupleComp}} {\terminal{,}} {\nonterminal{ListTupleComp}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListPattTupleComp}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{PattTupleComp}} \\ - & {\delimit} &{\nonterminal{PattTupleComp}} {\terminal{,}} {\nonterminal{ListPattTupleComp}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Case}} & {\arrow} &{\nonterminal{Patt}} {\terminal{{$=$}{$>$}}} {\nonterminal{Exp}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListCase}} & {\arrow} &{\nonterminal{Case}} \\ - & {\delimit} &{\nonterminal{Case}} {\terminal{;}} {\nonterminal{ListCase}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{Altern}} & {\arrow} &{\nonterminal{Exp}} {\terminal{/}} {\nonterminal{Exp}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListAltern}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{Altern}} \\ - & {\delimit} &{\nonterminal{Altern}} {\terminal{;}} {\nonterminal{ListAltern}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{DDecl}} & {\arrow} &{\terminal{(}} {\nonterminal{ListBind}} {\terminal{:}} {\nonterminal{Exp}} {\terminal{)}} \\ - & {\delimit} &{\nonterminal{Exp6}} \\ -\end{tabular}\\ - -\begin{tabular}{lll} -{\nonterminal{ListDDecl}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{DDecl}} {\nonterminal{ListDDecl}} \\ -\end{tabular}\\ - - diff --git a/doc/tutorial/FORMULAone.tex b/doc/tutorial/FORMULAone.tex deleted file mode 100644 index aa114c837..000000000 --- a/doc/tutorial/FORMULAone.tex +++ /dev/null @@ -1,4 +0,0 @@ -\( -(\forall p : \mbox{Pt})(\forall l : \mbox{Ln})(\mbox{Ext}(p,l) \; \supset \; - (\exists m : \mbox{Ln})(\mbox{Inc}(p,m) \& \mbox{Par}(m,l))) -\) \ No newline at end of file diff --git a/doc/tutorial/Food2Eng.gf b/doc/tutorial/Food2Eng.gf deleted file mode 100644 index a92e426eb..000000000 --- a/doc/tutorial/Food2Eng.gf +++ /dev/null @@ -1,23 +0,0 @@ -concrete Food2Eng of Food = open StringOper in { - - lincat - S, Item, Kind, Quality = SS ; - - lin - Is item quality = cc item (prefix "is" quality) ; - This = prefix "this" ; - That = prefix "that" ; - QKind = cc ; - Wine = ss "wine" ; - Cheese = ss "cheese" ; - Fish = ss "fish" ; - Very = prefix "very" ; - Fresh = ss "fresh" ; - Warm = ss "warm" ; - Italian = ss "Italian" ; - Expensive = ss "expensive" ; - Delicious = ss "delicious" ; - Boring = ss "boring" ; - -} - \ No newline at end of file diff --git a/doc/tutorial/Foodmarket.gf b/doc/tutorial/Foodmarket.gf deleted file mode 100644 index 18bbe6853..000000000 --- a/doc/tutorial/Foodmarket.gf +++ /dev/null @@ -1,5 +0,0 @@ -abstract Foodmarket = Food, Fruit, Mushroom ** { - fun - FruitKind : Fruit -> Kind ; - MushroomKind : Mushroom -> Kind ; -} diff --git a/doc/tutorial/Foodmarket.png b/doc/tutorial/Foodmarket.png deleted file mode 100644 index 88c81ba8351d168cefedf2328de73b3b5bfc488f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1353 zcmeAS@N?(olHy`uVBq!ia0y~yV9a1(U|7n?%)r3lt@YJ|fq{W7z$e6&fq~)w|Nl#G z&cDmRz`&T~?e41v>Eaj?aro_w^VzblG6&e5&N!;nI|+#LE8XyZr62L1;p4T#LaPz4|@xYd^i%eNaQrr|Gec zWsqpnm8wZk{?GjF*8T2f`UEi(Q6;ga^zcMuUBjI%n^P-q_#A&4xk}LFlH!6);j@W} z3BFr`RIbN9V7s*@a4wtF>WXJkU)nFPT&XATw>j$2gM}uhI%{VKF1B>opsmV#tIPDb zbB1-llYOqoqICsI_YZZ(WOMF3#AhdZtWQ`IR;*UNU-N9i(#Av#mR3ujb}W zJd&sC{J1}7tkX-~8Eo{ic2aeL^QD!OeD%-nH4m29{_qW2Azq60L7%sARM{RTH zm-UnO{k*nm3HMFIxwX~*vK-gfZU5o=JuHp&S>~Uo*4eWy|K9j?OL+M^_Nn{7w_KF7 z)caG*{^X=*eu+zWgqwoZfBz@$r?sZ9+j4fvm5*Q4%z4A2x=rWb=w0L5`l2_ac2e0_ zmp3Wj=1yll8m{>5be9FI(yjBWz8`Xsdw#UeU|GMDa9nofrPec{HoUV|t6g1b?lpZX z50CJ~)yI{}AM@ThELr5AvoPb{Rl&KPncY97!^PtBmRNr9H@WmqBX>!1#L>i;^%f>hmxxsb;<|1b0KSg@XcG9m&=vzH{@K}V(D<=)u)YR z92<>xE_mPg`~SgHGam}nuV&}pVA|Jys4JCc6^k+Rkrw4oPc7R1Uf%sS-!u8LwyC!9 z^>0&8sLb}u+F5jL(%y>eWsY}Zj&pOI&bzAbAwSuU*sqGAl24+<)Uw;FS*IDtF61zFx zy1bHNRu0a7eQo`VEAex-Jm0vCU-9gjJ%)?BLZrSttm0mKRW94=lek^ltNe@4(#*FR zPy4le?ggFJ6&I#v&vI!h-NN)mU)3(aWa5@}M`p%}&Q+DZlkx1!+wd zoUeU1dcLmXUeElc(HAe8dffk+_Urq*;8Q!?e%;P3If0Gkv zn{jiip+x5~w~`utJ)XqH&pmne_xGgOo8&vc(rT-8S?eeH@A%fkiT++^E^bNZnYKbj zTfyL0!Oz-=)#?FJ5%PJxRg)YZEVwo2`61@Osf(4Sz25L*zO?bzopr00%LYzyJUM diff --git a/doc/tutorial/FoodmarketEng.gf b/doc/tutorial/FoodmarketEng.gf deleted file mode 100644 index 105cf53f6..000000000 --- a/doc/tutorial/FoodmarketEng.gf +++ /dev/null @@ -1,5 +0,0 @@ -concrete FoodmarketEng of Foodmarket = FoodEng, FruitEng, MushroomEng ** { - lin - FruitKind x = x ; - MushroomKind x = x ; -} diff --git a/doc/tutorial/Fruit.gf b/doc/tutorial/Fruit.gf deleted file mode 100644 index a3dc1d84a..000000000 --- a/doc/tutorial/Fruit.gf +++ /dev/null @@ -1,4 +0,0 @@ -abstract Fruit = { - cat Fruit ; - fun Apple, Peach : Fruit ; -} diff --git a/doc/tutorial/FruitEng.gf b/doc/tutorial/FruitEng.gf deleted file mode 100644 index 15a378a1f..000000000 --- a/doc/tutorial/FruitEng.gf +++ /dev/null @@ -1,5 +0,0 @@ -concrete FruitEng of Fruit = { - lin - Apple = {s = "apple"} ; - Peach = {s = "peach"} ; -} diff --git a/doc/tutorial/Makefile b/doc/tutorial/Makefile deleted file mode 100644 index f009b12d3..000000000 --- a/doc/tutorial/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: book - -tuthtml: - txt2tags -thtml --toc gf-tutorial2_9.txt -tuttex: - txt2tags -ttex --toc gf-tutorial2_9.txt - cat prelude gf-tutorial2_9.tex >tmp.tex - mv tmp.tex gf-tutorial2_9.tex - pdflatex gf-tutorial2_9.tex - pdflatex gf-tutorial2_9.tex -book: - txt2tags -ttex --toc gf-book.txt - cat prelude gf-book.tex >tmp.tex - mv tmp.tex gf-book.tex - pdflatex gf-book.tex - pdflatex gf-book.tex diff --git a/doc/tutorial/Morefood.gf b/doc/tutorial/Morefood.gf deleted file mode 100644 index 8e27e9718..000000000 --- a/doc/tutorial/Morefood.gf +++ /dev/null @@ -1,8 +0,0 @@ -abstract Morefood = Food ** { - cat - Question ; - fun - QIs : Item -> Quality -> Question ; - Pizza : Kind ; - -} diff --git a/doc/tutorial/MorefoodEng.gf b/doc/tutorial/MorefoodEng.gf deleted file mode 100644 index 90ff1532a..000000000 --- a/doc/tutorial/MorefoodEng.gf +++ /dev/null @@ -1,7 +0,0 @@ -concrete MorefoodEng of Morefood = FoodEng ** { - lincat - Question = {s : Str} ; - lin - QIs item quality = {s = "is" ++ item.s ++ quality.s} ; - Pizza = {s = "pizza"} ; -} \ No newline at end of file diff --git a/doc/tutorial/Multi.png b/doc/tutorial/Multi.png deleted file mode 100644 index 37308de488cd3f5684d6a9fc4246227e77221e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14399 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 diff --git a/doc/tutorial/Mushroom.gf b/doc/tutorial/Mushroom.gf deleted file mode 100644 index f6b788b06..000000000 --- a/doc/tutorial/Mushroom.gf +++ /dev/null @@ -1,4 +0,0 @@ -abstract Mushroom = { - cat Mushroom ; - fun Cep, Agaric : Mushroom ; -} diff --git a/doc/tutorial/MushroomEng.gf b/doc/tutorial/MushroomEng.gf deleted file mode 100644 index a029a17f3..000000000 --- a/doc/tutorial/MushroomEng.gf +++ /dev/null @@ -1,5 +0,0 @@ -concrete MushroomEng of Mushroom = { - lin - Cep = {s = "cep"} ; - Agaric = {s = "agaric"} ; -} diff --git a/doc/tutorial/SETLENGTHS.tex b/doc/tutorial/SETLENGTHS.tex deleted file mode 100644 index 5d0fc1c72..000000000 --- a/doc/tutorial/SETLENGTHS.tex +++ /dev/null @@ -1,4 +0,0 @@ - -\setlength{\parskip}{0mm} -\setlength{\parindent}{4mm} - diff --git a/doc/tutorial/StringOper.gf b/doc/tutorial/StringOper.gf deleted file mode 100644 index 803d957f0..000000000 --- a/doc/tutorial/StringOper.gf +++ /dev/null @@ -1,10 +0,0 @@ -resource StringOper = { - oper - SS : Type = {s : Str} ; - - ss : Str -> SS = \x -> {s = x} ; - - cc : SS -> SS -> SS = \x,y -> ss (x.s ++ y.s) ; - - prefix : Str -> SS -> SS = \p,x -> ss (p ++ x.s) ; -} \ No newline at end of file diff --git a/doc/tutorial/Tree.png b/doc/tutorial/Tree.png deleted file mode 100644 index d28f73139dff3271f3cbd18f29d453c6eb6e41e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2582 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 diff --git a/doc/tutorial/Tree2.png b/doc/tutorial/Tree2.png deleted file mode 100644 index 1afc775cc486879e50e5f5ffe4c58721a1056a7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1124 zcmeAS@N?(olHy`uVBq!ia0y~yV9a1(U{qveW?*2*s99mez`(#3;1lA?z`*eT|No^o z=ig;uU|>x0c6VXuV3qY?U|`@Z@Q5sCVBi)8VMc~ob0ioT7}!fZeO=kFvvctAY4_af z=3!u9e&Xrk7?N@C?JfW8D-I$IA2g0Oaa4a$+El{dmA+7EZSON~4%;8BHXZX)qN8s) zAGFk{61df@u_CAVO`z)qJ*Q;NtmxG57bb_4X>E1W_w}Bdd1ij$q_fxZj82~M$X-2H z_omth?{8;M&z^Z^6PH+}W{|h;)+^N>yIDV(9j(pn%}LE$n`LIUqjdT{EdfvQZ71c+ z?^ualh~0JezL)v>&LeX>oUbjovOCf`dKztu5E;?t^R3n|FkUFZ=f5Y^vL%f{gZ0nlGg|w_aLw->3CvaYMj9-fd#H{!Irn{&5otpV+rNgV->+kk$xV^=#Jv;IL7t=j$E3U88cUrJ5^7e!& z21~L^SruZkgPq@(?9ochIN!@Zll_-QRn3(vVum5|uNK?voqa!h1=z)r?@0# z7gQNsd3Q9a)1~O4=PJIit`Bd{@7kBd`s+i)Dl^lThaYe5ay!Z|v5Vi2XW`Fe6WdxL zok!OmE-u|07jsB?->)s@MIZIf-<_HBX3MFrsa4anv`f?O?Uwqde`~_8_^T1G=3WhW z_4dj!vnh|U{`237|?ybA)+onj{t8bgUUJA~M=zdxK zoK1eR2iM%eqNvNE^!V0;E8JTD zU3K?5H1*1>Hl4Sez4!YjxUFP2$=zt@A?R7&_U*_s6NU7=mH+$7xYxxH+k%$s*|`}bnKh}d1mb567W3jX Quality -> S ; - This, That, These, Those : Kind -> Item ; - QKind : Quality -> Kind -> Kind ; - Very : Quality -> Quality ; - -} diff --git a/doc/tutorial/applications/CommentsEng.gf b/doc/tutorial/applications/CommentsEng.gf deleted file mode 100644 index cd8879118..000000000 --- a/doc/tutorial/applications/CommentsEng.gf +++ /dev/null @@ -1,2 +0,0 @@ -concrete CommentsEng of Comments = CommentsI with - (Syntax = SyntaxEng) ; diff --git a/doc/tutorial/applications/CommentsI.gf b/doc/tutorial/applications/CommentsI.gf deleted file mode 100644 index d21150ff0..000000000 --- a/doc/tutorial/applications/CommentsI.gf +++ /dev/null @@ -1,21 +0,0 @@ ---# -path=.:prelude - -incomplete concrete CommentsI of Comments = open Syntax in { - - lincat - S = Syntax.S ; - Quality = AP ; - Kind = CN ; - Item = NP ; - - lin - Is item quality = PosVP item (PredAP quality) ; - This = DetCN this_Det ; - That = DetCN that_Det ; - These = DetCN these_Det ; - Those = DetCN those_Det ; - QKind = ModCN ; - Very = AdAP very_AdA ; - -} - \ No newline at end of file diff --git a/doc/tutorial/applications/CommentsIta.gf b/doc/tutorial/applications/CommentsIta.gf deleted file mode 100644 index eb60a8935..000000000 --- a/doc/tutorial/applications/CommentsIta.gf +++ /dev/null @@ -1,2 +0,0 @@ -concrete CommentsIta of Comments = CommentsI with - (Syntax = SyntaxIta) ; diff --git a/doc/tutorial/applications/FoodComments.gf b/doc/tutorial/applications/FoodComments.gf deleted file mode 100644 index 2d9f7013b..000000000 --- a/doc/tutorial/applications/FoodComments.gf +++ /dev/null @@ -1,7 +0,0 @@ -abstract FoodComments = Comments ** { - - fun - Wine, Cheese, Fish, Pizza : Kind ; - Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ; - -} diff --git a/doc/tutorial/applications/FoodCommentsEng.gf b/doc/tutorial/applications/FoodCommentsEng.gf deleted file mode 100644 index 4ac054dd3..000000000 --- a/doc/tutorial/applications/FoodCommentsEng.gf +++ /dev/null @@ -1,18 +0,0 @@ ---# -path=.:../resource:prelude - - -concrete FoodCommentsEng of FoodComments = CommentsEng ** open LexEng in { - - lin - Wine = regN "wine" ; - Cheese = regN "cheese" ; - Fish = mkN "fish" "fish" ; - Pizza = regN "pizza" ; - Fresh = mkA "fresh" ; - Warm = mkA "warm" ; - Italian = mkA "Italian" ; - Expensive = mkA "expensive" ; - Delicious = mkA "delicious" ; - Boring = mkA "boring" ; - -} diff --git a/doc/tutorial/applications/FoodCommentsIta.gf b/doc/tutorial/applications/FoodCommentsIta.gf deleted file mode 100644 index a75c4a8b7..000000000 --- a/doc/tutorial/applications/FoodCommentsIta.gf +++ /dev/null @@ -1,17 +0,0 @@ ---# -path=.:../resource:prelude - -concrete FoodCommentsIta of FoodComments = CommentsIta ** open LexIta in { - - lin - Wine = regN "vino" ; - Cheese = mkN masculine "formaggio" "formaggi" ; - Fish = regN "pesce" ; - Pizza = regN "pizza" ; - Fresh = mkA "fresco" "fresca" "freschi" "fresche" ; - Warm = regA "caldo" ; - Italian = regA "italiano" ; - Expensive = regA "caro" ; - Delicious = regA "delizioso" ; - Boring = regA "noioso" ; - -} diff --git a/doc/tutorial/arithm/Arithm.gf b/doc/tutorial/arithm/Arithm.gf deleted file mode 100644 index 00d6b4780..000000000 --- a/doc/tutorial/arithm/Arithm.gf +++ /dev/null @@ -1,13 +0,0 @@ -abstract Arithm = { - - cat - Prop ; - Nat ; - - fun - Zero : Nat ; - Succ : Nat -> Nat ; - Even : Nat -> Prop ; - And : Prop -> Prop -> Prop ; - -} diff --git a/doc/tutorial/arithm/ArithmEng.gf b/doc/tutorial/arithm/ArithmEng.gf deleted file mode 100644 index 5d2cd966d..000000000 --- a/doc/tutorial/arithm/ArithmEng.gf +++ /dev/null @@ -1,27 +0,0 @@ ---# -path=.:alltenses:prelude - -concrete ArithmEng of Arithm = ArithmI with - (Lang = LangEng), - (Lex = LexEng) ; - -{- - -concrete ArithmEng of Arithm = open LangEng, ParadigmsEng in { - - lincat - Prop = S ; - Nat = NP ; - - lin - Zero = - UsePN (regPN "zero" nonhuman) ; - Succ n = - DetCN (DetSg (SgQuant DefArt) NoOrd) (ComplN2 (regN2 "successor") n) ; - Even n = - UseCl TPres ASimul PPos - (PredVP n (UseComp (CompAP (PositA (regA "even"))))) ; - And x y = - ConjS and_Conj (BaseS x y) ; - -} --} diff --git a/doc/tutorial/arithm/ArithmI.gf b/doc/tutorial/arithm/ArithmI.gf deleted file mode 100644 index f41b57fa6..000000000 --- a/doc/tutorial/arithm/ArithmI.gf +++ /dev/null @@ -1,20 +0,0 @@ ---# -path=.:alltenses:prelude - -incomplete concrete ArithmI of Arithm = open Lang, Lex in { - - lincat - Prop = S ; - Nat = NP ; - - lin - Zero = - UsePN zero_PN ; - Succ n = - DetCN (DetSg (SgQuant DefArt) NoOrd) (ComplN2 successor_N2 n) ; - Even n = - UseCl TPres ASimul PPos - (PredVP n (UseComp (CompAP (PositA even_A)))) ; - And x y = - ConjS and_Conj (BaseS x y) ; - -} diff --git a/doc/tutorial/arithm/ArithmSwe.gf b/doc/tutorial/arithm/ArithmSwe.gf deleted file mode 100644 index 070dcc280..000000000 --- a/doc/tutorial/arithm/ArithmSwe.gf +++ /dev/null @@ -1,29 +0,0 @@ ---# -path=.:alltenses:prelude - - -concrete ArithmSwe of Arithm = ArithmI with - (Lang = LangSwe), - (Lex = LexSwe) ; - -{- -concrete ArithmSwe of Arithm = open LangSwe, ParadigmsSwe in { - - lincat - Prop = S ; - Nat = NP ; - - lin - Zero = - UsePN (regPN "noll" neutrum) ; - Succ n = - DetCN (DetSg (SgQuant DefArt) NoOrd) - (ComplN2 (mkN2 (mk2N "efterföljare" "efterföljare") - (mkPreposition "till")) n) ; - Even n = - UseCl TPres ASimul PPos - (PredVP n (UseComp (CompAP (PositA (regA "jämn"))))) ; - And x y = - ConjS and_Conj (BaseS x y) ; - -} --} \ No newline at end of file diff --git a/doc/tutorial/arithm/Lex.gf b/doc/tutorial/arithm/Lex.gf deleted file mode 100644 index bfc725772..000000000 --- a/doc/tutorial/arithm/Lex.gf +++ /dev/null @@ -1,6 +0,0 @@ -abstract Lex = Cat ** { - fun - zero_PN : PN ; - successor_N2 : N2 ; - even_A : A ; -} diff --git a/doc/tutorial/arithm/LexEng.gf b/doc/tutorial/arithm/LexEng.gf deleted file mode 100644 index 50a2a99df..000000000 --- a/doc/tutorial/arithm/LexEng.gf +++ /dev/null @@ -1,6 +0,0 @@ -concrete LexEng of Lex = CatEng ** open ParadigmsEng in { - lin - zero_PN = regPN "zero" nonhuman ; - successor_N2 = regN2 "successor" ; - even_A = regA "even" ; -} diff --git a/doc/tutorial/arithm/LexSwe.gf b/doc/tutorial/arithm/LexSwe.gf deleted file mode 100644 index 54d66b6e9..000000000 --- a/doc/tutorial/arithm/LexSwe.gf +++ /dev/null @@ -1,8 +0,0 @@ -concrete LexSwe of Lex = CatSwe ** open ParadigmsSwe in { - lin - zero_PN = regPN "noll" neutrum ; - successor_N2 = - mkN2 (mk2N "efterföljare" "efterföljare") (mkPreposition "till") ; - even_A = regA "jämn" ; - -} diff --git a/doc/tutorial/food.cf b/doc/tutorial/food.cf deleted file mode 100644 index 6c6379c60..000000000 --- a/doc/tutorial/food.cf +++ /dev/null @@ -1,15 +0,0 @@ -Is. S ::= Item "is" Quality ; -That. Item ::= "that" Kind ; -This. Item ::= "this" Kind ; -QKind. Kind ::= Quality Kind ; -Cheese. Kind ::= "cheese" ; -Fish. Kind ::= "fish" ; -Wine. Kind ::= "wine" ; -Italian. Quality ::= "Italian" ; -Boring. Quality ::= "boring" ; -Delicious. Quality ::= "delicious" ; -Expensive. Quality ::= "expensive" ; -Fresh. Quality ::= "fresh" ; -Very. Quality ::= "very" Quality ; -Warm. Quality ::= "warm" ; - diff --git a/doc/tutorial/food1.png b/doc/tutorial/food1.png deleted file mode 100644 index 767069dabfaee3fbea6193ab77c7c79a83b02f51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22805 zcmeAS@N?(olHy`uVBq!ia0y~yV4T3fz$nbY#K6EX{pazw3=9mM1s;*b3=F(N3=F(h zj4$rayvM-6z+U3%>&kweLx4w~QQ%-KD+7Z9gQtsQNX4x;bIW67j^F*Ce){X%S^rP_8pP)IPZun19f7*FjzWik9q}e*$o?(oQEiErP z?peFHYZ?k(RBX(z`(>#$S(UrwfAQv%=k4dso%{Cf z+DGR1E1&Oem#@1}TjI1~!PQfBB`lvmAAY}AJa{ET8zVEFxWsCX{gvgOF$pAXyR|2|Q-@9*vXx&Qy~BzM5T~mrAPZ#nW{;_K6)w6TmR_9j6v;-;DBt5@Xer{Ui+rA|yF06SXvHNo9 zy&Lx~uD?HPYTmY+-K(XVYE3OOKe|r++PqkJm5Lx2qxb$FzwHYzbv{?0Qt|rF*2>I} z0!*_nvoaj8C@Z+~;ONcZNs|{hF`FbcE&P1XCaxzjA}^}OWy1c0MsY#6ZPGTa@#*U1 z`E*^nCrke)d%FH2whc!%-po-}R=&)VeaU$J!i5(f7KDUfuX$hX@9yfl@B2N+oiW$$ z-n9+g&~UQj=Z^#}Q3i&-{^I#HOvjH`T6148ITOdp^oN0ALb9UN;iy$dT3OqF{QUEM zrE#)@p5Q6>H&cuhuH?zIGgMVqv$wcAIvp^`d4EA8A@ZL{TVjmK-@VJ{t;u@5Gvu;| z;G+!+`(5U4+q*dU<=T6@&0gQQ=zo3bGEdb>)9>5LJf8mTPI7tubMgJ}FZQ#nUb6gi z|E9-!errBX;_&W1@7ls<|NFwb|8+leyRUxhwVkc-^v0C!SzESWzIL0dRcqf(hZ7T3 zR&w_*SR%!6;KB^e8_^%%EG`e79`IIp_y+vexC=JTuHMNahiQvd(ES7c;mWaQ4MwRJC-+CP2z)bFhjlMK5F zufh}e?K_&7YW`L|c*>eF>+c6=36TTbVr`El+Il{#b_FOXaNIfQq%bk#>Z1u3JwRedEYKQNYQ?#ly}0^^WpXFB|itNrhq8PBF9JTb3!s zARs9zC@gGzQfaowz3bw$&TiN)-rdC{z|_Yq)9$(SzR?{x(Z_ zYyZKlkufP*@8rd}qMdpN_AlQat~WKyd9i!j+Us#w5@uY@vi)$f@L2XD*Pli@uEufq z?A+WIg;e;bi+x9*M)t*s+U+(a^u<5mA1bGcZOWLap~5rOGz7r(!EyKf4DGjo~!5y|>XB3uPDz7B1Vka`X2yOFtc#uUxQevAvyA z55LJoftI&>n*##_cbi+-*@PGVsreaPecgUXw)YIZAD0);zbVP_bB^PQLY-BAkG>bK z%B%hR`hHGE#tgYv{PjQP*ZzJtw|vg;1YQO%EX!|PYxx?S?;i=P&Azac@AGVlSSamI3BJlfLZ_$>^ zFMr&u|G%<*+JedmZ%L-(O(H`1iXslP(ry@j{;@##h@0DuDyiy)O@~>751m$dB%mL} zrg389Vztu?rY<_7HPhwOrT%$q)~~C0`ap1Xgs|WWRX1zvwKIIy_J#=fo;|xG-lZi- zA!)8}?P0x{W=En|HSj&&aW{Ic+>4y4?Z=9f|Jpv@;<1!BnCojZGuxf+?dNK)o)S=O zEjF27b^XB$gM~pJt_!&)Et%`azBEuP>h>)a#gF^uEZv!ZLtDYbrS0LC$6og(bU*S1 zo;FeOwp>%Itj7KF>Feju4@*R|9s40@cqGZ_&do3H{{IWAE&b$JTf6t}yBTsiHa2ID zA8-Hv_xk>Se?L7n>P!ie->`V`<1a5KzdP&PZkLgrUH$E*e3y&T^2*>1DWxGYrPSp-)VrDj-)w$BvZSlsn zYjZO)GM=BC8*f*%`DV?pFE7_dZ~t_;URTV!uI}I8@AvmF@T+EHXJ=<)o2DOsE}+i3in_#Q>^>VC8=IS(+oQ*i zgM)*QCK>KeFZ=1NAhyk$Loq~aYMyp;;*8VN_18yl@8dt#o|BQWV*UE~?Rj&n)n4}$ z$UK+ac{FKf$;(M`>;3)w{QUjd8D#A1Vpd-@Gc!AO^r&w1wjKqJ>8C@ZqO5Fe)&#Ab zG-=YGzkmJb+wCoU?8e~W@85s;VMlMTsZ{Ut^YhJT`pld;bK}O1e{92of|?R%Tz(14 z{tOIdyZ=5q+HKMI{Mj=u7N*H3Ln0z9%*?hGKR*|lcYVTy36mxX?Tvf?{JFW2k&%tf zp5o`{jMLA3klb+lt*WZ3is!Ru&-(iNzkmCtrlxl7+O=Ole*F0LYudDF>*DrSePeI+ zTfV#KsaH;p&S8Vt*x0DG)AVK94;OxXVwl9hY++8P=f8XFhS3qA1PZ1&lsM~^l)H^08Vo}ZszURqjP zOKVfqT1!hyK|w*8Yk7Q6RzwH~^2C#KWoP+?4F=F2u-={p;*Uc08IrnYU%mOpRv z>rbCN8M(i1@5PKKZ!I_y3kwVL^7Q)tL@4I1YHi)UJ(Ay|@Aq;0e;@yRKL7vQ_Wh}m z(-y7x{QUgq-#;h#`ug6zdsk6WQQd!DN_wlf#rL%G^6gFwBlgw&oT%*n!uiJQ~w?yfl-qhRM zJ8|N~lP6EM^UFUwTvAr{>*r5R5iUD>p2ItCGsG_x6%~E_`0>Ms52bq39v|!FYF)H& zVPZwajMST_r|b9k_xopta2(+^cAj3))%ta9eyz5V(WLwD>sIXAS@5vw@Iwhn$(1Wt z-rSyl|BvpP6DLmm`t|G8t5^U2)zzhEWW4zH_BJaMV_Tw$Z?Q~xaPa3Zm;JksK5A)U z+3xuK-}HW6P0f{?Hf>tI+zkkd{=tKUqM}XdY@a@VzI^%e@ngpfc)I)hpIf_dwI&r5 zT)2JPT1O}6+YHOT!v;F)>dO}_U|`r#`}^CcPetWtG&MEVCZBv+q8Gi5$7x6M@xCcj zrhNSPanT~B^I8S&N2TqqUcI{Kq4DXYPrJaGRv!C@{}_ ziPzFcXRUVMeP=iQ`lf&X>i+53mcE*D`l*+P$Ah)%JcpkYS)Sfx;u|b-biR;~(4+|y z6egdnsj2y49k4Rw+4JYWfBkA}Z$EF>vou6YKW2x5P-lqN)aB21J-(8)mBsPLj~^jn zVQ%j3<>lq(rlz^Kwq)8ZefavdwULpKn3&o`k2{91OLqPEQL!`T+;cG}4WUk(uToAY z40sM3I6FJ@9R9#sdcXGj)G1Tu*jATaUl$ucWrc&nhTCt=X8S5l+!3SKwW!4@v7+L~ z-SYc$=g(gspb-=t+%IdbCcq&iB$Sn%{gYkFHPFP@T83|5**=dAKjck(g;@lJg@Z#v zTm)LyuU{XbFMjQ-?V9ysCL+n_Yvhnk&%%LP|M0+3=J@Sf zx5Cy$985o)wDHTAFC49hcJ11AGVW|8d-W-^X4}w@0t8u8xk5_MGJ7;}fDGvT@_aqeqYK zE`J}UAu_-An`HjlGnx65RCZQ=PMhiTO!D(A)9hKZW_e8N>F*EMnmSKS_kZ-_iz4FU z(mZV+KNiOA^HsaNv-o+AS#&|c2c4InK7IUnTwZ&s*F=vcVXOcC{kwbDuB@!AJDX1M zGkyE=WrE7hD_2yedhOn|t54qkoPkeVoZNl(IZ3Iz%@;3TZ2$AgWYg?xKYssaX6Wkf zzP>KD`wG`a0iTNO4Y%L!Xn#NP;lspMr-S?DpDbOne!c(l%f0>m#yp3uFB?hqR_&dq za`MHC7m-36ZomDLVaVX1A=1{?_U-FeL6(E|jm*r<)m2p$>sK-}Gw<8CPsQ`oT;Hxm zvu4doN={z9c=6k^>hkjK4hjLQuS&F4R##ig^xeA`w=u$J(h>)S4M@Km1y%+5z^P!zt<nCr%Y0wj+H1qe9$^J)@Hb&^ANvIhc7uy-v-f4cfhtc%+YO5oMZoYNz zm*eH--P@bCQ6X>gvZF7){=I(Zbi>jwnSOqLe(~}0eUGi?_PsYhTiNBIa_ZzsNm<#a zXL+y4?+k64I%SH8ghaBX(HkA7a0G zF!?#l=5ufUb{*K16S2TdS@l~tlZ8y*^|Jw zA~twjTXFMbSa?{@-5q7;Cd{9&`DMrUgVT7k-)}gy{pOqSS6S*>Obo3~8!P|j8ms>J za+B$Meq%tz^Q-506HI1WTi;6K{P5|te*L$b=?o3x@iiaQ?SId#Zmm*@xZWP+wnF8| zqa{b3Iv5p{)*D;$aGbPW+wAYVPf6x@-sS8ghHuWTo-6HOkgX_VTlMACRPBQY4>B+` zAN=s^^?Li?Z#H{u$YVC(5k7l(!RIfldl(gVJ!a)T4AQv4dP7+rgQ8)y;+tDrv&EJx zdu*6i_FL>sZek+CXB$@yg?Af@1bnt{$UC2X!~kT;?7YOY>?#qTm+s$RpOT_tYC5%i zYH)bCxTK_JS}0k@bW%oXX@_muC1*V_t>DopqKW}RDYRIbR)yL z%2PX1|6Exa+{^n_aAM%=>+8RN{{GwOr_2laAE&+b85uHWDRD3z=bY&AWA*=E>t~1Y zT~>Q`rm|OU^3M+on{Dsj<>c&)-j)}deZ_p96}$cKH!u3;TIZii-&XwW&)xESoqc^L zPn>x0_E~s*-P8N~z8?9y?9iq=6Y4%ZIXU@mZ0yR+%-7fR16ED(cHfXTCzDm7;Npds zN$EOD;%D`A4+?R$?*H>tKmSL`_RVWu71Y(A|M~e@+AL>+*ZNvF0|SE#7cWknG2_MC zw|8&ckPsDZeO!^7o9pFu>cj~Sh69&>U;Xp?s%J4n!@PIvo*iq`bQhj9skx~%c$GYp z$Hn3^*#;6k?f2^Qzs}kkUH<0P+n1HU-@vv1|@JvqbDnVX^zaSF6|O-Q4u{;_-cjJGYcnl=!R*xclL% zsfo#){Q--vWf&WU*PWbp_~6dsd-pDKGQNBKT3$qig&`v^bFROqUzql{n8bxQb9Vi{ z_q$L=Uw5yGfrZM%N?qB5i_&LRJ%02={T%=4C6D7j+*lA?>b=JMM78okgP!-fQ>RZC z7ZrW_?AfmHrp)|&`=TcvK|z<6`Of}fuy^m?pFe+E&CN61e^ZRB)zQ)M?Af#LR5!P^ zx1T z?dV(+sj@e>UdszGFcetMRri-Mmf+#H`?A7AXWc4|<(a!SEjp96^Fy$2Pp{=#vpO|CKN}w(zP;+~uUWHh{a6yRFn~kBqWalqZ*l#W zmNwf@TaT~*&S{c<&XP|}WvQ8oiN;=2r-c*jTbI2IR`37*{j1%t8|E%aA20gb-P)F1 zUS0kA#fgGvr$V1|oli+y8>FS4qcQtxSbY5U_XpiM8aWsyY}MjtxNzsrtvh!vT)!*?cH z`TT(N#6ZL6-RE1|+FD!PV=U_Xmc3+`s|pbpimF=qq$Y4-(8^o2*KPOht7}d7=Wac8 zsay5?o9cq9+cQEIzB!YY=CVS|`li2{l8VzMzl~<<&W1Ag7v+>$=f2q;wtIWb+F7$_ z$5%XT6_2Y}xM&d*!-X3+G7KcT8 z;%5ih<$HR1QY6w0i>1ZI&CSfrY;4Zti;0R_&h^_FQ}^+Owypr+a&Og{_OZ zc^L!_>pv;{D<)QOaZPvH-r7I$e=grwUZkdW%k}87{U46+*S;F{Z^iOjUdDopcizn6!}as6!!tHoX7If@q}=~p ze)YTi4!oE#~X8EdKSyeEy$*wfuHw>1Ht|=6^X&e#@VB%$JW}850>@ zeblvBr$uj;b?K`q@eA^fo|@Bd_v?advDoUhn|J@NDg5~K^itc}+P}=rJmtD+vk#}1 zTP!VFn!ZIjxvgn4>+J3CBPUKx-)NZzr9Xawzv1{?q{!Fzj8a?bHCzKwb$13 z6P4%Z+^#);egD_H{Cx677h_yqSr0eXSHF^6eKsy6l*Amo$s~TZw5&8dG~E8%k@7!GrNyBy#8+*L@u@o9YR9$FOKnQ0=f(*FlPo+F zemt3YD>^^%=&@sV|Nne`cXrjPReSc>G${xP3;WNtnmS{~jceD$WMq5dF$_; zGIM68iBzc8)alcwJ1u-LJs{46qv^zn6B?SD3p1q{4p?)fNwn3=zJCAS-oQX%`svG; zFK1_GA5Hq$tJ}kKa4Wl!U)Q{U7tjCyb31+#(?MhVs(H;jeqUH(_uocGXJJH=q02;nAdxw{n&Q#6%QC1ujgHIClN~{3MIEW@)qB?;p8Y7%blO zz2q#EIle)-^4+U9TAF$}d28}>^J*Ss|8Em)YFKdL)v8mUHl411w{!k^`zOzmwHd35 zrWe?iacPR!e|TZO%i7v+{*NB!h!USYn^(V{TK{+J#&@UA?fvfg)NAXt{rlGCm84i$ z=?SX0EccVi&doED?0s#P_pxWsvR$ioe8>q;Z?7vjkhi_P#hsZ$c~NqF{nPmGcm5YR zOnCP!Izr$QkGSmokeGsF$HUKy2Y%eiG|_`aaf-)M6K>O}{rB$eD_k9_F^Pxo6|0k= zrpWH(Gz$jBw5>N=l?)jcEM9x_WyvO;>DzP;-#$J)$)eH2iOY5U{!izp9s70UNlDj3 zh66@nYuOkyrrdjZ+Sqg-BLl;%Wtwf1y;4`64rgLWi90pphsw-D(he_5tTfxWdH8DI zzcshEzBMU$dLYm7!h+CyRgE52&rOZue`WWmexDYw{IVoZ+k*!WE?x|*tK?oAmTe%R z(8A2jyyu|O`DUw{5#fld+MRIgMYA0B&ob93|WZ*Fcb+8LuF^zqlzr%#{0 ze=jd1^XDMD{GHaBQ`Rq&xc06F=*{U4#lGzPG)LfnwI{H^}e@oENm?Rix7*a zq0ZqV3C#zOpDWCmCt!S0HHDFZYpegcTfR3dvpMG+@Kijy!MVAaZ@ITtI8T2MONWXC zgTUeAYt1gk)ZN!C3;Law?p4M0tFdnBsc3OISwUfYE30D#z2e^I-rxMr!G6Ciz~tzL zmy$Q-OJ!}!^_V--Ba%GXlT#>`a)R(F)Tf)x5 zCamIVxTZh;!OF+;)l`;qwjSa>+8Vj@wFDnSo>E$jLQrd;)+h|QZIakElaLsPB%xTH%t|{!lT-)(f;jB|v;zO79b826o z4S%=m|HTh4cKo|1Cw|yS<_Uw}*~g|Ar*Q2RX30LlP3qq$DiNt zp~R7NdYW#~%8->I?{02R|Mt}KS%sMI%BVRr_6hsRD$H1H`h&gIMO|gS)xVi%vnEz+ z{%tOqXvk@DdS*|XzrB@;0LSD@(}bA>&la5ydp1pE?#3BCg`Jw(#n(5W(Jle3YxjDnJ0hVDV=@q z&-M9?3^fa5*Ppa`t|`M}a{8iHag$F6&q^W6#&k0^

W)x-gxTy|ukC${G?ri16zjfwSyrNL?mv9SMt2?m8}9tJ(~*IM+JPhJ$mw9rFm+69x=Lje4Q_by+Y>0D-2FE0DEe!~J&7}1w2I|t zwRW8r|CTf7#M_6HRd3$he6{bc*}aRmG=#i=lzZu%-ZiIBA$Et`>(@n=n$x`%1iDm% z7#3W9DB!Kaz|ekIZ=x6Dfn|}!Ad4i}ju&o>U}AU@;ivFKpVvyZtSyz5iSe{S(9G$( z%_Q5}COr0Txc}15C0K9H0nSHJZ+FM|%_`z-ahjH>8l>qPxWu91aq)eHX@#e6B$VIl zQaL|&YwogXiCMvJ6TH+WbhnDJ=WYt*>ngptW^&r`wPn*6np^9xTD`jVl9I^wu9wXL zP74c8Eecif^poUK;&@b*o^#jjK;;bYgj+T`v*w;v+kR8_a=Hft!;v6XKY=A4XTHB- zDEO}5lGIqB6g8(I{IR<0qnDhCEe*^KySK>;f4p?S{sya4TfLyq1RWNg(@YF4LYi~5 z&j)ic78SRc_w;VvYF7P@ldu1oJ}*PVbhf**^EsXV@k2K3$CW3M z2YC+Pal8KFW@38eH_&jzfyC|H6B2YalomdCU7j2B>t_$w$L$q99Q%?vc<21MCCIE` zb71za+I5CjZ*HyP5_F7u<+o<;>sAH@iwokMVoXcaUG9Ed_HNdhDYs2N-+cLTMdv+{ z38%SPmkO#>txE{(iw_*M*lH z6z*6=uHW$_^}23E2dmTCPq#K?Rc@Hyrtsmf{9LD|R);$+dWz?-nQDJF3J%OS|n8(r@;Tn-`hP}MpM}_pCE=g6Boc8wR%Zo2dZluglS5{X3`}eQFp#ujT zdfgUZf8E~R{|_g{=Q!$%)oP)p@ktq;PR3dwiSvE3<6(8 z#TBQYjV?$(KQDG)&Cc5sU(ea|=hJDo#eo_kpczbM<;4pZI_gcoKjZZ|YlgOEtG&*7 zJ>}|4mR{{`e*bSqcy?`e?bN8(^LM7bR>^$4W7jdO$tR~wGRoW+R9CkzLg$#ln?tSK zx3}e5*Z$fPwN|YAsHv&x_q*ltyVwQFn-Vt4tjT!wf6WSijU(^l#HR_^mDato|Nrs) z``Z7%Cp>;|mHk)a_IvN%y<(GSXpqj!Z2qvj=ESU7vv%y*@sm3&Ir*`F{jcEZr%Rul z5bSlkeDmhYt6BRuHK_`46q&sj?K-lp@bgRmdyN8ZF2@`>+J99qYd>@D+`G4Lw?^p9 zJE!|@_j|jI5pPPYzQ4ckFK}dWzn#`ZkBnLWzOJwDW#KMt=eV|`*Q#WdvF@$>JAV7i zH@)4z&o*?!o3hzaYroBL`uK*wzTvS1i$L=Y|N4KIC4cqk>aw!3s(99Yo_)XM{hJpr z7HDYc>Aj1Z=W*%yadw6U7c(l_7d?Lb`2F7R^X}%|-_eSLNH?+X_KDk>_n zva%v0BV%Ld`Yn&%oYotnB`YIiQ}t!V>8Dk%RxbCLRAM3H>gsCZn}2hYtAfCty3m$H zrHw5MS3c8z`ts)M3VUDUT@#I>&#aw#b@AfG;p<{5e>`lz`+I4S=3xVI{Wu?QZ*DHG zN8AgyZ=W77EYrB7_s1bawZ7&uc5%Tq9G6b%gl*e(`N6+rOAdwu26NID&P{qF@_2y+ z`_TxQEf?Kp=4?6XclL$;*T3KIpFel*-mcOh_hZGr>~dX;Zr#2e9UZON6}0*)LqqcM zK37-QwGkU1z1@DFjp4=DU*GRl>l+yvsi_^y+dkW8+1Jc7ONrXb;A1*}ef$KfbVPE`({$t!?3<+0Pg}!|GQlhO;MqF4pI4tbiy?gVfPGx2A@buKw(1_Ta#`|9A--(IJ znwpwvn{Q^AJbU`|?y|2cpMzFxE!Gi#R|nV@cPn#9g-gi|!w6 zX15LZE47*{bG%Z|cU9Qx`8A(B&kNi3?>e4c5uIF8^5w(B!_sCs7hZq;b7+yYc^(f3 zhegeg0xz$w0F9oGj)-kJGlNz>**$Z+X6@XyCnbfmvbRSaJL}e-dnd_ABjmcAiss6d z&Ov7S`u!@)!?LTZt0N+2I4v}oeRj_*>0YmWssxe!Rb5Mrlne2St+zUefpH4fm>Yf z%C&1+B3yA7x8>fxcI8S)V4$IaLBa29lj8$Un10P%^Y(4VvY2zXPP@)aY+_;#UmsWd z>B-4vc78ugTMLUB@z>c88|=PY_vgpQW_Er#yBdkR3?0@-4$U&iby?zJ@p+GX^T8j} z@Bcew`S450sRLXxm%s0FkN)=d_VH-*i4!MU%{{l-o`b=|-+%ri-e1=DfA&33i;J6A zy2>A z?=2?T9S1hL%;nk|!t!Vtrx^RftCq9%*Djis*WNv^L|*8}v8UI46lXnj(_I%G%EhSl zWgk!D4p}Ri?#XAekFQ?;W!AbcGhbJoE!{h<-}_eG*8g|Hciz#~(zwc{~ zoqVv>xt(uky|ql=V)y=C=C^O%TD5A`o!PCet;)*E#`7#viz_OA+}W9(8W$OP(m%R5 z{lLqTxQx>WnjL*#S@9Zww z86$9L)-gW$t(#sId4`9FJ3BWYOz7zAt9!Y0Is*eME9;*(z1QQadlfn^FZXwMbKACU zTivIV>Uz^(-`QDw^XAQ;KYw1mdiCzzyRoscot>TQ_y5~#zB4@31 ztm?O(OtC4`ssAYRBT?dj0S|M4qOjdQ)2Ck_Z%vxGVPm?9T}o2bl%p0=r5i7pn8}EU z&7Cw;U4Wzg*Y4f7q&8p6op1Z>*{!1c4s*Bn-+vqAyu19po`#0O?6bGG3*FTJ#9&z_GT3kynTy_>@G=I-w8 z+qZ`=4XR92(9$|}{yhI(zYf)-N}OVB3~YuR3=I+o9Cqw~W&dq$&8zy)wW3Me6JGw_ zwOHu#6}x}Erc0-apIfp%%KXOd$oN2`dE32M-=}badQPZ6B9mz*8(AyFE{~@9{fJr9bVye|mVgM(wTonpN&m*R<*9S)rv2*w_TN-3GxFFg-8#pG$1W~> z<=q;{nR)P`p+sA(p3SzG}+nROcm0Jd>Q!e^B=P8})Pc%p6B9JzU1StG{ozjs1jm?@YGv_nyzm`ncIg z@yeLdj=q*xTH)w*0G%et+=?n}mD&tnAZ|gN&qB zduvW-W(bI_I+rIMzb~tK-}=?t)>tG)mic_z#J#+Kfmnk>ji|1Uynf&xachy|3=9m- z2i|5eGz-Uj`@bsh;pM-zcG{Ass|{+*RPR>3zrOsvNY{}i0V}>-V_;}wuev3jt#fSS zw_~&B_*T0lDSQr6S$~3+p+a-7v(jUxl7}WwwRA1|q8OMOceNOoaNgx=W$a-VIBd|6 z7`*RgVAXFI)g@=wg)uN}E)043)_AhcBOd3;OB|Fwb9Hw0dqz#0w>eJfv(wcchXr~M zdpX2eBp3wR8Jcgj^!dJe{q=fy?2~$H*>8uE+ugtZZ9UE>-NtU)T>I_bY2#yZGbdC% z{Os@6&c;-dSfroo9h+Kv)OFgzKvQLb6Nh&3Sxj5~S}t4G;A3)x41-03$k~f$RP;^i z92aVxZOIO9bdZ=kLvHR2K86WZnl{b3yT2EnKbyMRtmB9f!+}q8c-sW`-tpEH=n@Wp zBH{jp$5)u;Wu;ftH>-snJPZn~hkC2!<9?YQ*|1?vZHb-Y-_S_~@g})kjV!OdCrgUo zxMq6TU~yL zrowj4YjajSJ@obDzZG_ALE5`s9B~iZESNCEYwg*)Mb{Jjk5B#d*{;q}`;%E^+nSYY zLlXpp=X~B_S@gui-JSh-p;T|$?{9C9_sJSd@Ids;?O z>uaOA6-5M&yq|ZcLo30rpvmLpiO=6YF4lOy{QV#9qB$`Ox%m3cq>n9YiP@JEIm7R$ zxc+%#QZ%UkKMQ-@jh~X;*9%$-<3yi&vR{Rb!aN>y*Kfr`}Xt` zN11pSy3*{m@)9({W1kmX+VYf7FqoD5cVE#X$f|Yg_Wgdh`=>vX z?f2`~uSe@l(~aKtLF-x3&L6Hl1v2icJq}H#k((IU82cPGgeKg-xAoE0SD^h%qb%i}01DVbwmzi;zqV-1ar zo10QkPt%?4Kh1BRjiyj1Xc_K@2M2AdzjYjaq#Et7+`RYW?RRt2ALQ5nzOBFiPf=jt z#q#~XW6#Gej9c&T;ql;VRz}8(B}-CXUt9Y*exh{aj<2$Pu3qd+3_t%H@G&qQ-?!7& zS65t4YfU-($8X>MUE99z>!WUcz4(25mMl>*G5NCd`Mm09Gt)J?K9!i7&wcpt;h{r^ zzP`Tx|Ic&#`nyJ+*=!fHcKZtlPc6(lIP0b!3wa3T%?=lwjJD7T2#j_F?z^ zzvuF{*Z=u=eEptJr;5+ph6e@~zPOYN&L847lOY7HT`TsvaL;m0I z6mS3YN}$8_tq>Q-ooKyH7HVhnr*LrYj4)W6%wbVCH-p2INx9RrzkKq^kf^9#g^%6p zJoWk>dwF|rjmizVvP5!;w0Yi~BC+?I`rKDv{q!ki`|Y2$f1=hhG&D3c$p3xeUbXk% zg@w*HZ{BXeLL~198KWoiXD2aUm;1X3m@$9AoVpS!k!AaNzR#%JTB< z)mNP!eC(Uw|9R>3xJ$3U?%TJS_uJ`|O%os5UpE}5P@G|6k}zkmP!tnl*m>~vb_;psUu@9rFn!lv>)CpXvp z{M2v%&%(gKKuIa7py0!gkB@hky?w-g^X<23)299U)j4s~;dXxee?K1c9Ip9rkUcmo zzjXEOA3t_XpML$*)6@4W9`|0nc=5}ZFVWd?6IrIou6ETGZDiz8|k8n9bh3YuAtat*x#3`~QCHumAJ-`Mm0ND_5R0j_~#EeZFk__V4HB zTAx03s_y6M_pOdTzI^=HD3F$tvggAgZc$Ouj~_q&NhtR7JNNJJZ*6UDRwl>v z^yNNkkC!WFnn=Y>{r2YO=S$xDy*)h|B3%%inzb`nC4O!ght0w{PF3pPyIz z{cd^r+gn@n@9(Sq{jHMi_QvGneX`bfX1`mw@qPXO-|x;X+r3{>LPA1Z+`Rg^V57sG z#-^`-u7?Gm;fdYAe*NgZBimm|w7I&vva+-H_w>}9eCaB1=+&!NbFIr4ZU4t{B;0R9 zQpqgW-6|U+)?9wMZ_hW|pHC*Qs8tZ~=KA8x#?Tb~@8BQ^##)zU7ds>17AHG!ff2b;B5D^11{76vp zl_xTC#TC2UKVCm|e<9jc929s6g<%zHQIh)`olo8mzy1p)8AJ0}0%u6D|3 zD>jrl?KG{K=eX(j9*C4+AG4WwHhg?}?iZEg^E0BDnHqQGf;|E<6zUNc?nVcN!NBiW zZ=<5suAW@m4XTFbz&{PNAqmyt-7 z>#xr~`)u91b?46cEx+7(iua=^dvD@hskZj^+qZ6cd3%5U^ogTsN6E`e2M#cJPOAR? zPPEgd{@3OCMMXt({GMO9AmBO4Yw4tAney`U@9r*NyvSLBn|tF87kBs9CA-??>nv1M zmh9bIn~{-mbyeu!zkkhU^D-z*^f1f0QSkrocXn3RrAwCB{CLpJZ~G-6Hda>4oMqDn zf$b8rmd&0u>)7$*qFk*JI&2IAEDHlP7#Q|cx=vDIXn1T962_qt(GlJ3wKOX?mzS59 zmy^@e&o6Fg(NY(shpgO<4h!@iPEs&33R)Y+%ph0)=VMn_*SvXhy>6SUzP>ti=ur9n z+UfH@PMA6KBzs>+$A^y}85tf}>`OYz6;j2Kk{HW;*q|-3uO=>Mt98J|J30|%LE(C~ zwsZe44AGLWc)<8?d)VsQCllT8ByP*Uf9}7BukYN74G(@?TN@pis5BuVR=M1@D9^3S zLBZkaCI^=m7S2|u5I&A0ro2j?49{M3KbVz}y6jl~nX?L>Oj92?DNOZZWT>3E@`bY# z%OT;3C-@H3?Ekw%ErM%jO3j@|_tvah6{Iy)P*Cult*@`|;>C+=;?*oIB}Gk`8h?Dc zk#kM@jSy%#{-NDJzpmbV*@m@y*~`DjqZC;-3jPD0N5>?#PVoA_;kB5~w8z_?texO_(MExVX=BBe zZ8M|Vo?E}@dzPpu&~ckhC4z(H(Kg1~S(_io*p&Hg_)xrFV%DwgwY>j-Uuiv6xI0@h zXydIM{`XPm`Agzf<-L(MdhkQH;@QnN-+pg<*6HfR;NTjY?S5at@y?%@7Jkc%gZ*}e ztz}}^Qt~y_v_$8Nh-+J-kW#6qVd9H*j!mVf1vp%zudR=K5#l$`_W8fua*OS2;|)i)Jio z`C$XybB2=q6QzgI$<@w`wiC32d=$=S0XeR-gBScrvj-RHwO9M3&oh}-|4*}X{Nc%jVk_@kHo z?S&;oN+x%UpR3&~b2>?)E%v;%uSIV4yATU8hBKeft}Lzj^JQi5)vKZRvcArGoXOz3(wcLB>+V>kes$)zFJi8o zEm&4$_G0HIMh1<&B`5Q?uRU?%%coDX^0nSP3AwQ|I5T6#`&TbcoICmT+qY-mCC)y! zt7AO>cfTz2-@ohkfBSX5?&Il5zvYroSfx3y>6))sSdf<65w)LTZ9K!_gZJ+3`*B3Y zZo}!9zy2ICq6MPk}x zix+&BRz{z0E|>RC-IQxx_W9GtXW9CzL+-I1zR?$3{rAt`=V9r5artJCgeI+8t;N6Z z|Gizjvr7~gnk#hka6k8P6_-lfY-#u7LBX?AZ+^76Ff?p;d%gCe6UXo0>`9M=)B76} zC-%0oWOGJD=vBSjy=%=EB}akRX1V1TV}hOU?rbt%eLc6s+v5m>+5F4PJxt$&#EhSJhM@XTD^7=^fLJGG3=9v(?|7xB8ft9SO% zq?0jL)}dn0_eI1AOrNrhyW6Vxl}l;q*JW$1_v{g2Xjs){)Rt(Ld)u^{=fokWrc&vM z2pe(lbM_yvT-G@f(YDz-c8P<-1g9!FrJ}=P)9yYz#Mva$kui-qA#QQF%$~fXnIb7|T=DzIDwA8v^7T6sU+Xb6%&&Jy@nLGXkh8HTI(JDxP3)^PXY{2R7&rMgU|RI#^7bOHD6>i>(UrY^1hIbU_z zvh2T18+N9=X8V;?V{q)Qs*1b%^WL>Px2{yQRo2$9U^(7dxx`45;qckojV8Wdzn5JPn|fSTC4KEZ2LY9OuX}B} zGBd1QrAj#`Cg`$qcc(p`V++1dimgJC1sO*s^50YDFv@im z+kZL3pyu1h#2^I^4?ktrN0yK0OyX^uYc0KYt*+SS%CpO4gJ$-$Hq3S3cJt)Q4LWm- zr|!EqZ{E6dcfLmN72)Dzc$f7tsgOtU3o(WU;Uxh|%nSws4V5k@ ze5GS&SxZ|y^vj#)^Ri;oXHV7#3=Cya8}wJ*c`0@+yx^He=T4bzA3rUd*{*CctuI9R zVALJMHLen~e;A2fEA4#0BxJ|z;>_nyxD!KD7RUQ~`_M zYo-?IX=iO(vdS%9M_Wxu&|Q|Gd+fHn#nzX_+{L=Vzmv>W6=yn?#(wm9Ep(`L$34w5 znbU>bvHd*9Yg5J7icAdN_j^~=n=eoJmrPioW1@4sFFKcd-l-=aAFz5&Tqb$mclKGk zqdbu^8MEen5!hyJ@aI|mv^R^?ETzgVV!31c`PzfEoXXFv`Rg9S!tGnpaLn$~)(b0J zSTpYIS9W4@6IVMb5U(#YTO#cu>yIydd^gu_U*OSvCFo$N_~OR8S?lcf-ZiYc9DLEk zaAr!9+l>D0Nk=Xu%ST2W6k>Q#zS(|@OH=C(yP|38dPQ9)4Ig$-@CwNY2zjw~|L#N0 ze-AhR6}J+tUwbQlwOjAcY0Y;c6$CgytpuhQz=Y-^U~98hH5d;bOMUx8LsFyO+D_rp$3(9-b*vr(V5wEo!at{uf!9nT~In z8zXi#rAin-dH($M*I(z(otv!g@5g`l&YhUZ$jZZ=rsn4L9}cqnEid*nooRe#`jX9? zKYw|7nXP%@%9SfutjIWK@P6NKy)1c-Ba@OYZDDIZ$iQ%8N1?Lkq(66TI37NDu;6M| zZ%@yhO*`Jb0D+8*j1?|Qj0_uetW8Xw6j(GhH{1XFk=*xq)22;IN=kPgO15cgY6^C` z?A^Qf;>C-9{AMkyuBvMJzkhFWZ|QzpxDyzcQy4Wj(F5Rm&wd=~Onw=tBnf&rrDqIk9YEbd> z=@6E&wm9e~v;Y1_n|JMvS6JGwdnR~Xdw&&{*K_&h`hP!{Uw--Lald`i#u?|I7w^71(c{ST&s(={RcsOJJaTh$daPb}b#=9d zh!Y1d508vR!GlAs+-1A}UXQPzE9x=NviR83qPcdpv$Ee5Sn$bMT)26&GX3$cUArz` zyr}Hn*K#=V-Q<5C4)fnx`uKQ%aiaeB0}B@}>=xHgGn!dpV`pgiuxO{n&L{UCZogmW zts=y+5Hu3;{eHc?q~t@ntM~5NnV6J(dUDdaov*aK{Px>#i{1O3@|hccis&p2+L?NK z+OJ=~-@ys|QwV`1{~KHcbTYc_8DcxI;YPF?@GR!ajkKug_k-aNU}%xre<*;%I1 z+w)8%c+Q?ZyE<%b)w`X~({812zWMq2`D_!ZNh;OV)s~JMZ@(3B-TUX$>FDiwS6_b> z6%_>yRTb_NaGI_kf9>_x*=D&_FPBdDn`3csZp^-#pV{m8Zp*!Gw*2zU-(I%1wpMfV zE-&+yHp{Undm~Z4Y1y*2>@%Jxd8+pQ`+7Y-d}YY}n$MsE1wPGk)0(<%+qP|6wrtRO zU9{878w8@GqkYvTAAekEHCL=VH7l#@w~o@pjLXY>*YEknRsR0h*VpFx_wL-d5fK-+ zFZcGgx3{;)@2``sl4dxwJVCMLNK#>O@#k}Mtu0l()Fy|oi`iNAH7htcIB#=~nYE2g z&gPq8>taqGZJz1lrXs}2!ekWhyUIa9fUmvQE}-ns#-TQ~{`b+)K@${bJM z%fP_!|E0{eBTro7^ZT!6@v<$bMGy}i9k6FC%B zrl0;=wfAh=VFRD_*H1q!YCmjfX&D(4b7t%Qs;{qJU0rQ?wfp#E&^|!6X0h(4UtV6$ z+kX4;$2D<#qgG$FlIauG4makUH)0{r!oDZ8znanV6K6lw_Dl?Y_IO z@bR(T=KHF?zWVz5dUkfUyPKPi829ok&CSh=7cZ`@tzElzZOoBd7cVZn{PNOE6Z5@G zFTect`*(I$77ttV)vUGa)`e+^d|xwzf#E=n_IjvX%G$ayqG$FI!`Wwf4r_>X9XjMR)vNV!MSA-3>#x_YUajo8Y0sWJk3Y5? zezYU!o@SOLl->cIpMl*e`UA&lRH1pN# z*OvAkdegJF-m;eVUV7=|Nzd75mj!5CTN~Z}ct_OQckkZmX=!EUWrBx8&dm*OO8az|$0&%{mhN-c z5o)S!sBBD|aq20*Y6OR3aH{XjokBev3N0%>ROFUc>WC#vuqhsSBC_yT!gJ{$&NFfh zpBwHPUV6-RFFm;91QXPCjx-<>KkYgy(jyW8K4%MWZiBme)q@r?YHJlQIq0xnu} z+m5bhcyF_&@cRZ2rEd4b&t6%*^V#|IS(4xHr}p!!o*j+WI@Y#Kt?3_UW#cN3^dp=~ zGdp~H`i)GIBf=CXo;<(p@0^ad@HJKY)*NDLt6Q{CW7X>O8>>=feJ?i#i109dIC0qO z+xqwGO3GcFziT)P@v`gvExhzzc6Z6Q?FAS51*Eo={@k1V_}#*F#{bNY&*NogY`f04HwPbJqxjI-*zT2%Y54Rh zvogE9jwmH{nn-c|s7+3IsxHfOc$Lqwi-q@RDjvV?WfYD=l`uXk~5yQN-KN5R5@?+)cHT+njZ6ApRvy)IBF4VHp3q-&b6!K zWShWz{HCzX==oxF1YU$b53>QwgtP**mO*9Ptefn6FqERzoy_=L}2yz}6pO>4AYGM{F! z;o@XW5Ystr7MVTi<;yQ?|6F7^5P$I3zu)iK+1Ul1Vjh*X1Y~EwK5*cG_4_@OZ@>BQ z@NoXVpK3Qs1iuMQTB0#4HDe)zn?=L-rme}x`QAM^%x`~Zf4zPApVRvL&t$P>ZH-u{ zvFi7!g3rNQMO+(A8;*O-OXa;^`#m-~`u6nry2|g?n{Vb+SO4Bu`@2uZ^3dOkk{=%u z^=dM*vw#11+|Ms-#qurI#3nZ0*3OXi^#+D}oMGwd%OiB^-tYbXu5S7L_xxWLnUVG_u2kOKHj=@YyJLzw;q3N0BM_X(x>?HbcO@^2M-zaD0Ecc z?|j@;BdTq{Q~i4FcF?GzYsZ147pfNf&IG*qbf;m0K*gDJ|Mu8VOq}ue_xH^@*;}Iy z?(1geIh@n1d`-&O>BQ5<(g=q6EZOhx?JeGVZm&u4pJUSb1?$Ah*^YmlYhC`xVqJj7 zfqmV~vzBF_aT812V9NerZo*yHj3WKBGTthaBGY%AI&A)> z$~@R-v*z49#sdXq2jv;rMVTi)nmh7TJU?zOkf)KL`@D3V+< znblzfL!EQr71QrCV$?*r7dqK8C@LPvH{e;l-mH4hWD(b9Q;?Q8XMvXE=Any14_}jE zVBxM{a&ns3Aj0L!qm#{`pu+OQZq36A&xvUzXHF{#=rGvmG<+}lYWd};l(V4@C)VcvnhYGAjQgAeul$_H*y|O!U_v9WW6=Mn)kduD|QhX2k^^X)aJdU#A?$Yu}_V%o!Yc*Cqu zmo65{`x+7)8NG^`C(XnBdPBoccclZzYX9w-eraZ=fX;)12MpHK zp9qalb>i4*V`so&uz!m9$w@PF?maXx=51oNQ84ihpE6B>r@b`dfRlp2giy8Gd)}QX zzb4g6uy9u}a5POgy<~EufXG=!F^*}epY#4C&A2Vpa$t#dLB2%W%Quo5msW6Hop6A^ zVopOl>z(T_u3t&$JQh6jB~Ju%go0k&o);xn>HjpRpN_Bn8VYhwyXhpKrN%0afA`W0L9Aoaq)Gbw zek|IwY14uQ3E$t{J#Y70r={h9bJEr+)qCo=gnlq`cOFc*u{qt}Ms9nA&d<5E8w3mN z6(7F%(GnQmksvF!;ebT%vE4DP69jgwpD^Ko;Y1IX)lvgvQeBV(fCp~o*KuHVY- znv}Kli%Yfm*(WPcx?J88w)mWKM16GPN)u^8r^mh+f7mHqB4nLNZFyFQ9b=8tpJe(&g@7>oEeDF+ZrGvrq56i;5dac$5PT#K(tTgkT zT){IzoyGf3%VeagW=tSjj9|E;Guc7J6|2rRPkoH~7_)Tt$(f8Q`%Z$EeGs^=HP z+7kWdyqx8|_FYPuhsEa$878-G-~RomTmRm!1_39nl??R(oUPg}Q6Z}Q0{mtW>_@+HYFvC97!&#A7i{{8Lk^sQ0< zg>+g3oQgUboEJoN%YU!n+32C8p!Ub}sF$M1_b4uo4)>43b1uKMsrc~V`TY8I*I&y& z`exH4%EJaa*kIv8#no4>UI&@XY!%7#W_-5HC6VK>kYv{)$Bkn4mqk8j{JZeu#}D=S zHJj4U%QYV~;BT7hx4d@WpX^*EPmh;-RTdN*39DWT$(qGBTZi#rRmuHL_uuy)fBgAz zq9jk--QDH&zg{jck8A4N?Q)`*(KwQA-}j|vUb-4aGv6%kw_CMxA3x!qYJic?OeX=q9NJ7i5% zZH#hN+dQ+x;P9h0`C4AiZ#$PhNDRC@(?@OMtmpT+F3)^<#$>9;GD)-kZ3aBv7k!jW z(_g(!v6}3@LBvQ?QQ)@ByO%F5mtXxVG=Jyp!7TJlTU#h*OfS$Q*k z;nfwp)?2(UTEElBK6*ol*GdP4E314yY-MCPV7@GW=`PjGSzIiC9u{!)FflOXce)(n tQ1n@@y>8X2hEKi>3?F2cU;g_4&kweLx4xssB6cgECvPz22U5qkcwMxYRhY6u5SH5chly*8LDev zt@^GPeO7B)?n%+|=FDaGj}CBi{uGS6r`-5Nb;1)?CPl_c5>5vi8*;l==O{;SQjHFK zfA`g;bz$0>;j7;U*Vp&#iSu^bbkJ;*@%?@SYvb)__m=M~J~y}ceB+(v=E98|B|CP^VdS}9E@Sa$w(^nt&-d-#{^{op-PMIf zMSnIPpXb2HVDV1D^U`VWqdhNY-ilhbvU6jE!bAZtkCsc973=?d9^P>{@&EJZ?!R(0 z7zE6tK*lUyva2GruJ4j_-RZ13vy7}{_@>x4Ff^1TfBF5Mxt;mkiG~oZV+jeXR?l3f z_Tr>EV;d7g#;mqLktT~nj|zepeEYbs`s}CgcJ}i`M8zbZ{6F|`{SLdxEeSFI?_`LG z%EoWYnc3dnWc%mGV}H4t4|UhCN*+qm5qs6`JfWYz=KI|VPK*j120W9eyHB6ayjnED z$V`%FvA`L@Yf7vvj)GbL&sJs%@w7?IV)&3PU-vL&fvx>-#=PxPJZuaN7jr6$|8q(` z+!*;J>7(uHV&_mJA@w%3W%ulBW;IS^)&6zwTWMolSNxx^%4}}ySGQVoZQ8#6#H+V& z=g#a_KeemG?Ru#G(xl+HUyc3Wt4>XBdMc4N_s>=C^WXV+_SWxcX-v$k5x&;Q@pHN z`l{0s8?HWNVQ?@pwMv|DY1@(`M>-tr{TZEvD&=ML+Z8m-Rn2q`TsO#Fm+@}aoLT35 zI=J{hT$SwcTKQ!2Bh`;N`8hei4)WJY2nzl?ss39< z=;MP24{{DM1-qR%%^jq{z|eEkN8aYdjI(RzuyQm-PUHMj!@$7fYj{WMT9T`eN5X{u z>-k;&{!E<$lY4F#?2O-VHY1JU@xzA?#ib4^*i2f|c3h3Ybz`K*q!OVc{PS+zymN8c|yGwtBPgPYa+ z7ltXNSN^MIJ#F`|Bt9-L&#U6Xd;1?crdE3lls~@R|9)-O3a1>uCjH0H4y+C4l>84*|M;eA^UzldtF(%b91N@!{G)6 zhQk|HN0(%3?#U9J;Kk?|Fu(pB%a4sMtOpHP3J?8MVm0=jZXaEzyJFLKl5+j%Dqli=b?$x+P3Hf_!FnOKLy4H2@B@&W?xKlvCo{b zZHazt)joIgMdshKzk12_J}6^waCSbtJhhjni;+QMp1`gxDlW_`7WxO@zbYSh`P=LC z`Cp!1UV1nAZSyVOpQkI5eztaXX>u`YxCM%w6y6vlld3W#cm3H}k?+Y_ma+L$HJEr6seg435^>gdap6BbIGh>t0 z9#Nya2VAGW@N?AQjg@-mt(BOQa$?q*CyIA>xTw5&v9Ds|?&@1jbJk_md~4L5JXv`D zyR~XRjl$k6%WPYi$-uxo<6vNIQN*cpyRX$1?mL;XagvIpkQiV0Qw9c!wry)qgm7Jq z|NrgkAzo?u`#Zm0-8;YEFEX~O#Y5%Ru0-8NPX>nPv#qRtxBG`*v)lH1-!VJioCuED z8OxN~Udqb#c68i`N%;RK=kCYit^T>OrT>?0ReW{euzTMvkG90@HusXz$+Iyj9oZe*Zl;w>-Xj<$1f`|9RLRZ$AI;!~ehg)9e5LzJ9Oj_1t5}mR*ml zemph2&h+r)+uL%h-|yWYsPgov_$7A!OIx=(s3hIG{cws%S`w3&ms8ohISV-35C8jo ze~+CDho$wJqdY8aOes$MJr5089D^pSeO|%r(%v4~Zq+6!$@@8NsW>;QV^9cBLEAF5 zWy{=kE%X99S`V53&n}NnzPtN3UnI-C#DDirxYX}w71G{&IMpLPT>Oo&nA-D?n(og# z?rDDG`y_BuV)w~O*|g2)eZ{1t9zA_}^xwbF z^Y5=)w@#32{RPI~zkd16wR&lFXaE1r^XAQaKJT~T{PX1&GVAw#t1A5Xa&Ps0em=fy zFSq#Her=XKbf|E-ixNA_xeOB@Z*F5l&Pt61Ei4)u90@husk0P5%>V!Ft6&tDh4mV1 zDWi=U$#u^*&6u$N-&1{AwOPkpV&)gj=-xQ*TYr50N!N(&3_6KtUvRKEO7sddFeprK zy7T7r$~9>Trkm{_D>q5^&3kC}?9R;%96!!>EZy6a^X`R_g+yDmec=wNCYz-a{pGJ; z@8vtZ|9APj9re%o@>WC)v)v>!uG^-=x$Q6%`k*S)-$>>Z_g#>r!A}u z3s#(dcIfTfw~>*Nii(O142=#93=!LMBwYigdXJ?T9X)a+rrNh^@4nTmwJj}wmc5i( z7!VN_wk`9r8b^~vo2IUAZ)fMplP3$`&(H69`SNAI{XYvUD=RazX{yKT|Gtj5E_>6E zzwGyvj~_ptJ9lo%6p?QmRJ$sIEZJ4#4ot(7v>^XCE z1UPOOf4(fw&SxI3nj+z*H+}aKo=GaJSFa9V7jsfAIe6Rl?c29*T^qCWQtHX7&YkQj(gw)Ni@BkB^V9FDrwLechegw|6gItgNP%c5;#`N0Y_ebE{Tq?TuR>pdlnA zR8w2)Ki4WWB7%cKLP~1W?Y9>%UUXah@y^cT;NW0MNy&>BFTODj3k+m*oN)NzjcvKo z33Tg zb*rkYtLy0WEPMI#2g*j9k!dx-`{I&Z2a=& z%coC8lTW$?h7=ZVyqe|f;bBq!ZjRsb#Tu{P+}xb=XyU|)^XAEQE!wqvH#0NyV=+v~b3Z85vnwMOJflb#<%u{(EzCv$$T2gp|~)_wSdB zIeB<=T+Nb|m6er~6XR;tn%ZSs|L%@ur;CxTZESqJe_)8W_vwALznz?&uV$Iv4rgX& zUiazdw+xe6&z?QIbLUP+N5{|iCu(bM3a(tcc58$VD=X{0d-p_KOG`>x+S}FD)Z{D* z8hkI`zyJR6W97*wZ+x4e@^TjQn}%ywug*OC?81crfB*A`4mr*Axpwc~y6dksyH>4R zXEyunW;IcEzWWm4ft=}{5%+)J`+n%~;hUe=O<%?R{QUgwx8FW~{Mgsm*Sh@Oo-$5t z8=F0A*RI{TF>vw44eHI!&E`2b4m|#-z@fy^wCv@wWy|FMeQ0NDRM68qr+Q)Mzf^B; z504e=*UL*uU3yt!;v20aHu>a~88bQ-t?2LPpS@$n3Jq1&qX`BZWJDw+A_4;y#kymi z&R#!w{rdKmD>Ex9DoRRB3=J>tWps6QUAc1QX#*G`7FF$_y^5nPkXU&pY8@BrT>zh%J9zUKu zd2;5gy5DcN8ygwL@D@xx_D_4NSF2N^g9Af!T7CWg0F5=PR#iQj=)U8;g-qUDFN@bV z3nsEwdoB!M0fUs()U)>b>9)F4r%r8dZeF=^rKzc@h^wPO%OZ^?g?Ic*oE9b=wVHkQ z*{Rb-Gu;*^&cF2NQPT3ulH%gWz5E4OJXM6c7I8EkD4cUvNJKFdT`uX$o^Pe^QoE8>5j|rc7@7_I*ri#kStJkl)ySef4@s*X8 zt&7|HE2_$QX;5!}e|t*{N2^o#$*iqbW@ceZ6F00)m1sNveD`P5!v-pzlT<9t%-kla z+z$MHr`X@s)z#DUp39nVC6g z<(6g3)O2;vem$~l)rnK5w6wIE6jtorYinmWZ`sQkGiKEO{&vvd&gILKr%gL%mRwa; zm65@5c*C`8*IvAM(a_MaXpvI;;e)3*7#g0Qo?c#FzF0#_TwHzn>D{|_Sy@{PvN#5o z98A|#Red_Q{9fgskH^zFJ5Nv7-(T@jscX^4j~|U@>R4Ir+OwzT^Ru%?GvB#_E$lfBu|1cdka)v17+hJuNDqIPLG-moFpZ;_?h6&ZHT8-wzHB zPCq|yYt-7t#>UTAPG34cJ-$wJ`strF`+`<}`TA8>LIPBTTvXc4VPRs@vM3`xeYuB< zl!OGRQ1YBqSy{P;&%*munXH?eo19IBfxZ3x>(|8@0^;KKB^~AJTWfKL=S)TRhMPGX zX1^EQ8>c_{QX15y>9XG z@%sAud*jw$e{E}HQ&U?jnDQ`y+iGrKEz`}Tb=xMYc)lvxwQ{AVy}kXkc_vc5QESyW zl4@#d4)&*7^hxuug>QVP8Z5H(^2;8##r^&L+qZxJ@neUJk|0;>o1YC043kv0My)-Y z_WA2q)0sX84<6)eU%Y&|yMh1|Eb1Nz$RD>J_R7ALz25D*^Pn3A}YTd(!iCd#`H%4$YefaR`0)Mv^I!81^Il`o zmkf(nTXQto=JON9^JX_pWws*3Bj7L`fpeqU-7DiH)KqCt`TWew|tBc1iKmWTHn&A8>e{z~3#&So3^gabLTwvRWx`tXwb ziEO&J!{sgWrz@pr+AuUE&e$72Z<3elcJIfkOgX;ydiXch9zXZ#+159I%^6(-7609P z>3K1J`hmRd|Np+PmzR*Jc-SgF#p~%E7MVm{j}JWlDyO~tML*1yynk!sq z#;4Vn)9=j7-LNg;sO+_$VXN0J-CCKZz%b!tN_N;?Gqr=uy}V-gS4xyU?>%SUPZ zbtL$A9{$y69)4(-?R&wd1=jf`c{^H4bsuoNj#_vzEqX*W^b=#ZK<#N?90I5_<*D7fWe{X$^U=9j=#U5ZbtHq%@1t-d}s2# zxo>V_At5flzwEBn(&e9KU-vV1@0Z(|{rH&lrn6-Sr~QBZxL;X$@uka`BX|DXYy1A+ z@$d8Y+>6ralDphH&!)1dAVI-WHTCK$rkzgvDmY%Rnikf;=+{(ev2u0U#K{Z9#1j)G zzMYQ$_enav-17D=))OaBT9&_yadd3-D5;cg3|sy7_3Q5b{_h_?ym;}VqoboCamUV` zmYSNGH8nB}58nNKb?f+5#|sP%3lBD~>-!cN{#Zzend$20w)u=aemV))6AUE2)&DyA z>5u5^cehMzOuk%nm%m^9zV`ltO1+AeHT7RllP6Ptw6HK7XgbTlU}9#r zWXTe}89eIiXB;%yTk!Dx-tYHrZGA0Y_2lELRa$?KEOA-(<5>Cid-v+z)wEu^Y;CLj zIr^N;tjHZt_tyU9Y1kXGkCBm)p<&&-?(3H(hi?)s{dPuja%R@=yWbBP#Ds>fl$90k zTH4*dp=0&Tdls1|JBzC}p7>+Bo>wVy?}-qnYto!7j%&7sMn^}7g-x41`*jz~<=eNb zUtCz&($aEub@=AYw)Xb!uC6OtU)SE*+?yET;NTD*K3zLyTHN~eYuCC4etC0qbM*GS z+|0~_20Tp*{O$jStPKkf4_|%tRsI1E6XrQAybK8nDgT$x=lSw|m!7NJ@gpir&cy8f zWZJ5q(h(XPD=a4|D=6!2tl%I!XZHS0KUS}QSDSGC{`Wse4?Aa?NWHtYYU1`J)wV>_(5VjvC+@Yqo4@a0luyo^W`0{SLDAB;pJ%5@)FdVw-^ki* z&6(v{rN)qODn-vS_Rg(4BI5HmlpQ{H?wi@f2pLIH-{3E;UBw3#6@@y#+_>m$G_&UJ zuU?y;=l?!z-?~ljeEiibS7c^S=t-1Fa5(vLy_WtQelEV7Uq2*Y|IHS);i<{lBdRLf zw{JgfYh%chyjg%Hu;$Z_w3HtU-Q}Khv$*rsZTz?H?B2cN>c_rH&b*m^e$KfQr>31w zPtjO?^wza&yFUMm<>=>UIC1J6Geb#f?3-6v@{)3Wz1{xjPgqqiTe5GRnvPD=-(zQm zI-gAL|9U>^4K2A-u*( zjso9pKTNRF*s*HUqnMkLJ7YFh-sYQn>bcKJO`gN6^g`a;sQiCtXW`L?pm1^H!%d>6 zg=&w~xO6Nuo3qKvW6qMBlBrv7ay&lq^y1%hH&?A*{rc(j_`07@r@wynih)5^R+g># zp}YOBi(kH!L`O?ABxGc)*tzqkyZx_;E=ns`u1sv5b$Pk}{rdlZA3l7j;(71XwPQz) z`1tv~`damE!$w~`vi|Olw{LE4cAI?E^MbnnJRZL8u0C&@vNtm(FEG7z@x0yb{omHD<+uCw#Qyug z>-}isB(igf3I5EzGO#6D>>Mz%$V-8Kp;7ZQR{#JPir7c)B2c|f8VLDdGX@K^th^%r8h2I zm@s{MyMjkeO-*58VNFeqzrTM%f7{J-nn z^?&Z_2g<#7|Nm9!?16RO;V=GNS4d1`dbs808!t1{RH05)3(wy_ezm$CVQ8Bgt|BPak(rHt{rOU2R_R^9M7-8?)bcx-w>|t(y@tcyVTp~FI-pBW_;u|^+VJX5fR}#-!D9F{#(1;Pi85j zh@|Li35kmD>+9cTiePD zQqrf+PvQCU{iWMhv)Q^DCPD^25h-7OzyDWyd@uhm))o1CT8NgL6{|sHR9(@_vs~-*Qx;SH0Cz~WloJiW5Si{J$VEyvb z4+{cB=5A8Cd)T{mvPr+bi{ZcD@Bb~`y;#@IP*gpWVZoO-PZ=0y-cc^iY+HVcpTR+Z z#qW~RM2pHyH3kQrsqRPBI#T5t5@q<<{Vx4$JUGARi(`Gff6^zRIZHBUojezP^l`V? z9`{et?~g^4#B*NF+Ild7gNJ9%j2Q`sqbsVbrFq!e61PO@YH#Q`n#AJB(Ig=$x$*Yf z?K@hFcG_rZb!|O<_Uu_*P0fiODm8ZVpX#p+dG-3Ww1mWuo9Xl4-q`qf_Bvmtrd>8$ zyr$mw{{LN!f#K=LJLlt1hV$&ZU{#yrl=XC{ah%=1qSp4KHnp!-Kh8Wo?XgPg=G(o& z!92`Qy!<&17EJQ;@$`I8y!`ja+=>hm9A?pL{*t9+VGGZt%k+O2-FFx9wf%TyGmCHf({(4J zcSb#Yc=GYbnAY2Gx4nC}PQ3oNyNIL5q&xpV+V`kUj?lST^PSn5xt9G~?VrE$cJ+Ii zcO{(8oORGsDtW<;C0CX$W7~bWadJqGQ&COOs`>Q_O^Yl%D}VkFm$#RhKBFn|#?Md2 zkvp|Lr5LJ~rOY@UUbQ-F)#^#pmVErl)EoAC!)@EWAto#vLyXK;{eAW0;@j`GDk9!8 z7M+u)WSekyspqzrEM)q?~MW*x7HAQf3>QK^^b> z&NSW^a~&cwGc(ow=dD?{?%TI-ahub485Fd%R_)pIXYcoW!ksQ_6dpf+zWidww|93> zyDi>j%G+HOoy*C?Q}bk^`;7@TmX?;exw&uJRahLat&7zb>U>i4bDD1SGyd}%5A4pk zcHz*8JCo16VQpefYtDBFNQp`M_;GRA=`Ai=-+2St-H!^2*ruAu{7bU$Z&zKS<62SE zv}k(Dv#=?1=gl)Zc0@h(*}4T8ZLv#d39_u%DJ156$)ws&LBnUc^xgj#+5MLPUHJb8 zV~@gA(Wix;-c#aMt@@l^!8GxZ^UPTr-%PImXS=_kHX-1|)^euet*g=>CY6VWM+-N7 zvazv!JZajkw_)vv3m=_uWOI0aZrYn2{{agO{ZDXuMRJMTv5Zw(9r%#DCp8Et#eP;#r!=O|DS^)!TN2L>oeBP7kCsjW-Z9r z=%YBX+Cqk}Y0>mFU44DaL?ho;SC^-2qh3E;x@pGQz(P-(Dd9z%PS|Ta=}JmesXqFu z@7gk9cRndzVYAhyxsh_Nm%l9C*c`~i@Z!itX9j~%@l(k{!7+CqS9;ACo7;Bc*EVAy?DOXO_W;lewO3K~s2WNu6{sA zVx`YHy@$y)j4X^Y#{)%L6I+&P?ml}=oa2Vke!jBZxhvLhPKea{Eh774l~H=+H=CEf z!EAHWZsct@Np~x?=hEQ!h&%_^J1|bG9fkNVMP86X0TGD4Xr8A;idVcH*;)_QQUY zRCo?EH3~4aEz6KQc2DZ@hT9%pk3Lq2cy=8Lx}Gsf<)DGdZRR(g*HxLy4{`J;On1Nk zvP59V-Y&z`&v;*`uHle;})jVaFG4p96=}x>^OF1^v{BH`uPk@$e$U zh3V&=YoR(Ny&$5>X8yhWO7dp+n z#O-Ft*tK(3dqT~&=zx6>UaOs4D$~Hmz`&ufVRadcu!8aS4ndL9N)ts1hYi04;`g=0 zyyN|*((~zuM*rKONofjGo=aVut(#al?Opejjq7qVW@=mJ*y(S8gg%qdH1yV>cz-8kBb(wO;KJmyVX-W zwe+4+d9WCJ?OLI0Q_r(}^tC_8al|Mo(CYH6qqn|n-*NnXT#DMx3+WAyRMyPqKteQV)xl& zk2zj1YwG_fcQ)b324)vn$5i$;0F-K(eUp-4#xx1`4ewx&2-;2^r=bo~%^U35%FUZR>^SyJcwo=BT z;6Xv`HoobctG8_0xMkDC*ZXF-bUa|_Y5&ICZ#Bo_y0nbNjt2{t7#grM{FM>g?N#ws;_6GgKM$B06gZf8m>G^Z%=0{0=f!5gppaWCE>R_^ zeQ@fODLS#ct~@iFj7=HnSANfOg$&YU@K-o1PG^d@@joB8@&eR|E0hwcAA+y7S< z;rjmO=I2+d*Vn1%8c3+ko-Jjbd+W$A?%!!Y_->znxJ^-~EA5q)srzX+1D<>Pj8ybW zw$;9hzxVSr|Gdh!g_&%#1pj>h_j&QbMn?ulwhO=B$+i9TH%ko;4)*amvsF0E-TnCa zx^KqIFIT>}py=;^{@=g4{QURz#fOY$pN(1@rZ)MZg`A8`&eo{6WxJ6e)Kx7Ff}+3vHao^#vmsZo$% zV-VPJ*}zUspfiQbpQC9G-|rSb=gT1p86qr>JclEeEnky1`O`Q}Q-ncQtLuJy*l&Zb+7HMpa(w*w1*>x#vtKV{C z1A~AE&mOMdzrX(cJX?O74-PdoHav%g!C>FMeOyQ17znFP&dkX#H&E_s7i!JcbR85--yA|Gm+&N-i(Y%+%~!C3oxM70 z?YZ;k#XDUVFJA24CsSxO*WdQ5NY|pW-Fw%p=~3v|ntlCK#h%-R6L{DTpPa0oC~>TC z&%%Wdzg~}j|L)zp7cVLvG_o@=94c!q_A zWo?a`q;mPvrALn*>0Lg4^xLk_%bO1+XU^*K^ZCrlqvpA2`QD2Q>;o#nt~ZGux!6-|Ee^FHc{mbe*2K_13LhdS&Il zetzqsx9cfA+NAprG}ZU!O%7<#UAOOXU0t1t?_!N#HDO5Z(Ff~ zqe)?J-2Rl4lSH+{WbA4xl9H4Z6b>9d%-po#(W4}p<7>lSKRY}7rsna)iI20d&&Zgy z@#f174v`JpD{eWNev^)=7dgwopunM~ajb2!*_w33BE#=1;LNl8gp_wC|-J0^w~CA<9X zeyZ5m*l1~;O55z~>$^5;>#F4-z|QdDeEmOTUESQ%({wqS7#L2SI+bE1=_rshr{lKZ z*|TT4T9clin|phE{{LMPm1&!Q{`vX2v$Ip8E!OnQ%((T}Gfb?@-rU$#n(gU%a?NVR zz>hauXJ4AWK6kA(KZC*Sp1-kc4^Au;@sv1T%D~WmSZ%6y@U*olf45wnZ!bG}&cxUq zmIfx5lIFd7ox|1Fk(zO9fqbd{w-XbUH*VbM=;+AH%lqzmrOmxIUg?NJO+CGL58LJI z-fTQ>Wo5;{aP;WW=xsSWf4|$UuCBf{YOVI^E>UeKCnveOABilEU0q#8MMY)r?nsJ? zmcF}V`F+y&x3{7H8DA&cH-Q*x(AKyH8nL-($Y8M z?rzDvJUzbdWZ}WLx{01Hd#*;>{kOW;`)PsiPe#p!#mqrQ!C^7^MNA9~Cb#3)U#%29 z)Ya9crK=meIgMAkve&h$>ereSvF@i=Rt9smDrswL8yIZZx3BK=v$Huy(>C15oIYz7 zm!p91<-ou|Q&ZEud-q00Mlv)kS+eBPrAvSQ)Lc{jv(UMH(xgc~YLhQ!oH>1Zw=Da~ zyzSmggE*R8lrHMTo_|=dq3^Opo1~PKmbSLDz>)j+>+=*@90Np-KK>}cVmQ-h^E$4U zBnig~iTNsp3=GbfAMcvjcPxv=aVeK7gF^n>ZLf^gz4_`ly==T|&=het*l8k*V<5|d zo|`5MFPE5v9X8PU{GmiYZ29H6_Vsd(6H-r4i~TsSCGncFa@V37yZNGvZy0o|P4-lp zsKDVAc;))f{bo|V>-c7t>R0W(clok#TjDkTx1GZ3Yr-vOe&z^;ag#7sRD@o$nx*JXcEeam~{{9seKVDs3eSW_E z{CV^4UAkn{&2@c!eEpvvAHRJ0^6=rq)YH?pZr^VI=fmOH*jTCFHr|paPDx3RW*VnQ zyv%=mtQQodT8az~4GT4xK38h+?_H%Tc-VkPdS1di`C3!&BbS%^Z{NQCeAOH+ZEbIF z@BL?O14OP~zkb}nCpTA@;lZDupU<8>Yc#Vbb<5Y+*UQVwu3f#l^R@VP@usGxqN1XG zzg}tE+uMh!fU4AJ*QckaZ|<2k zefsqa7ZNr`Y}%Y&?G|3K%4+tipH2(w3oIBK^aYOTpS{NWJ>H`BO3EA-h7z-@CZThE zW4BEzZJjq|roM>huia6pT&l;!kLaJgmd&O=$1cmLXSew7nx93>FIPS|(0K0Lxya|~ zAr~hIOn-BD-kCFJwnVMnx^?T%pFiI`5~-GJ1CFVk#Cnv|r z$tfd#M{I{o%cB=Fs|=1``g?xPU#s7+qqwTyJlYCmA|pQ zzx3?7iy3?N?lt6j{pQV)LK_8z1D8K|1Mkz`0lDF*MB@q;Eihc z(WLFSLFK?UDM`tVQETPosqq2ubKdsLP`XuDsXI7yzV_}F5Z zXU@65E1dT~JjSxH;@Q3<>vwh@JIZC5h`cJvbM}z))V6tnaBJ6uv}; z#W8Jf^5H{=)&*1rhO7Mu8H z?!M)Hru4;Gw$%*xBG#OGRMua#tsz1N65_4*X5J3xWm^{x;Nvs@xQO1zwNKP z_U-!l+kP<;zs%o!-?eMky?b%jA3i+XJ~xk1{M-Bc?|CKW#RTrtKw&8 ze*E|mYJAS>%ImM`=jWBmUb}vMb6WN~HVc`)_1f*s?bcqZbL4AlYn7Fi^^$efIlXQv zwly*^@FbiOKKyzb>&E^^YxpY}85#YSU%spMTiX1<{rmT8=N~Wc{`>p;Y#+7VcjY7{ zch>#=Wq!XVcwxYwpXclKbacLa{d#wM{`?rd`nOxJ%T>KlTpL#X?vCZcfFH-C^Z)!f zZm*}MB_$`P=K1N-(QfPVcQyb2erIIh<>h_(^5x2vE8p+^KF?`k#n-Fh+w1*U?e0_aw<0Da)1@V7h)!&@b2?h)en>KCooo%*JU9xTFj2Ra)OoTdBG&DMnKfal> zt+A1D`DIBNnKdC==jT`!|NHZ^SK3@nU48eaFJHf&y{ohKYF7RK-}m3&+N!Ol=B6~! z$KRiykB^OwZPPjbUAuRy3U$V<57!W3YD~z<;c=Ys;X}c~fQrM`bI(5)7ZWp@&UBrX zjg5_kWy8C_5sMPb#W%NWhp%f%ypj6gTwYER@0uxIPd`099jm!`(IN(hbw!&tZ@&Be zN!d@}(p>`SH5g-3lC4Kc7y&zCND+ zZ~=H>&ZqC+w@0o0`}eQjt38bk3MXo%&AgRPsM^=Rs}o^h*ld=wTi!|F$-Ei52Sd;O zkzBu*QO4p-+lpuDvYz{q61J zWgP5$i<{Y*JV!Wm)iGgGWK~ z8L6fk5rzhZ`Rl*7bWh$gdB#_FOU_fC7dHR3(P`PXZQF_!E3RA#k?S`%G;B`+6l5jPmG)|Ku2?A8=~7s@aoyoe>x1rzcJF7q@0(>}E&kk0 zVWmK**N^TEiD}jkRrV_;R(2S^Q+)X0{ZgS_hZD-Qj@-B|DCTM$cKprK5*}BU8&Avn z{BD{~-sXB^s$<-vXorZh-G8fm4@)p`-0_^ma_X?etYbem>;BX1V&Q3C5MEf(|JcGc z@WdnjwHEpsU5hljO3RKkDzA}l`*!f-{QrBeTn}bbU|{S>bhv&Y;^CwV^X<3Hk=7E^ z-}~j#*IEB&^9V0JzQ4dq#_;4zwZksgR_#tx-Eku-|F=|qL~n1ek%p0q%9CyHOy>HT zTUb;W+k7tgv0Y7v!NFe+k@)(#H&VN;q@8 zuIFz{`L46hDE8zHr;J%{0!OBHFUxF8yb;qQ9dq~4H=)-NH}BuSfByXWsSRtV{5?CZ zcz5>%nZ(-ihK8V~&Yv303*J@=zL(8?acP!YG=t-#qm18Fx!yr#E}GRg-d3 z`ue*wdRX3tRK-u89=MHV)-s-|xiK$~9{v%oTP$|Wq`7G6b_b1Jm46er-@ae@T$blB z7Z=yN{r~@M+_=%U`dfyHRIAg*>hF1-E=6x{Y;0>|+kH1KB4Wnm$)CU7&R?vttLUlM zH3cz-f^|PGtO$F&A@bVY&o|WT|K4r(-``*@8(+Kcde%%nuKvid4T1~?B^#5MtiSzo zL%Ykd)HOT)TulD|@2~Xd>C2Wbm9?$fvTN5Ym6P%Re_hu*cWZZfeqLUli;GKmcz9&w z&2_Q6Pn|xkAG2e^j2Sy>f0r>Fc-(J)uI@;Jxz@2GM<%HJ{P}#ox{At?uA^vPN$Nc{V9+27d6=+EE3{W6x5rcZzV{{8tSes+UA=XCZL*`bJyoU;S?9!-t8>FLNILuqt%* zs#U8_oj&dC>>N4$ngNfvh{&HW%k5biHs}?4d3im0{J8$lWBK`(#mBDB(2d@<=f|V& zzkmO}d3fQ%g?D#%-&Ib~n(Ec*Vq{{HvNh`U>(|ru`k9Rao z-ms51osmI8%0Z&5EBMwPQRebn~ge!Qi$+xqkg=r|xLaoi}Ta%w@G@&ku1t(we;JgyC6* zuB6MsljY*<=4sh~Ym~pvH(8|9T4wu>{F<7Y8y%c_&VL?0eAsXQuOcbw(E0Q4XL$zf zQQ7_ANhAN{P1BC6EM;bBQchl4q{`5+Y~|{-pZ~t^|Nn0H`+2t2-`MScGC>jkS(Us1b$LEpr2OIzEtsZ%!|3~+XKj*S-NVLN=Vnf>(X z)0$mLQ%(K-{aGBXtgYwQ{mQ(q=3XY~t2EKa*O!rjjh)?pu9d0)N6bH!Lx&GXe!scy zEa&dBx3@N@`{(7YJAI7Ral)KAbClitdiwg7EnC)g^ij9C{$fMo5SJ0=$ezQn$7q2yl$La&WWnyU3`lQ^!r385$1h@_UG$x|IA| zuI3l(qyy*0<+(We8uV=gWqYTxymP6Hs1MJ6c#S>w=I-cMHhXH69tYq3>hAmhXh)0c zx;;5F{o4O-{(i5+|MWzUr@5t~v*qsa9zJpOTGitt67dR2w+k+_bGqJ)hzmdZ@$vEb zHJ?1Yj~4y-koc|po=s=^E{V3qlP^8-TK~#eJ>pQ)0j6jF;^N}`?f-tsum2tWy}wOq zqK1ynniVTDetvqIw9&%KYS)Gh1+TBIt@#(aZ`!iu%j0(xBvw@X0IjT@%frj7tD|#g zTkh=Fm(%m}^$#1YT)A@V)~z#V&NSeeta9_#Eh$k^Q#-qJS~DUeBLf2iSy@>>w|w&R z_y7L+bM^PT<#&5O{rUUXkZ1LpH8o!@x*t^C{N&D^m^|L@V9xb@3i^djQG!p^i~mpV zyd%TOz{X_2%)rdZ=D@St&g%F*6E(})w|(x{-c`7~Q8VADG}S{XxZU-92g5|po2|2_ zi{4p!J?`Q463;Tnh%=&>J0={5tp&LD!G=frGGFhPQo}PjlU4QiADDCKtfcm}+qq$8 zb&=`8UoXu$bmdJbqoUyU1(!d4`s6VwrTN4zryLeGwoUh6USAvi{UE!1NolF32-ml0 z2^L5Bx*rR*t>ZN&#dqbe`ozt|VDWZa|NWnDe?D@ax!R0@p(Sah_n#Eu9S`2FO)}^F z^H~1>kGt>do^#1Qa|#O!OG#15PL!6Dn>S&?hu`=A|NHrTe){@d>@0z+uh!PqDk>`G zFf5t*Q$S?Oym|kAyL-E)_{+_r7o*Vot6Q&TNv_@*0Q?d$6^zh6^)a+2zr zNi(KRJNEoDXz`c%y$WWA1J6Ilo;w#~YWM%o=lb8b@0Y#1!^t4feN-!&a+O_+VZdsgMch2Jp*OXqZ8r7!@i|?IbnrM-H^w+FSlLdNM+>h+4*A(tL!gTS? z4=I~{3_C36?^-$GWJ>w{TJzttV*}Y3HuNhoDA0RYZuND=#*)cRMTe)spRFD3NxV@YV4_-djpLXi5aLl!mKUX%lsF^iJX!)OvS}6T8 zU82qQ@ZldDR~i@k3tui)lwe~xvNY}67SjnTfg66>Z4B9X;<$zGonk|i!{^WEPg_vZ zTk&jW`VRJ~hm%xv?D!?GN#6VQ=1)%%M_SlDNrpvC`oGr&R;&`4r}e#uGt-iRLFDP$ zI~D6+FWJp1Hv0gpnZoZoLJSN}8&yoKE|#_(KYSxKlfmK7q?xrBCE^9jUz)S?$^7%> z)YiIC{QiH=Q@2)TcE0VMUONO1)h@~Mzo?WW(N;A7m}S8Oj@MoshAth2R}M5XyGLwi z;bDGdb?p4LY({2=BQ7hRMt^eNIq|`P#>0yg)_nW+ZQnk-=})a3o2`187&r_X8fTo_ z<~VJ`uiw9GYie8;NtWhURaF%gO}d-^@vWhaP0hzgt_uSs)&6IvASEnX;b;TrT_l@J9SE{(?w}whpNy@7pnS0UU#>2V#iJ{xG?d?rP7Jk!MCu8hmz4*#KhK36a zGlPz$%UAO}PEC8hQ?87I>Gk!s>J~Z(&UpoY|i1~ z*NxBHIA1Qw&tHErBW6QHhDvKIt3`_!-`u-NS6BC) z-n~+**xK5^=jK|g3UO+`n`={9bbVdyx|GL{AFFu&`uQ_bXWF@QezVVtNlL!lH*v<( zl^Zv16pyd@IIsF$XK(M;2%Vg(Jcmol%66@KcA)Wa()0~#Jt{oP{&!{Hzt*&hUHboY zdT#yCHEWl|-Cn=F;k1nD=Id>DKPIVbSUXx4-0};^b750eQMq#UDkDQyc6M-Zup-B+ z*RQiPGBR>=*RETa*7>r({?FpD)k`&2ZP`+ilf%PcU}aVH>q};M^|yC-U*Fqv@}y^@ z!-GpE%1TNR;;QRX-oAaCv-IoNuZIsGPEJmKv(8pLD=W*&$|_@)8polRB|##kzrJLK z`CQI0S-N!T9g{}~9&VesA?dJ6>D&vK_iIn@dMIxzAT0ZYH|?!t%YhS1c$cSb<2)z) z(^5<8)s>aOQoU}AFWxD=9?Q^B`}sHtOYV-n`j7{~pibg0Qf#)YPZ3 z<#$UT9%@~)MrV4@=TqA2&txs!UGL4&l@A!J&p*u1OxYUTlzSlCYm)JZ*Hkm`^vz36ytTQt& z%q>Z~bn+35jDk`oQldxT(r=w%ViWL_1|NhK0PQNj$xw(1a!i5hX zK4fZ4sHmuLo4c#%Y1hF74n96Hu2ymVI38Z!sV7rDNH897ew=vLEA^>r=5gIgi!So4 zK4N%euKiwDH@A0pcVFMzTkPc2bT{ukc!NSmS65eOXCZ%kvc$CM)4#Xd|9N=-|KIzz z;mwh|%hrb5L<9sZ2+)X%jy`_u*qX4{Cr)@IBs`dBTdk$7eKhH#fBmoEvfkxyZ*Py^ zS93FO`}=!)tE;M_)`o39y=}>|Wt&c)etUQK_e)E?*_s^}28f7>?fd)f_WJ$*tlpIH zGxYZ*EM2nX&++;{?5ll^xu!Wh*n2vztnAx%IfeGgQ$gV9zn5{#dtDb_Oi54Q+`Vh( z$0(Uox;31foO;u<3kp7*nyT%z(7@REa`wlDhK7c@*6&ZGoH=>Yk>lvmqdOM|mZw;m zm`s^JpMUaZh6fXcbmaPqHUXpdKf^50eYTtW{zxjEs$^ugdf{7hq_3-|uru_+#ODi!=VGE=%49tWG9cNA-!Akb+jpu@mW)3<2N zg-M4z#67J&W-XHFO7ocYZjUKr6Dvc5zSHFsj}|P`@tZxlXotq`?oGSj%_!irRApeW zF=xE`=>xE`=>upS+`4f+q04qrI) zWJ{-trU5I1LQ78?H^;Por3bu}?F?rnG{ioq3`K z!yUI9rZ)|}gS;$Wg87r=L1;OjJ2px5K_{ zx9l2rn`aFPx@PKrb6&i7u|NZ~XLjYv&cqo94<1~%ZryKr*GW(6|9`J<{@QR{hJ$lD zLtEmn-@glG;`h~9wj~-G8otXAJZxZ=aHQ}~>`c&r%7HuvhNi77JUl!{jvPrzOG}by z6Iiu!rQuAU*=D&`B`+q#=v~h+;aJ!!ZJw5z8mTkw)TvYV?%jLvAYp?vgM-HomY$xT zJG)A=k1Z^3b^17Y{-2cNeX?iIp5<8h>{*)3@%XBjOAj4#+91u)kf6)>^XE^V!!bJw z9_F1rb@r@irwdbKgX|1*2_CPdLdQQYSfBt^$Kog=E?#UgXV$D)zxn-KU0pLxq;}u^ z_w{;w^IZl8mh6q3JUl72E4F4|zhq)-VxltD>uHgtlZK8?j{--_1P28UPEJRTrAwBy zw6^a3e9oGwQNhSa2o!V`{JVC?to!upwb^cFpU(>ltlrN^-dgtd*6n4_i@LkIZ2rGK zsXjl&zNMvQ%9JSzEfz9du9T!{k!L-eaEfqF$e=@$t9(GojU}Uh_ciaiSzI>9QfWo^E|_q?MSI6&VZ%nHU}{WDLuWC^#2(&HDKUyZhf;&MR+Qb1v2X z`n?wtvgSH2+C0r=YxEP+)3%g-{eJI~UZ%Sw%OFo%ujY@ z)P>iV`uco*`wnX}H*KAgAaU$*k=R1f^Y-E^T+hv2D`1f>sF%Ae@6JyFeIN4=*2{ks ziT_L5X~A=`AwkzvhUc;H9M`&b@fEJ?#k-C_)j72E>=oV|!CeQB?!8*MP=DHkri8`> z-M#HwCHNOjZ+F${Yd`u_=cM(qhZWwO8x`clo-K_((o`KGu}5Da!uwsKqFwn#+cm60 zYj(#<#|x}!eaY5W&3UaUUWZXpkz<O;2x+(YwE)aIur%hXbelVQfB#-z8!caQf9p@f zf(;HErpdG=&Ux~8(^5B+#c8W^4=-CAwf5QG@Av*+506VdojFTRS~_>d`rG@GpUXt; ze0=`*_7_Kg>{z#LS=HrdYi;D-|1*7QJ-cwym%q}tVm8fP_;TI5b$#DvTbI3Y;owxQ z`~2#5Prw)1y9H;j@wNmw*Uk;l=;`)<@cHNcwW5<|?VZ}!SN8Zyh+En;2aOc(Ey<6A zFE1;VHhW#NtNecT|EvH1ZvHLvZc#$MiolwsZE0x}`BPn%7%5FkoKg66Ba15!zn?Z~=a=4+owM>y%F4@CRa7o^7{3mT%Urct%Qc}u!zrUC$w}!W zHy5unhapGrYhKgv^&eQ9_B4qqO_Wgla&=~KQs}Id{@x%Jc-o&D(^8r0(6fFZlE0Sg$TO`iIy>&^N-!VdehEq+3k=`haWB~NnV^9Keso?ef|ASzDg6% zJuT4Z&(>?7;d{(j-T%asPo>h^fBifiBhsvqwQrNf^tKok=S$mrACy?FUbT*eh3#g} zwpp`gO*KH9JvZkp*ln}srml{F_w~FxMi;J^zq)dA z%9SrYXHqSuTkj8BaZ`WVX>qZ2apl?Q_HXUYg@HZ;tUzdi)&&wPfUFAzx;*&PVF$|mP3a^f4XK%&dSWon>EYq zq{tDc5@to4h?QKt!KS9BtFCOU`?smGt>ui&S`iT;G2!VIdl$xu${w#Oe!kyocm98F z8@vDi(isji9sI<}f7-O2eeZ${*<%kknHF<(9SRA&8opXdY4N0>OFwE3#zcLrYEQRS zF*H5wFLvQlNp6Jkq{6;=+BQMO zbM{@&%TpXQmKmN~^L)>0=`U;A15DOl@4XhgcTLdoDerFSigZ3J==d&i?Tzf>%*mO* zyneE}CR|vz{JW=0(6+o@A z=dIZvQ(5?Rm+t26P0!vYDz-2=AL=r1-@4Ug+Vr{cy9>3aTl-&co3*(8Xuy}ZvzR8T znAm)Jz1}ZaWa`w-O}aADSLa#RHXVQ7-m;Qo-vvv5&6(cjzjj&w`n`+$TF!^>)6ZYD zi?fzKbM){fp8HvuStlYlYAGn3*gVxb|J~myviHOV)+`m%IdbNyPX5;?$g}n5ZR{xLNM0XvHKE+v#miheCwxZ4*29-@?{1!9z(|v*p5`a|7oKKMRyk)(i*z#3J4&gUj9 z{}Ps_G)66%S=sM=zO~~;OXb}3#$AQ~8G7g3*5|p;J}D_-x~+hY{D%!IT*Y;=HnL=E z9_!re|R*1;7)yGlt_U_x!v45 z@t3Zbe_l6bw`*mV zYDmyky?tF&r>I+dbFlcrscW9xSo7qDs(F6a9xKzjgYiYBE-S2*MC8&ytz5bCGh)v> z&Kc=G==u@UJ=f&6XM1;2@awf^yCqn-85rUVXBo7gP0D&P!*a!P&G0o$Ai?_#&v%4) z-TU>_D`#1w$Lh29u3cpZHH-NVKCfDe#WeMryr_#&N};ybt~UtgRs@1%P;%-`0RMMG4sKdD-3=e|uC`Md9_Hwei zznpd1o6YC#tV>^Axw}Q%>Q>n8T z7rXnKGeeew%yqZCR7Tjj6ewla^?7sd&y>*6O7A{haBIv^8fQ zh3?$D*H%Yo&5j*6(l*cZQEQoSH7m9Hb%6y(Q-Zm9nT3qr^zOZG(@%eW*e?I>#ztqQ zi2^K+fg-oXcCXoRH7oVChlV!#Y99(N=h~~JuTWfYxeBhw{Oq&dp^rF z``mo{`?qiJPCVSUV8Mc}uCBkozgx@nefsq2;6cZgA*Zxlot>RsU0dhRpMUsa!0M~> zo|jw5Or1LQ@87>k8!Miln=910WaY}2e|~;0+Ic5$yStkkXtw>`sf!mcii(P|IHshg zwzjk=wA`!v{nq?`jj-aEgY5D-H#ey&DIH4NT>J0m^UIenpPsIN{@l5DuV3#jc-R!T z{{EiIVkf6VUteFJJ!@8q(M@508$}VW`&F;ko;h>o<;$1y|9>3M-~YEPFYn!f0}R?P zR6MQbp8N3O!}9rcQgRjy6$y$9ofh8MmOJ}yo_)=ag6wQgww6Z*B?;2n0k$?J9j8=5M+%bJxa=hRVvy zhK3s#FK(7qc>U_trL3*~_J6;8dwYBF;>E_s#{4oC6K2nTZMSOc)=;I1G8P32_V)WX zZJMMj!qs}-=JOeE{k=!NT{wGowmB=)!A55Guyrw!adGd~?Wz9$4zwFq`&dt3-@PrF z!SV6;-UcY4N(#)+6S+&&%z; zdv4bvi@x;{8y_8LWPY=941J zcH`o0KaU)7ad&6eHZ<`K4-H)#zdvsM_1`~#3bF{6^w-Y6@j&qKh7TV;fQ~S0?d#bNt8ygwL zBhNoKH#Z+mGTfzY$ji|1UOS>{@4s6P@pX0k?&f{}{@tBpZRF;*!w;W4f4-SHG;h=9 z&CX6v*Vf0M?>o)W>a;P!#=_#n&vNT~m~w7fh&$B(khQ=U9|vTfV8DN{h}W~OR~-}~<+ zBrF^q6?N&-rB|bub#-uXaAu~ab;b32 z_v9ocEp2Vj_O1L_VKdiHTue+%MrKde)m5dhuW5>KRkSfATs$y&^5pV2H|z{8@0u<+ zd){ZCsYSt;7lF+OKU@j+?{rzTVZ(-Z@7{rqYgm4H>5?T8I$})v$XqRYS`jLkP94t*I zPMmo0;>CHp-#yD-?%1*8$dM!9GuK3Ud*o@8qQ zF|js*OBp8bJ}bAR7)c&BaPO1h`V&FZPMW>q~p!r2m#le5NYA!yov zW$^N#;NYW48=wEYJOAdyAClG#3^A>iY~F3Il`OLuy_{jo$V#L(2V^4Ay1 zoa^gi>wn*lx2|UQ4~?n+IP-1NL~3@Il4G;n?$9YsJIw3i_m%9n?9%{CR`ga=}@v=a;l6%+=V< z^^Ez>hsq-}(PkU9h{w;0~uv$8jGGhm3Viru%)ZdL|2Ro_0pO{chU!NI|Ex$0EML#W~-t zlQ++Z*{o{Jq!au1@Ei87MTeT0EoAOg_PZ1^M94f-k5IS&^?Hr!=cU{Kx>YChI%TX_ z|2Zz`)8FXA;Zx9(EO4KtqZUD20qz*D?<+a!Gfx1-BDjs&$W%MIf`e8FjAOY!qP z!EK2$Wzw#@T9P_<8(1m!9)GOdqLZe4?x5!-RguoZvd<-KmT%0K-&LF9argF0YuU2) zyT`;iDr*>>I+kVbKI^nA#%7;`f{0>^&azCI=RqQ>(|#H9ByW$(nDuGaC%!YRvzEP{ zW&PPmNV3f^+U=l113zb2us1!R1n$t=}F0re6wpl zJ((3Xjdy?Le(;>M?scd*M^n1#>`mQf8F^nz@2p6caGN_pYVwqa=WZoRxEbFtzH;3( z_kzBD)O))>e>U=WdDkm^4X>$q@xAb5q{_>XRf~j;KXWu4Hz+xK^s-sEW{m9gDKp(a z{NS6t_2H@OVw(eBsmI6d=+hVJ<>kMVvu5M0UJ=)KHSbbeF8r>qF|Lf<=b)i?XG86h z{ku1BWjt(gYvI2aEg?HTer`&fapwz5_t}R976+sn@;SqDiqfLW7S{P(z7;TaUUbRo z?aa@MuIJy+HS^^!yYIr``@&?I=HXXs|34|Y^?UcNJM2O%`l}PxdMNpxI^)byYI6Pg z+PhvKe(+8|ryY7RX{CMi*~IN-X68@U-aMpQAtNJyov*sI;kfvdHMcZGyk}>fTK;91 zLMlsJq0#5-KTb1S&3f(5R(<8;%D28-1ut?=-01l?c5Uq1>z9kW|1dWdUC%jI_)h%& zKlyJqH48I-p89H3so=C?=fh83UvDq1+tjUY-?rQC{qmO6r8_;27|avi#Be~JC40m2 z+7;_BXPNyv$t2)p)_v1otfA1tY2uUF5oZpHcX7z|AAWd8`?jQ_iS0sR@4tpTn{VqZ zd42n!W|zuZvB@5<>enalWKo=|DbaS<38qMgb>@Nvtf2Ee3q)w+tEuW?jf!{3zIf zXY#L;ZB^ESPS0MRTsF(AJ2PszY|?pUk?z#4+nHCxHhZe^yGR^+emH-@=Qfp-%f8LK z)1y+JX2GDtY3$*4ymy!AYwyk7W|Nk5FI(|o1B2uIg$xW*y`Vb+JpR7uIGnb2waw|a zmby(0%Ma%n`k7yk-8AFfj4wUKJ1?`@I$!2c49(f}E$sf1Iv<^{;vM^BS1VO8b%vN( zU0E+LJJYD={$0l1SBI! z-q*5YYUxTXZNGLcG5Xo2K5rs>o5h=Z+=lKh>ODLquT8dF&3gTCT|N7>rAK;uUbee` zP2f7PokhF+>$B6(`(`dv`;)>r`Paq`D{j0vvSoeWzr*o@BBIlK1SYYwE!WZBQSwfs zc}B~Zob$<(H-D;RdU$oyWR8Vf-W=L@ZrZU|pRT-dI=?g4#;*S9GIh6h_FL=1KUdV) zM>4GTN}RYcrm0=v(Sth^56+v_y?nA!u}hMslZKV%-7K@(uQz|MyxDp%QLANwmRjJO z=k?Df??2h>q_pUN0%Dm_&kuxSt zn>*p#+L&J_MWoAZUq>F?Tq+koAwGub`)}*^7CrHk&p#(#ko};0P>6d+W1aV$qKQ){ z?t4~DG{s+f?Fv*_Xo_;=2 z;@XvavnNXQ3cQkUs*GsRZ*5_C!0H<4X{aTYX#6gWlVP7ygxT!1t5#(lZsYyF>caKw z&$%|9XND!H$M@wlHn_hpCh@y zR9jnn_N-ag)g*z?3Tv}dk|M$z~pp_zuN8UwMyuD@G zee~1M=kuf2Uh|!8*4oyl)bgdO*45RurlzK<%BubFLXB0+mZg=HfYu+|$emBx7_+k| zH6dZaiWMDqXD?s8c=5`WD|hUe5$h=%Q6$lJ@~p=kqevOPh!;#B4EbN*+M3Fn&xvGCfpu(e^cXV0$w^P}+m-c>zr%F|Cz^-zgxpKn#FrK6*xs`~UWzr72GudgrY zJYy@XUE8*mB_%N_Ub%4LK;Gs*U$4h2x8&X1V`*WrBk%66jt-8N0Dph~^z`LkORb8Z z@!XNS&&m1LPkjD^U!E?Y5Mg?fk~we)yol zn|E)&d3k$tb8{CL6>W*qb;?LdS+Z-_uBA(tZryq{!$hgYZ;pkbg~f`C8SCQr_X%)u zaLkxB>(#q=Y1=35ulWhuM&s}A@9WEZM^3&`<>WobUKgFF7^efzot&B!)`V&IA5RuO zUST7rts2L|#x_aC(#mR8h?XJG=9@V-a{P)%-bue|JO6z3)mJ?|J#XIRlpS7u;X*)} zaY&i7!`7(3Z#JKwXH~jt-MV!jJ zpwq;O6PX$lK-%=&BvDkr(D)IO4cTn)~@oBMs z!u`PFp81mA5H`gb?W{j$C8(;ZYKnAy{P^+3iwwK@|IZko-|+PRC;k7Aw(fI^iHUJ= zIPl@ahQkjzI5|0ad37~33U(*6^T{OGt})HN_T}5RP1OsOT9lNOuC0%^H#0j{6`?dy z!^p_U)^_e(9>vKgx8>Y4vaqO_U#ie>l%KP;My~((=G%&<>>msd9x~8TQ91ILJGP`` zOZ2?7FPkIoCUSCd71ftjr#me)(A7N~d+uRDh}KlErA6}p2Nt&6 z;B$O-j9%Ykv)OOoMd~m-aBecSwf+0;cK-Pv@$G!FmtKG6P+Wfb=d;=Qvp^#SCsTfX zp8x;PL3a6uRC!g8No(@C2y_J1^ zonp(cU%w6=K0LqnTjYi}%5HIPk9H(hmDC9NFzPJbY`-`>G&J<;ojZF__~>M*C!aw{PgKl-RIf&OG-;C`4U;!*sSKBn>bN$ z@x>WaryhM+(AM6*H7d8FV#m##H0PrW7cRWJyIkI;;=`q--fKk6OibR~-#`EOV_qJf zhOhFACIpxpstR%KEYIuUX7GNWxOMAR+pkxGSsXo7Caqk#^2UuDJv}_zlb;?tf4=|x zb8~a^#}?~?RyH*^OG`<4Oyc3=`)Ag7;&gKGteZOWv(J`&dvjCTJnu%1+4-4~4gJlD z5qqp^3R0#lO1L2V!H{2DPjB7Utyia|9e)i=3euEgF|4*hC}klcj}4fEaCbQ;h{14q?ec1otbCsf1dQe z!N32;`W|8*L*d@CPrB}0J^`@UqGoI*LI@i%okp>Y11b4c@>M6EJ?Y!DK+Qh zart@~A)!f=CKdhrQ@MT?$HEyiB*JQoii$$Cu5Qb{E#Nf2{@+fgg&saWdn!IIdafuc zD!OptLTU57JDbzb@BI}L6}2n*IA48zeanS5Ug@$oHw0y5?p(UG=wgPFk`gE-++QWa zb=3I0&F13gemi6GOr)-6Z4FwfqpSP%PTkbIj2gPSz6v{@KRA7FZ}s-v+hT%(f#Kop z0-zmY=l4H6t-t@v9*vd@{B<9i-`?IX%u@L6O{5&?DD2}^Q`9D}T(n3@L!(3Gq`SWF zq{9zg+FHNxXSTU3s<2GEa&!L15DgI{p2uaO5^a)la?d{hoNb=}ZPm)lFD2R{_t*Ws zt9~)VL}_BiF}TFqwn{yo`wcfz4w>kUpEo=bzujV3&QzH;Ttg9i`p*<-HV@BC};ElYoM`^JqK zmtU5|ThBftA|vxAj`jaU#={$)o%^@thX%{;XAJwEC5noQ#_p-uxCsO%=~jL^sm|Ht z;pf-a)AMD`&a|^qJ7eZenR3K0?s(yx(@!_uUi|LH#^&RXRn^s3U(Gu2%*D-ZZDkb| z9esYDZMQ&IPtTs3pGB3GKTl3pe}Dhtlqn)xqvlSSFk#Z9ru)ff8#+2VR;|+Ve`_qk zvvA=;7RL>bq$MOOzP`Fz{QTTb{ocb5K}m1x*3yCk19kQEV-KZej^FJ5lybO@H)y4a zre^2e+0IH6*Tn7)TN$!!$r78Y)6W7#M8#L881(UOTg5(2#KzLH@_64{;mMa{nWI_) z=2#`UzWem?W8vb9JF>2>TCqZ-(`8YBM#ikX+}u(N8AC%u8NTE9@7rr=cxX-aQkf)e zp7)|;*OeM;8&E=Oz40_xJgxfO3J+0=f`*tsS^=Bhare`UP{0w)G zJb5ui*Dl5|dC8NaiMKv_hOS7;%KG%>rSXk*vAh3$+rGc-8{fQDJNg7}ZBnZbjZ>2l zbl{M+tgCx}&R1=6=b{z6q-B3bo;30O&fi=2@#@p~y?^F-a1?K9V0Xw)k5AseP(^>5 z@#KWaHQ!#FSBIw@<>mRZ@5iIlA5=Nd@EtbTDcN~BZ8fu#(}C;9HZUCE)|>viB#`CY z!~;I%3@qFq3Oy#hd9`14Y6okLTm*B)2^R15*Xw`1Tn;)eWn=R38}WbD)z$6){YY-P z@a4;wmBGtz>|9X)|M&fL+pE^^_Y|)`Gh^Yxh2{5azfbgx+Hy1Jc%N+b=d^z`)qufq3x`T6~OGTDFGvSl%P*DqX{aQWq) zvbVQBJw1K%{>8cmcQoGYz z|NN;b`xF=yG|6xI>a}ZQx8+FsUe?vs)zs8nxNu?4S&&EO|NlAv_pe`|m4L^Ox3{%< zd3)d7=@+&3+iCs%BHc&hE*sfuYH1~jPyL=$QSoE*dAr$j=G@ts?C$5+cQ?B+mhyIGkIwsMQJFfq`L_0Ud7Fv}%U*`A4%_?T5O+>}iqXwe zQ?&)1ggT!rj1KKm@nm}b;b+Z_RdOG6`A?re|Nhq2?6+^YCIks-!&deY*G8tJU!}A6cDFByE(j zt=h6=$&wW-URdv8h+12Ae_t(VzpVY=FTpJre*CB?FaN&2?yI){RwoY7X$|-H|DPHj zmv~pQ`)E*PD1Y?izySv9r+ZhfU`N;}64boK-n7gvZ@sH-dM>V=S_V(#DDTiq{X*_3#r_`L1*^z(Atqjqk* z{Z?E*?#`~#*UsOj6j+>k(C|;O*DbxFob7`mzqY34%c@e=w#4k~>)yV3BO@hsYeQml zI;&YB=scwQS!dHWM)U}D_4Xb$c=P7wW>r*MB5o7R>nVSV?`!-5+*+dh0K z;A?+8^SilwP;hX+to5~v7Z2)fKj0^9Tk_(XeqyPDoi47ft~tVmg@tRxHdkH;?XC^qT;Sh#e`oRXpp{!9 zbk^KB+j04&j=p|>SC^NUSJex-DZi$jdvm3NWu;|#@BwGdfmcm_L}GaCM$5v z^f{Jx@8#Feaz|?4@BQxN>>OYH*0j^bDR7F5Qsu{^;^Awfj_%6O>YgUoYApdDYg!r<(dt+CIoJuj8 z>h<*N{)-ncCMPGy*L*yBP?T1iK%&cY3Zs}T4j5l#m)0} zb311L?<4>2yYFVUygB;taQo_2t6sf&<>uz*`nbJSS679Whj;Y$+7>@M<1SzO1=ROeUA%bl@jltzb$_k;9w%-5vGsaf z^^AE!deajn4o?xBX2mjXnq*Kh*XGL}lb(G3>9>6H;fDq9qmIo^l-PYYZ~N`nuU|_` zOB)**g{_b4eQdG2h1)go&BL(Op(;XwBCdfV{l}d-Hmbfc-*z|exIxddOtVFMq`Qwg z1&X{D;B0j&w{#5*TRruy=G?i{|lTB`4H&iWhwFJ*151D!dw|M$Dy z>-YWAYD@H6e)(a+25rv|6*heBkKe6bE_=i28k64i?(@$-|E&4uAand?QQ2DV<(EAJ zr&OoAbuGH{swZ)V^|EiNcUD@ecwRFtUl%dWDNtm|GY0-?*Us(hdw7!N>6!eNyANfq z`rp+zZLi&XGaxT*;$ee@0U9D)=DD|~%$sLtVbPH|qxzuc_lIwGzxsDM_K;ipyYt^4 z#W}S--f{i*yXVi%r)Ry(vzU8svbw*O3}2_qq{)*HAM3P{JO8@suI(3{bnd%iAG+9Y z7JX|DpV0C6N6+7yh!dwhuJ}tme^keGpr(^gC|Xu;*1Utw<#&FbsJ$QKv@~dCh?czG zYYvvC+TY(cY8TsHQQ9;^@!^z0!03%C9rV0pce zr`ga)YpR`ywlNKD1DqG$I!%jMzm{@$iE=H=?zz8 z5*`Mu45|P3dHzk`q%>|9Hn@%(%JfaYe%!e`7N{!&H`R25y&(j2EB-#BSV( zsIUKTey?Kjf&~mtP7ih;Fz|WX+qb93r7clGg+;7y!-fs<|9@Ri+iYoQSa^&}A>zQB z3np`C&r2xYA-Ahkt)ac|!-o&Q|LAjw8Cd6J@p;}V;OkLj;QqR_LjV20x+YVryo|SV z5(90!6g}924CVBXEw{XW>v*o2v}@p3-PoNkIXM*Xw%qmeoV|;uMvhUf>d1rQGaR~Q zhh99{;`vV9Dmc*n?2}bx-+RYYI{)Sn0fo(_SO(GuiFZPCa#*W@&DQex>DWQ?__bTPS3E<1%0N@wa+L z|Kx5tUH&rj)UN84S9ul-fA5m$bxRHozWnOy>is|YTLdO`a`1?}He9eOGvwXz?~^~2 zu-*Qo5^?ES1D-;;KiuawJPuy7?aI}wuCA^-!{4PyxSUt7O?u{7KG*O2?fd`C zY;FHWA9UhSR1p-CU^-g$MN-00k&Tn1Cg+Y;?6Kqo*)_)*nBsflL#nE)`DLxXfOZk? z)}3Y0oFK{5_W#fM|8HKs^78lp{!4%H)z-%DuM!UTr)lsc&N%8gNkrq?;{M4oOI$8a zoH%j&y{gyO_x~%6h`7NlptJj~ot4$+CkHZDbH982nBnP0qlriTZp{(7@x)MI&C%Vb zA3uJaw)yA5iipI-#QZ%UkG-$^zI*q7Zn-R*Tc2!2de@+R36203=6LrWYPmFzYBC3VUsOp#@IZP*Yaa`4u^+TY(T=e+*8G;8b4 zmDN5I%6G`9yflhlQxGrD{={hA)u$VzWq8^puS$#SMlejfbXaLFU;E*t>I3^lZ^`<# zPu>#o*2K7Z+XWNnpe;ws&Zl;-DLc;7q$=87;8d`<_`u6O&o}G}>X2#6+_Ao&a|7eU z$8K2?MLwD9{B=*9w7s7CT`53u_q}V?^OLV?E#01Q@{bG4LGCH82XmPj4qPv=%Ksf1 z)1{=Yc5L}FwSyWA3_o-(Uk>I_)KO8f(9>g^wvUzJ!10%F-~RvKb4LAbbY@6B0|Ntt Mr>mdKI;Vst0OMMmq5uE@ diff --git a/doc/tutorial/gf-tutorial2.html b/doc/tutorial/gf-tutorial2.html deleted file mode 100644 index 702e2dfb9..000000000 --- a/doc/tutorial/gf-tutorial2.html +++ /dev/null @@ -1,4854 +0,0 @@ - - - - - -Grammatical Framework Tutorial - -

Grammatical Framework Tutorial

- -Author: Aarne Ranta aarne (at) cs.chalmers.se
-Last update: Sun Jul 8 18:36:23 2007 -
- -

-
-

-
- -

-
-

-

- -

- -

Introduction

- -

GF = Grammatical Framework

-

-The term GF is used for different things: -

-
    -
  • a program used for working with grammars -
  • a programming language in which grammars can be written -
  • a theory about grammars and languages -
- -

-This tutorial is primarily about the GF program and -the GF programming language. -It will guide you -

-
    -
  • to use the GF program -
  • to write GF grammars -
  • to write programs in which GF grammars are used as components -
- - -

What are GF grammars used for

-

-A grammar is a definition of a language. -From this definition, different language processing components -can be derived: -

-
    -
  • parsing: to analyse the language -
  • linearization: to generate the language -
  • translation: to analyse one language and generate another -
- -

-A GF grammar can be seen as a declarative program from which these -processing tasks can be automatically derived. In addition, many -other tasks are readily available for GF grammars: -

-
    -
  • morphological analysis: find out the possible inflection forms of words -
  • morphological synthesis: generate all inflection forms of words -
  • random generation: generate random expressions -
  • corpus generation: generate all expressions -
  • treebank generation: generate a list of trees with multiple linearizations -
  • teaching quizzes: train morphology and translation -
  • multilingual authoring: create a document in many languages simultaneously -
  • speech input: optimize a speech recognition system for your grammar -
- -

-A typical GF application is based on a multilingual grammar involving -translation on a special domain. Existing applications of this idea include -

-
    -
  • Alfa:: - a natural-language interface to a proof editor - (languages: English, French, Swedish) -
  • KeY: - a multilingual authoring system for creating software specifications - (languages: OCL, English, German) -
  • TALK: - multilingual and multimodal dialogue systems - (languages: English, Finnish, French, German, Italian, Spanish, Swedish) -
  • WebALT: - a multilingual translator of mathematical exercises - (languages: Catalan, English, Finnish, French, Spanish, Swedish) -
  • Numeral translator: - number words from 1 to 999,999 - (88 languages) -
- -

-The specialization of a grammar to a domain makes it possible to -obtain much better translations than in an unlimited machine translation -system. This is due to the well-defined semantics of such domains. -Grammars having this character are called application grammars. -They are different from most grammars written by linguists just -because they are multilingual and domain-specific. -

-

-However, there is another kind of grammars, which we call resource grammars. -These are large, comprehensive grammars that can be used on any domain. -The GF Resource Grammar Library has resource grammars for 10 languages. -These grammars can be used as libraries to define application grammars. -In this way, it is possible to write a high-quality grammar without -knowing about linguistics: in general, to write an application grammar -by using the resource library just requires practical knowledge of -the target language. and all theoretical knowledge about its grammar -is given by the libraries. -

- -

Who is this tutorial for

-

-This tutorial is mainly for programmers who want to learn to write -application grammars. It will go through GF's programming concepts -without entering too deep into linguistics. Thus it should -be accessible to anyone who has some previous programming experience. -

-

-A separate document has been written on how to write resource grammars: the -Resource HOWTO. -In this tutorial, we will just cover the programming concepts that are used for -solving linguistic problems in the resource grammars. -

-

-The easiest way to use GF is probably via the interactive syntax editor. -Its use does not require any knowledge of the GF formalism. There is -a separate -Editor User Manual -by Janna Khegai, covering the use of the editor. The editor is also a platform for many -kinds of GF applications, implementing the slogan -

-

-write a document in a language you don't know, while seeing it in a language you know. -

- -

The coverage of the tutorial

-

-The tutorial gives a hands-on introduction to grammar writing. -We start by building a small grammar for the domain of food: -in this grammar, you can say things like -

-
-    this Italian cheese is delicious
-
-

-in English and Italian. -

-

-The first English grammar -food.cf -is written in a context-free -notation (also known as BNF). The BNF format is often a good -starting point for GF grammar development, because it is -simple and widely used. However, the BNF format is not -good for multilingual grammars. While it is possible to -"translate" by just changing the words contained in a -BNF grammar to words of some other -language, proper translation usually involves more. -For instance, the order of words may have to be changed: -

-
-    Italian cheese ===> formaggio italiano
-
-

-The full GF grammar format is designed to support such -changes, by separating between the abstract syntax -(the logical structure) and the concrete syntax (the -sequence of words) of expressions. -

-

-There is more than words and word order that makes languages -different. Words can have different forms, and which forms -they have vary from language to language. For instance, -Italian adjectives usually have four forms where English -has just one: -

-
-    delicious (wine, wines, pizza, pizzas)
-    vino delizioso, vini deliziosi, pizza deliziosa, pizze deliziose
-
-

-The morphology of a language describes the -forms of its words. While the complete description of morphology -belongs to resource grammars, this tutorial will explain the -programming concepts involved in morphology. This will moreover -make it possible to grow the fragment covered by the food example. -The tutorial will in fact build a miniature resource grammar in order -to give an introduction to linguistically oriented grammar writing. -

-

-Thus it is by elaborating the initial food.cf example that -the tutorial makes a guided tour through all concepts of GF. -While the constructs of the GF language are the main focus, -also the commands of the GF system are introduced as they -are needed. -

-

-To learn how to write GF grammars is not the only goal of -this tutorial. We will also explain the most important -commands of the GF system. With these commands, -simple applications of grammars, such as translation and -quiz systems, can be built simply by writing scripts for the -system. -

-

-More complicated applications, such as natural-language -interfaces and dialogue systems, moreover require programming in -some general-purpose language. Thus we will briefly explain how -GF grammars are used as components of Haskell programs. -Chapters on using them in Java and Javascript programs are -forthcoming; a comprehensive manual on GF embedded in Java, by Björn Bringert, is -available in -http://www.cs.chalmers.se/~bringert/gf/gf-java.html. -

- -

Getting the GF program

-

-The GF program is open-source free software, which you can download via the -GF Homepage: -

-

-http://www.cs.chalmers.se/~aarne/GF -

-

-There you can download -

-
    -
  • binaries for Linux, Mac OS X, and Windows -
  • source code and documentation -
  • grammar libraries and examples -
- -

-If you want to compile GF from source, you need a Haskell compiler. -To compile the interactive editor, you also need a Java compilers. -But normally you don't have to compile, and you definitely -don't need to know Haskell or Java to use GF. -

-

-We are assuming the availability of a Unix shell. Linux and Mac OS X users -have it automatically, the latter under the name "terminal". -Windows users are recommended to install Cywgin, the free Unix shell for Windows. -

- -

Running the GF program

-

-To start the GF program, assuming you have installed it, just type -

-
-    % gf
-
-

-in the shell. -You will see GF's welcome message and the prompt >. -The command -

-
-    > help
-
-

-will give you a list of available commands. -

-

-As a common convention in this Tutorial, we will use -

-
    -
  • % as a prompt that marks system commands -
  • > as a prompt that marks GF commands -
- -

-Thus you should not type these prompts, but only the lines that -follow them. -

- -

The .cf grammar format

-

-Now you are ready to try out your first grammar. -We start with one that is not written in the GF language, but -in the much more common BNF notation (Backus Naur Form). The GF -program understands a variant of this notation and translates it -internally to GF's own representation. -

-

-To get started, type (or copy) the following lines into a file named -food.cf: -

-
-  Is.        S       ::= Item "is" Quality ;
-  That.      Item    ::= "that" Kind ;
-  This.      Item    ::= "this" Kind ;
-  QKind.     Kind    ::= Quality Kind ;
-  Cheese.    Kind    ::= "cheese" ;
-  Fish.      Kind    ::= "fish" ;
-  Wine.      Kind    ::= "wine" ;
-  Italian.   Quality ::= "Italian" ;
-  Boring.    Quality ::= "boring" ;
-  Delicious. Quality ::= "delicious" ;
-  Expensive. Quality ::= "expensive" ;
-  Fresh.     Quality ::= "fresh" ;
-  Very.      Quality ::= "very" Quality ;
-  Warm.      Quality ::= "warm" ;
-
-

-For those who know ordinary BNF, the -notation we use includes one extra element: a label appearing -as the first element of each rule and terminated by a full stop. -

-

-The grammar we wrote defines a set of phrases usable for speaking about food. -It builds sentences (S) by assigning Qualitys to -Items. Items are build from Kinds by prepending the -word "this" or "that". Kinds are either atomic, such as -"cheese" and "wine", or formed by prepending a Quality to a -Kind. A Quality is either atomic, such as "Italian" and "boring", -or built by another Quality by prepending "very". Those familiar with -the context-free grammar notation will notice that, for instance, the -following sentence can be built using this grammar: -

-
-    this delicious Italian wine is very very expensive
-
-

- -

Importing grammars and parsing strings

-

-The first GF command needed when using a grammar is to import it. -The command has a long name, import, and a short name, i. -You can type either -

-
-    > import food.cf
-
-

-or -

-
-    > i food.cf
-
-

-to get the same effect. -The effect is that the GF program compiles your grammar into an internal -representation, and shows a new prompt when it is ready. It will also show how much -CPU time is consumed: -

-
-    > i food.cf
-    - parsing cf food.cf 12 msec
-    16 msec
-    >        
-
-

-You can now use GF for parsing: -

-
-    > parse "this cheese is delicious"
-    Is (This Cheese) Delicious
-  
-    > p "that wine is very very Italian"
-    Is (That Wine) (Very (Very Italian))
-
-

-The parse (= p) command takes a string -(in double quotes) and returns an abstract syntax tree - the thing -beginning with Is. Trees are built from the rule labels given in the -grammar, and record the ways in which the rules are used to produce the -strings. A tree is, in general, something easier than a string -for a machine to understand and to process further. -

-

-Strings that return a tree when parsed do so in virtue of the grammar -you imported. Try parsing something else, and you fail -

-
-    > p "hello world"
-    Unknown words: hello world
-
-

-

-Exercise. Extend the grammar food.cf by ten new food kinds and -qualities, and run the parser with new kinds of examples. -

-

-Exercise. Add a rule that enables questions of the form -is this cheese Italian. -

-

-Exercise. Add the rule -

-
-    IsVery. S ::= Item "is" "very" Quality ;
-
-

-and see what happens when parsing this wine is very very Italian. -You have just made the grammar ambiguous: it now assigns several -trees to some strings. -

-

-Exercise. Modify the grammar so that at most one Quality may -attach to a given Kind. Thus boring Italian fish will no longer -be recognized. -

- -

Generating trees and strings

-

-You can also use GF for linearizing -(linearize = l). This is the inverse of -parsing, taking trees into strings: -

-
-    > linearize Is (That Wine) Warm
-    that wine is warm
-
-

-What is the use of this? Typically not that you type in a tree at -the GF prompt. The utility of linearization comes from the fact that -you can obtain a tree from somewhere else. One way to do so is -random generation (generate_random = gr): -

-
-    > generate_random
-    Is (This (QKind Italian Fish)) Fresh
-
-

-Now you can copy the tree and paste it to the linearize command. -Or, more conveniently, feed random generation into linearization by using -a pipe. -

-
-    > gr | l
-    this Italian fish is fresh
-
-

-Pipes in GF work much the same way as Unix pipes: they feed the output -of one command into another command as its input. -

- -

Visualizing trees

-

-The gibberish code with parentheses returned by the parser does not -look like trees. Why is it called so? From the abstract mathematical -point of view, trees are a data structure that -represents nesting: trees are branching entities, and the branches -are themselves trees. Parentheses give a linear representation of trees, -useful for the computer. But the human eye may prefer to see a visualization; -for this purpose, GF provides the command visualizre_tree = vt, to which -parsing (and any other tree-producing command) can be piped: -

-
-    > parse "this delicious cheese is very Italian" | vt
-
-

-

- -

-

-This command uses the programs Graphviz and Ghostview, which you -might not have, but which are freely available on the web. -

- -

Some random-generated sentences

-

-Random generation is a good way to test a grammar; it can also -be fun. So you may want to -generate ten strings with one and the same command: -

-
-    > gr -number=10 | l
-    that wine is boring
-    that fresh cheese is fresh
-    that cheese is very boring
-    this cheese is Italian
-    that expensive cheese is expensive
-    that fish is fresh
-    that wine is very Italian
-    this wine is Italian
-    this cheese is boring
-    this fish is boring
-
-

- -

Systematic generation

-

-To generate all sentence that a grammar -can generate, use the command generate_trees = gt. -

-
-    > generate_trees | l
-    that cheese is very Italian
-    that cheese is very boring
-    that cheese is very delicious
-    that cheese is very expensive
-    that cheese is very fresh
-    ...
-    this wine is expensive
-    this wine is fresh
-    this wine is warm
-  
-
-

-You get quite a few trees but not all of them: only up to a given -depth of trees. To see how you can get more, use the -help = h command, -

-
-    > help gt
-
-

-

-Exercise. If the command gt generated all -trees in your grammar, it would never terminate. Why? -

-

-Exercise. Measure how many trees the grammar gives with depths 4 and 5, -respectively. You use the Unix word count command wc to count lines. -Hint. You can pipe the output of a GF command into a Unix command by -using the escape ?, as follows: -

-
-    > generate_trees | ? wc
-
-

- -

More on pipes; tracing

-

-A pipe of GF commands can have any length, but the "output type" -(either string or tree) of one command must always match the "input type" -of the next command. -

-

-The intermediate results in a pipe can be observed by putting the -tracing flag -tr to each command whose output you -want to see: -

-
-    > gr -tr | l -tr | p
-  
-    Is (This Cheese) Boring
-    this cheese is boring
-    Is (This Cheese) Boring  
-
-

-This facility is good for test purposes: for instance, you -may want to see if a grammar is ambiguous, i.e. -contains strings that can be parsed in more than one way. -

-

-Exercise. Extend the grammar food.cf so that it produces ambiguous strings, -and try out the ambiguity test. -

- -

Writing and reading files

-

-To save the outputs of GF commands into a file, you can -pipe it to the write_file = wf command, -

-
-    > gr -number=10 | l | write_file exx.tmp
-
-

-You can read the file back to GF with the -read_file = rf command, -

-
-    > read_file exx.tmp | p -lines
-
-

-Notice the flag -lines given to the parsing -command. This flag tells GF to parse each line of -the file separately. Without the flag, the grammar could -not recognize the string in the file, because it is not -a sentence but a sequence of ten sentences. -

- -

The .gf grammar format

-

-To see GF's internal representation of a grammar -that you have imported, you can give the command -print_grammar = pg, -

-
-    > print_grammar
-
-

-The output is quite unreadable at this stage, and you may feel happy that -you did not need to write the grammar in that notation, but that the -GF grammar compiler produced it. -

-

-However, we will now start the demonstration -how GF's own notation gives you -much more expressive power than the .cf -format. We will introduce the .gf format by presenting -another way of defining the same grammar as in -food.cf. -Then we will show how the full GF grammar format enables you -to do things that are not possible in the context-free format. -

- -

Abstract and concrete syntax

-

-A GF grammar consists of two main parts: -

-
    -
  • abstract syntax, defining what syntax trees there are -
  • concrete syntax, defining how trees are linearized into strings -
- -

-The context-free format fuses these two things together, but it is always -possible to take them apart. For instance, the sentence formation rule -

-
-    Is. S ::= Item "is" Quality ;
-
-

-is interpreted as the following pair of GF rules: -

-
-    fun Is : Item -> Quality -> S ;
-    lin Is item quality = {s = item.s ++ "is" ++ quality.s} ;
-
-

-The former rule, with the keyword fun, belongs to the abstract syntax. -It defines the function -Is which constructs syntax trees of form -(Is item quality). -

-

-The latter rule, with the keyword lin, belongs to the concrete syntax. -It defines the linearization function for -syntax trees of form (Is item quality). -

- -

Judgement forms

-

-Rules in a GF grammar are called judgements, and the keywords -fun and lin are used for distinguishing between two -judgement forms. Here is a summary of the most important -judgement forms: -

-
    -
  • abstract syntax -

    -
- - - - - - - - - - - - - - -
formreading
cat CC is a category
fun f : Af is a function of type A
- -

-
    -
  • concrete syntax -

    -
- - - - - - - - - - - - - - -
formreading
lincat C = Tcategory C has linearization type T
lin f = tfunction f has linearization t
- -

-

-We return to the precise meanings of these judgement forms later. -First we will look at how judgements are grouped into modules, and -show how the food grammar is -expressed by using modules and judgements. -

- -

Module types

-

-A GF grammar consists of modules, -into which judgements are grouped. The most important -module forms are -

-
    -
  • abstract A = M, abstract syntax A with judgements in - the module body M. -
  • concrete C of A = M, concrete syntax C of the - abstract syntax A, with judgements in the module body M. -
- - -

Basic types and function types

-

-The nonterminals of a context-free grammar, i.e. categories, -are called basic types in the type system of GF. In addition -to them, there are function types such as -

-
-    Item -> Quality -> S
-
-

-This type is read "a function from iterms and qualities to sentences". -The last type in the arrow-separated sequence is the value type -of the function type, the earlier types are its argument types. -

- -

Records and strings

-

-The linearization type of a category is a record type, with -zero of more fields of different types. The simplest record -type used for linearization in GF is -

-
-    {s : Str}
-
-

-which has one field, with label s and type Str. -

-

-Examples of records of this type are -

-
-    {s = "foo"}
-    {s = "hello" ++ "world"}
-
-

-

-Whenever a record r of type {s : Str} is given, -r.s is an object of type Str. This is -a special case of the projection rule, allowing the extraction -of fields from a record: -

-
    -
  • if r : { ... p : T ... } then r.p : T -
- -

-The type Str is really the type of token lists, but -most of the time one can conveniently think of it as the type of strings, -denoted by string literals in double quotes. -

-

-Notice that -

-
-   "hello world"
-
-

-is not recommended as an expression of type Str. It denotes -a token with a space in it, and will usually -not work with the lexical analysis that precedes parsing. A shorthand -exemplified by -

-
-    ["hello world and people"]  === "hello" ++ "world" ++ "and" ++ "people"
-
-

-can be used for lists of tokens. The expression -

-
-    []
-
-

-denotes the empty token list. -

- -

An abstract syntax example

-

-To express the abstract syntax of food.cf in -a file Food.gf, we write two kinds of judgements: -

-
    -
  • Each category is introduced by a cat judgement. -
  • Each rule label is introduced by a fun judgement, - with the type formed from the nonterminals of the rule. -
- -
-    abstract Food = {
-  
-    cat
-      S ; Item ; Kind ; Quality ;
-  
-    fun
-      Is : Item -> Quality -> S ;
-      This, That : Kind -> Item ;
-      QKind : Quality -> Kind -> Kind ;
-      Wine, Cheese, Fish : Kind ;
-      Very : Quality -> Quality ;
-      Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ;
-    }
-
-

-Notice the use of shorthands permitting the sharing of -the keyword in subsequent judgements, -

-
-    cat S ; Item ;   ===   cat S ; cat Item ; 
-
-

-and of the type in subsequent fun judgements, -

-
-    fun Wine, Fish : Kind ;            ===
-    fun Wine : Kind ; Fish : Kind ;    ===
-    fun Wine : Kind ; fun Fish : Kind ;
-
-

-The order of judgements in a module is free. -

-

-Exercise. Extend the abstract syntax Food with ten new -kinds and qualities, and with questions of the form -is this wine Italian. -

- -

A concrete syntax example

-

-Each category introduced in Food.gf is -given a lincat rule, and each -function is given a lin rule. Similar shorthands -apply as in abstract modules. -

-
-    concrete FoodEng of Food = {
-  
-    lincat
-      S, Item, Kind, Quality = {s : Str} ;
-  
-    lin
-      Is item quality = {s = item.s ++ "is" ++ quality.s} ;
-      This kind = {s = "this" ++ kind.s} ;
-      That kind = {s = "that" ++ kind.s} ;
-      QKind quality kind = {s = quality.s ++ kind.s} ;
-      Wine = {s = "wine"} ;
-      Cheese = {s = "cheese"} ;
-      Fish = {s = "fish"} ;
-      Very quality = {s = "very" ++ quality.s} ;
-      Fresh = {s = "fresh"} ;
-      Warm = {s = "warm"} ;
-      Italian = {s = "Italian"} ;
-      Expensive = {s = "expensive"} ;
-      Delicious = {s = "delicious"} ;
-      Boring = {s = "boring"} ;
-    }
-
-

-

-Exercise. Extend the concrete syntax FoodEng so that it -matches the abstract syntax defined in the exercise of the previous -section. What happens if the concrete syntax lacks some of the -new functions? -

- -

Modules and files

-

-GF uses suffixes to recognize different file formats. The most -important ones are: -

-
    -
  • Source files: Module name + .gf = file name -
  • Target files: each module is compiled into a .gfc file. -
- -

-Import FoodEng.gf and see what happens: -

-
-    > i FoodEng.gf
-    - compiling Food.gf...   wrote file Food.gfc 16 msec
-    - compiling FoodEng.gf...   wrote file FoodEng.gfc 20 msec
-
-

-The GF program does not only read the file -FoodEng.gf, but also all other files that it -depends on - in this case, Food.gf. -

-

-For each file that is compiled, a .gfc file -is generated. The GFC format (="GF Canonical") is the -"machine code" of GF, which is faster to process than -GF source files. When reading a module, GF decides whether -to use an existing .gfc file or to generate -a new one, by looking at modification times. -

-

-Exercise. What happens when you import FoodEng.gf for -a second time? Try this in different situations: -

-
    -
  • Right after importing it the first time (the modules are kept in - the memory of GF and need no reloading). -
  • After issuing the command empty (e), which clears the memory - of GF. -
  • After making a small change in FoodEng.gf, be it only an added space. -
  • After making a change in Food.gf. -
- - -

Multilingual grammars and translation

-

-The main advantage of separating abstract from concrete syntax is that -one abstract syntax can be equipped with many concrete syntaxes. -A system with this property is called a multilingual grammar. -

-

-Multilingual grammars can be used for applications such as -translation. Let us build an Italian concrete syntax for -Food and then test the resulting -multilingual grammar. -

- -

An Italian concrete syntax

-
-  concrete FoodIta of Food = {
-  
-    lincat
-      S, Item, Kind, Quality = {s : Str} ;
-  
-    lin
-      Is item quality = {s = item.s ++ "è" ++ quality.s} ;
-      This kind = {s = "questo" ++ kind.s} ;
-      That kind = {s = "quello" ++ kind.s} ;
-      QKind quality kind = {s = kind.s ++ quality.s} ;
-      Wine = {s = "vino"} ;
-      Cheese = {s = "formaggio"} ;
-      Fish = {s = "pesce"} ;
-      Very quality = {s = "molto" ++ quality.s} ;
-      Fresh = {s = "fresco"} ;
-      Warm = {s = "caldo"} ;
-      Italian = {s = "italiano"} ;
-      Expensive = {s = "caro"} ;
-      Delicious = {s = "delizioso"} ;
-      Boring = {s = "noioso"} ;
-  
-  }
-
-

-

-Exercise. Write a concrete syntax of Food for some other language. -You will probably end up with grammatically incorrect output - but don't -worry about this yet. -

-

-Exercise. If you have written Food for German, Swedish, or some -other language, test with random or exhaustive generation what constructs -come out incorrect, and prepare a list of those ones that cannot be helped -with the currently available fragment of GF. -

- -

Using a multilingual grammar

-

-Import the two grammars in the same GF session. -

-
-    > i FoodEng.gf
-    > i FoodIta.gf
-
-

-Try generation now: -

-
-    > gr | l
-    quello formaggio molto noioso è italiano
-  
-    > gr | l -lang=FoodEng
-    this fish is warm
-
-

-Translate by using a pipe: -

-
-    > p -lang=FoodEng "this cheese is very delicious" | l -lang=FoodIta
-    questo formaggio è molto delizioso
-
-

-Generate a multilingual treebank, i.e. a set of trees with their -translations in different languages: -

-
-    > gr -number=2 | tree_bank
-  
-    Is (That Cheese) (Very Boring)
-    quello formaggio è molto noioso
-    that cheese is very boring
-  
-    Is (That Cheese) Fresh
-    quello formaggio è fresco
-    that cheese is fresh
-
-

-The lang flag tells GF which concrete syntax to use in parsing and -linearization. By default, the flag is set to the last-imported grammar. -To see what grammars are in scope and which is the main one, use the command -print_options = po: -

-
-    > print_options
-    main abstract :     Food
-    main concrete :     FoodIta
-    actual concretes :  FoodIta FoodEng
-
-

-You can change the main grammar by the command change_main = cm: -

-
-    > change_main FoodEng
-    main abstract :     Food
-    main concrete :     FoodEng
-    actual concretes :  FoodIta FoodEng
-
-

- -

Translation session

-

-If translation is what you want to do with a set of grammars, a convenient -way to do it is to open a translation_session = ts. In this session, -you can translate between all the languages that are in scope. -A dot . terminates the translation session. -

-
-    > ts
-  
-    trans> that very warm cheese is boring
-    quello formaggio molto caldo è noioso
-    that very warm cheese is boring
-  
-    trans> questo vino molto italiano è molto delizioso
-    questo vino molto italiano è molto delizioso
-    this very Italian wine is very delicious
-  
-    trans> .
-    >
-
-

- -

Translation quiz

-

-This is a simple language exercise that can be automatically -generated from a multilingual grammar. The system generates a set of -random sentences, displays them in one language, and checks the user's -answer given in another language. The command translation_quiz = tq -makes this in a subshell of GF. -

-
-    > translation_quiz FoodEng FoodIta
-  
-    Welcome to GF Translation Quiz.
-    The quiz is over when you have done at least 10 examples
-    with at least 75 % success.
-    You can interrupt the quiz by entering a line consisting of a dot ('.').
-  
-    this fish is warm
-    questo pesce è caldo
-    > Yes.
-    Score 1/1
-  
-    this cheese is Italian
-    questo formaggio è noioso
-    > No, not questo formaggio è noioso, but
-    questo formaggio è italiano
-  
-    Score 1/2
-    this fish is expensive
-
-

-You can also generate a list of translation exercises and save it in a -file for later use, by the command translation_list = tl -

-
-    > translation_list -number=25 FoodEng FoodIta | write_file transl.txt
-
-

-The number flag gives the number of sentences generated. -

- -

Grammar architecture

- -

Extending a grammar

-

-The module system of GF makes it possible to extend a -grammar in different ways. The syntax of extension is -shown by the following example. We extend Food by -adding a category of questions and two new functions. -

-
-    abstract Morefood = Food ** {
-      cat
-        Question ;
-      fun
-        QIs : Item -> Quality -> Question ;
-        Pizza : Kind ;
-        
-    }
-
-

-Parallel to the abstract syntax, extensions can -be built for concrete syntaxes: -

-
-    concrete MorefoodEng of Morefood = FoodEng ** {
-      lincat
-        Question = {s : Str} ;
-      lin
-        QIs item quality = {s = "is" ++ item.s ++ quality.s} ;
-        Pizza = {s = "pizza"} ;
-    }
-
-

-The effect of extension is that all of the contents of the extended -and extending module are put together. We also say that the new -module inherits the contents of the old module. -

- -

Multiple inheritance

-

-Specialized vocabularies can be represented as small grammars that -only do "one thing" each. For instance, the following are grammars -for fruit and mushrooms -

-
-    abstract Fruit = {
-      cat Fruit ;
-      fun Apple, Peach : Fruit ;
-    }
-  
-    abstract Mushroom = {
-      cat Mushroom ;
-      fun Cep, Agaric : Mushroom ;
-    }
-
-

-They can afterwards be combined into bigger grammars by using -multiple inheritance, i.e. extension of several grammars at the -same time: -

-
-    abstract Foodmarket = Food, Fruit, Mushroom ** {
-      fun 
-        FruitKind    : Fruit    -> Kind ;
-        MushroomKind : Mushroom -> Kind ;
-      }
-
-

-At this point, you would perhaps like to go back to -Food and take apart Wine to build a special -Drink module. -

- -

Visualizing module structure

-

-When you have created all the abstract syntaxes and -one set of concrete syntaxes needed for Foodmarket, -your grammar consists of eight GF modules. To see how their -dependences look like, you can use the command -visualize_graph = vg, -

-
-    > visualize_graph
-
-

-and the graph will pop up in a separate window. -

-

-The graph uses -

-
    -
  • oval boxes for abstract modules -
  • square boxes for concrete modules -
  • black-headed arrows for inheritance -
  • white-headed arrows for the concrete-of-abstract relation -
- -

- -

-

-Just as the visualize_tree = vt command, the open source tools -Ghostview and Graphviz are needed. -

- -

System commands

-

-To document your grammar, you may want to print the -graph into a file, e.g. a .png file that -can be included in an HTML document. You can do this -by first printing the graph into a file .dot and then -processing this file with the dot program (from the Graphviz package). -

-
-    > pm -printer=graph | wf Foodmarket.dot
-    > ! dot -Tpng Foodmarket.dot > Foodmarket.png
-
-

-The latter command is a Unix command, issued from GF by using the -shell escape symbol !. The resulting graph was shown in the previous section. -

-

-The command print_multi = pm is used for printing the current multilingual -grammar in various formats, of which the format -printer=graph just -shows the module dependencies. Use help to see what other formats -are available: -

-
-    > help pm
-    > help -printer
-    > help help
-
-

-Another form of system commands are those usable in GF pipes. The escape symbol -is then ?. -

-
-    > generate_trees | ? wc
-
-

- -

Resource modules

- -

The golden rule of functional programming

-

-In comparison to the .cf format, the .gf format looks rather -verbose, and demands lots more characters to be written. You have probably -done this by the copy-paste-modify method, which is a common way to -avoid repeating work. -

-

-However, there is a more elegant way to avoid repeating work than the copy-and-paste -method. The golden rule of functional programming says that -

-
    -
  • whenever you find yourself programming by copy-and-paste, write a function instead. -
- -

-A function separates the shared parts of different computations from the -changing parts, its arguments, or parameters. -In functional programming languages, such as -Haskell, it is possible to share much more -code with functions than in imperative languages such as C and Java. -

- -

Operation definitions

-

-GF is a functional programming language, not only in the sense that -the abstract syntax is a system of functions (fun), but also because -functional programming can be used to define concrete syntax. This is -done by using a new form of judgement, with the keyword oper (for -operation), distinct from fun for the sake of clarity. -Here is a simple example of an operation: -

-
-    oper ss : Str -> {s : Str} = \x -> {s = x} ;
-
-

-The operation can be applied to an argument, and GF will -compute the application into a value. For instance, -

-
-    ss "boy"  ===>  {s = "boy"}
-
-

-(We use the symbol ===> to indicate how an expression is -computed into a value; this symbol is not a part of GF) -

-

-Thus an oper judgement includes the name of the defined operation, -its type, and an expression defining it. As for the syntax of the defining -expression, notice the lambda abstraction form \x -> t of -the function. -

- -

The ``resource`` module type

-

-Operator definitions can be included in a concrete syntax. -But they are not really tied to a particular set of linearization rules. -They should rather be seen as resources -usable in many concrete syntaxes. -

-

-The resource module type can be used to package -oper definitions into reusable resources. Here is -an example, with a handful of operations to manipulate -strings and records. -

-
-    resource StringOper = {
-      oper
-        SS : Type = {s : Str} ;
-        ss : Str -> SS = \x -> {s = x} ;
-        cc : SS -> SS -> SS = \x,y -> ss (x.s ++ y.s) ;
-        prefix : Str -> SS -> SS = \p,x -> ss (p ++ x.s) ;
-    }
-
-

-Resource modules can extend other resource modules, in the -same way as modules of other types can extend modules of the -same type. Thus it is possible to build resource hierarchies. -

- -

Opening a resource

-

-Any number of resource modules can be -opened in a concrete syntax, which -makes definitions contained -in the resource usable in the concrete syntax. Here is -an example, where the resource StringOper is -opened in a new version of FoodEng. -

-
-    concrete Food2Eng of Food = open StringOper in {
-  
-    lincat
-      S, Item, Kind, Quality = SS ;
-  
-    lin
-      Is item quality = cc item (prefix "is" quality) ;
-      This k = prefix "this" k ;
-      That k = prefix "that" k ;
-      QKind k q = cc k q ;
-      Wine = ss "wine" ;
-      Cheese = ss "cheese" ;
-      Fish = ss "fish" ;
-      Very = prefix "very" ;
-      Fresh = ss "fresh" ;
-      Warm = ss "warm" ;
-      Italian = ss "Italian" ;
-      Expensive = ss "expensive" ;
-      Delicious = ss "delicious" ;
-      Boring = ss "boring" ;
-  
-    }
-
-

-Exercise. Use the same string operations to write FoodIta -more concisely. -

- -

Partial application

-

-GF, like Haskell, permits partial application of -functions. An example of this is the rule -

-
-    lin This k = prefix "this" k ;
-
-

-which can be written more concisely -

-
-    lin This = prefix "this" ;
-
-

-The first form is perhaps more intuitive to write -but, once you get used to partial application, you will appreciate its -conciseness and elegance. The logic of partial application -is known as currying, with a reference to Haskell B. Curry. -The idea is that any n-place function can be defined as a 1-place -function whose value is an n-1 -place function. Thus -

-
-    oper prefix : Str -> SS -> SS ;
-
-

-can be used as a 1-place function that takes a Str into a -function SS -> SS. The expected linearization of This is exactly -a function of such a type, operating on an argument of type Kind -whose linearization is of type SS. Thus we can define the -linearization directly as prefix "this". -

-

-Exercise. Define an operation infix analogous to prefix, -such that it allows you to write -

-
-    lin Is = infix "is" ;
-
-

- -

Testing resource modules

-

-To test a resource module independently, you must import it -with the flag -retain, which tells GF to retain oper definitions -in the memory; the usual behaviour is that oper definitions -are just applied to compile linearization rules -(this is called inlining) and then thrown away. -

-
-    > i -retain StringOper.gf
-
-

-The command compute_concrete = cc computes any expression -formed by operations and other GF constructs. For example, -

-
-    > compute_concrete prefix "in" (ss "addition")
-    {
-      s : Str = "in" ++ "addition"
-    }
-
-

- -

Division of labour

-

-Using operations defined in resource modules is a -way to avoid repetitive code. -In addition, it enables a new kind of modularity -and division of labour in grammar writing: grammarians familiar with -the linguistic details of a language can make their knowledge -available through resource grammar modules, whose users only need -to pick the right operations and not to know their implementation -details. -

-

-In the following sections, we will go through some -such linguistic details. The programming constructs needed when -doing this are useful for all GF programmers, even if they don't -hand-code the linguistics of their applications but get them -from libraries. It is also useful to know something about the -linguistic concepts of inflection, agreement, and parts of speech. -

- -

Morphology

-

-Suppose we want to say, with the vocabulary included in -Food.gf, things like -

-
-    all Italian wines are delicious
-
-

-The new grammatical facility we need are the plural forms -of nouns and verbs (wines, are), as opposed to their -singular forms. -

-

-The introduction of plural forms requires two things: -

-
    -
  • the inflection of nouns and verbs in singular and plural -
  • the agreement of the verb to subject: - the verb must have the same number as the subject -
- -

-Different languages have different rules of inflection and agreement. -For instance, Italian has also agreement in gender (masculine vs. feminine). -We want to express such special features of languages in the -concrete syntax while ignoring them in the abstract syntax. -

-

-To be able to do all this, we need one new judgement form -and many new expression forms. -We also need to generalize linearization types -from strings to more complex types. -

-

-Exercise. Make a list of the possible forms that nouns, -adjectives, and verbs can have in some languages that you know. -

- -

Parameters and tables

-

-We define the parameter type of number in Englisn by -using a new form of judgement: -

-
-    param Number = Sg | Pl ;
-
-

-To express that Kind expressions in English have a linearization -depending on number, we replace the linearization type {s : Str} -with a type where the s field is a table depending on number: -

-
-    lincat Kind = {s : Number => Str} ;
-
-

-The table type Number => Str is in many respects similar to -a function type (Number -> Str). The main difference is that the -argument type of a table type must always be a parameter type. This means -that the argument-value pairs can be listed in a finite table. The following -example shows such a table: -

-
-    lin Cheese = {s = table {
-      Sg => "cheese" ;
-      Pl => "cheeses"
-      }
-    } ;
-
-

-The table consists of branches, where a pattern on the -left of the arrow => is assigned a value on the right. -

-

-The application of a table to a parameter is done by the selection -operator !. For instance, -

-
-     table {Sg => "cheese" ; Pl => "cheeses"} ! Pl
-
-

-is a selection that computes into the value "cheeses". -This computation is performed by pattern matching: return -the value from the first branch whose pattern matches the -selection argument. Thus -

-
-     table {Sg => "cheese" ; Pl => "cheeses"} ! Pl 
-     ===> "cheeses"
-
-

-

-Exercise. In a previous exercise, we make a list of the possible -forms that nouns, adjectives, and verbs can have in some languages that -you know. Now take some of the results and implement them by -using parameter type definitions and tables. Write them into a resource -module, which you can test by using the command compute_concrete. -

- -

Inflection tables and paradigms

-

-All English common nouns are inflected in number, most of them in the -same way: the plural form is obtained from the singular by adding the -ending s. This rule is an example of -a paradigm - a formula telling how the inflection -forms of a word are formed. -

-

-From the GF point of view, a paradigm is a function that takes a lemma - -also known as a dictionary form - and returns an inflection -table of desired type. Paradigms are not functions in the sense of the -fun judgements of abstract syntax (which operate on trees and not -on strings), but operations defined in oper judgements. -The following operation defines the regular noun paradigm of English: -

-
-    oper regNoun : Str -> {s : Number => Str} = \x -> {
-      s = table {
-        Sg => x ;
-        Pl => x + "s"
-        }
-      } ;
-
-

-The gluing operator + tells that -the string held in the variable x and the ending "s" -are written together to form one token. Thus, for instance, -

-
-    (regNoun "cheese").s ! Pl  ---> "cheese" + "s"  --->  "cheeses"
-
-

-

-Exercise. Identify cases in which the regNoun paradigm does not -apply in English, and implement some alternative paradigms. -

-

-Exercise. Implement a paradigm for regular verbs in English. -

-

-Exercise. Implement some regular paradigms for other languages you have -considered in earlier exercises. -

- -

Worst-case functions and data abstraction

-

-Some English nouns, such as mouse, are so irregular that -it makes no sense to see them as instances of a paradigm. Even -then, it is useful to perform data abstraction from the -definition of the type Noun, and introduce a constructor -operation, a worst-case function for nouns: -

-
-    oper mkNoun : Str -> Str -> Noun = \x,y -> {
-      s = table {
-        Sg => x ;
-        Pl => y
-        }
-      } ;
-
-

-Thus we can define -

-
-    lin Mouse = mkNoun "mouse" "mice" ;
-
-

-and -

-
-    oper regNoun : Str -> Noun = \x -> 
-      mkNoun x (x + "s") ;
-
-

-instead of writing the inflection tables explicitly. -

-

-The grammar engineering advantage of worst-case functions is that -the author of the resource module may change the definitions of -Noun and mkNoun, and still retain the -interface (i.e. the system of type signatures) that makes it -correct to use these functions in concrete modules. In programming -terms, Noun is then treated as an abstract datatype. -

- -

A system of paradigms using Prelude operations

-

-In addition to the completely regular noun paradigm regNoun, -some other frequent noun paradigms deserve to be -defined, for instance, -

-
-    sNoun : Str -> Noun = \kiss  -> mkNoun kiss (kiss + "es") ;
-
-

-What about nouns like fly, with the plural flies? The already -available solution is to use the longest common prefix -fl (also known as the technical stem) as argument, and define -

-
-    yNoun : Str -> Noun = \fl -> mkNoun (fl + "y") (fl + "ies") ;
-
-

-But this paradigm would be very unintuitive to use, because the technical stem -is not an existing form of the word. A better solution is to use -the lemma and a string operator init, which returns the initial segment (i.e. -all characters but the last) of a string: -

-
-    yNoun : Str -> Noun = \fly -> mkNoun fly (init fly + "ies") ;  
-
-

-The operation init belongs to a set of operations in the -resource module Prelude, which therefore has to be -opened so that init can be used. Its dual is last: -

-
-    > cc init "curry"
-    "curr"
-  
-    > cc last "curry"
-    "y"
-
-

-As generalizations of the library functions init and last, GF has -two predefined funtions: -Predef.dp, which "drops" suffixes of any length, -and Predef.tk, which "takes" a prefix -just omitting a number of characters from the end. For instance, -

-
-    > cc Predef.tk 3 "worried"
-    "worr"
-    > cc Predef.dp 3 "worried"
-    "ied"
-
-

-The prefix Predef is given to a handful of functions that could -not be defined internally in GF. They are available in all modules -without explicit open of the module Predef. -

- -

Pattern matching

-

-We have so far built all expressions of the table form -from branches whose patterns are constants introduced in -param definitions, as well as constant strings. -But there are more expressive patterns. Here is a summary of the possible forms: -

-
    -
  • a variable pattern (identifier other than constant parameter) matches anything -
  • the wild card _ matches anything -
  • a string literal pattern, e.g. "s", matches the same string -
  • a disjunctive pattern P | ... | Q matches anything that - one of the disjuncts matches -
- -

-Pattern matching is performed in the order in which the branches -appear in the table: the branch of the first matching pattern is followed. -

-

-As syntactic sugar, one-branch tables can be written concisely, -

-
-    \\P,...,Q => t  ===  table {P => ... table {Q => t} ...}
-
-

-Finally, the case expressions common in functional -programming languages are syntactic sugar for table selections: -

-
-    case e of {...} ===  table {...} ! e
-
-

- -

An intelligent noun paradigm using pattern matching

-

-It may be hard for the user of a resource morphology to pick the right -inflection paradigm. A way to help this is to define a more intelligent -paradigm, which chooses the ending by first analysing the lemma. -The following variant for English regular nouns puts together all the -previously shown paradigms, and chooses one of them on the basis of -the final letter of the lemma (found by the prelude operator last). -

-
-    regNoun : Str -> Noun = \s -> case last s of {
-      "s" | "z" => mkNoun s (s + "es") ;
-      "y"       => mkNoun s (init s + "ies") ;
-      _         => mkNoun s (s + "s")
-      } ;
-
-

-This definition displays many GF expression forms not shown befores; -these forms are explained in the next section. -

-

-The paradigms regNoun does not give the correct forms for -all nouns. For instance, mouse - mice and -fish - fish must be given by using mkNoun. -Also the word boy would be inflected incorrectly; to prevent -this, either use mkNoun or modify -regNoun so that the "y" case does not -apply if the second-last character is a vowel. -

-

-Exercise. Extend the regNoun paradigm so that it takes care -of all variations there are in English. Test it with the nouns -ax, bamboo, boy, bush, hero, match. -Hint. The library functions Predef.dp and Predef.tk -are useful in this task. -

-

-Exercise. The same rules that form plural nouns in English also -apply in the formation of third-person singular verbs. -Write a regular verb paradigm that uses this idea, but first -rewrite regNoun so that the analysis needed to build s-forms -is factored out as a separate oper, which is shared with -regVerb. -

- -

Morphological resource modules

-

-A common idiom is to -gather the oper and param definitions -needed for inflecting words in -a language into a morphology module. Here is a simple -example, MorphoEng. -

-
-    --# -path=.:prelude
-  
-    resource MorphoEng = open Prelude in {
-  
-      param
-        Number = Sg | Pl ;
-  
-      oper
-        Noun, Verb : Type = {s : Number => Str} ;
-  
-        mkNoun : Str -> Str -> Noun = \x,y -> {
-          s = table {
-            Sg => x ;
-            Pl => y
-            }
-          } ;
-  
-        regNoun : Str -> Noun = \s -> case last s of {
-          "s" | "z" => mkNoun s (s + "es") ;
-          "y"       => mkNoun s (init s + "ies") ;
-          _         => mkNoun s (s + "s")
-          } ;
-  
-        mkVerb : Str -> Str -> Verb = \x,y -> mkNoun y x ;
-  
-        regVerb : Str -> Verb = \s -> case last s of {
-          "s" | "z" => mkVerb s (s + "es") ;
-          "y"       => mkVerb s (init s + "ies") ;
-          "o"       => mkVerb s (s + "es") ;
-          _         => mkVerb s (s + "s")
-          } ;
-    }
-
-

-The first line gives as a hint to the compiler the -search path needed to find all the other modules that the -module depends on. The directory prelude is a subdirectory of -GF/lib; to be able to refer to it in this simple way, you can -set the environment variable GF_LIB_PATH to point to this -directory. -

- -

Using parameters in concrete syntax

-

-We can now enrich the concrete syntax definitions to -comprise morphology. This will involve a more radical -variation between languages (e.g. English and Italian) -then just the use of different words. In general, -parameters and linearization types are different in -different languages - but this does not prevent the -use of a common abstract syntax. -

- -

Parametric vs. inherent features, agreement

-

-The rule of subject-verb agreement in English says that the verb -phrase must be inflected in the number of the subject. This -means that a noun phrase (functioning as a subject), inherently -has a number, which it passes to the verb. The verb does not -have a number, but must be able to receive whatever number the -subject has. This distinction is nicely represented by the -different linearization types of noun phrases and verb phrases: -

-
-    lincat NP = {s : Str ; n : Number} ;
-    lincat VP = {s : Number => Str} ;
-
-

-We say that the number of NP is an inherent feature, -whereas the number of NP is a variable feature (or a -parametric feature). -

-

-The agreement rule itself is expressed in the linearization rule of -the predication function: -

-
-    lin PredVP np vp = {s = np.s ++ vp.s ! np.n} ;
-
-

-The following section will present -FoodsEng, assuming the abstract syntax Foods -that is similar to Food but also has the -plural determiners These and Those. -The reader is invited to inspect the way in which agreement works in -the formation of sentences. -

- -

English concrete syntax with parameters

-

-The grammar uses both -Prelude and -MorphoEng. -We will later see how to make the grammar even -more high-level by using a resource grammar library -and parametrized modules. -

-
-  --# -path=.:resource:prelude
-  
-  concrete FoodsEng of Foods = open Prelude, MorphoEng in {
-  
-    lincat
-      S, Quality = SS ; 
-      Kind = {s : Number => Str} ; 
-      Item = {s : Str ; n : Number} ; 
-  
-    lin
-      Is item quality = ss (item.s ++ (mkVerb "are" "is").s ! item.n ++ quality.s) ;
-      This  = det Sg "this" ;
-      That  = det Sg "that" ;
-      These = det Pl "these" ;
-      Those = det Pl "those" ;
-      QKind quality kind = {s = \\n => quality.s ++ kind.s ! n} ;
-      Wine = regNoun "wine" ;
-      Cheese = regNoun "cheese" ;
-      Fish = mkNoun "fish" "fish" ;
-      Very = prefixSS "very" ;
-      Fresh = ss "fresh" ;
-      Warm = ss "warm" ;
-      Italian = ss "Italian" ;
-      Expensive = ss "expensive" ;
-      Delicious = ss "delicious" ;
-      Boring = ss "boring" ;
-  
-    oper
-      det : Number -> Str -> Noun -> {s : Str ; n : Number} = \n,d,cn -> {
-        s = d ++ cn.s ! n ;
-        n = n
-        } ;
-  }
-
-

- -

Hierarchic parameter types

-

-The reader familiar with a functional programming language such as -Haskell must have noticed the similarity -between parameter types in GF and algebraic datatypes (data definitions -in Haskell). The GF parameter types are actually a special case of algebraic -datatypes: the main restriction is that in GF, these types must be finite. -(It is this restriction that makes it possible to invert linearization rules into -parsing methods.) -

-

-However, finite is not the same thing as enumerated. Even in GF, parameter -constructors can take arguments, provided these arguments are from other -parameter types - only recursion is forbidden. Such parameter types impose a -hierarchic order among parameters. They are often needed to define -the linguistically most accurate parameter systems. -

-

-To give an example, Swedish adjectives -are inflected in number (singular or plural) and -gender (uter or neuter). These parameters would suggest 2*2=4 different -forms. However, the gender distinction is done only in the singular. Therefore, -it would be inaccurate to define adjective paradigms using the type -Gender => Number => Str. The following hierarchic definition -yields an accurate system of three adjectival forms. -

-
-    param AdjForm = ASg Gender | APl ;
-    param Gender  = Utr | Neutr ;
-
-

-Here is an example of pattern matching, the paradigm of regular adjectives. -

-
-    oper regAdj : Str -> AdjForm => Str = \fin -> table {
-      ASg Utr   => fin ;
-      ASg Neutr => fin + "t" ;
-      APl       => fin + "a" ;
-      }
-
-

-A constructor can be used as a pattern that has patterns as arguments. For instance, -the adjectival paradigm in which the two singular forms are the same, -can be defined -

-
-    oper plattAdj : Str -> AdjForm => Str = \platt -> table {
-      ASg _ => platt ;
-      APl   => platt + "a" ;
-      }
-
-

- -

Morphological analysis and morphology quiz

-

-Even though morphology is in GF -mostly used as an auxiliary for syntax, it -can also be useful on its own right. The command morpho_analyse = ma -can be used to read a text and return for each word the analyses that -it has in the current concrete syntax. -

-
-    > rf bible.txt | morpho_analyse
-
-

-In the same way as translation exercises, morphological exercises can -be generated, by the command morpho_quiz = mq. Usually, -the category is set to be something else than S. For instance, -

-
-    > cd GF/lib/resource-1.0/
-    > i french/IrregFre.gf
-    > morpho_quiz -cat=V
-  
-    Welcome to GF Morphology Quiz.
-    ...
-  
-    réapparaître : VFin VCondit  Pl  P2
-    réapparaitriez
-    > No, not réapparaitriez, but
-    réapparaîtriez
-    Score 0/1
-
-

-Finally, a list of morphological exercises can be generated -off-line and saved in a -file for later use, by the command morpho_list = ml -

-
-    > morpho_list -number=25 -cat=V | wf exx.txt
-
-

-The number flag gives the number of exercises generated. -

- -

Discontinuous constituents

-

-A linearization type may contain more strings than one. -An example of where this is useful are English particle -verbs, such as switch off. The linearization of -a sentence may place the object between the verb and the particle: -he switched it off. -

-

-The following judgement defines transitive verbs as -discontinuous constituents, i.e. as having a linearization -type with two strings and not just one. -

-
-    lincat TV = {s : Number => Str ; part : Str} ;
-
-

-This linearization rule -shows how the constituents are separated by the object in complementization. -

-
-    lin PredTV tv obj = {s = \\n => tv.s ! n ++ obj.s ++ tv.part} ;
-
-

-There is no restriction in the number of discontinuous constituents -(or other fields) a lincat may contain. The only condition is that -the fields must be of finite types, i.e. built from records, tables, -parameters, and Str, and not functions. -

-

-A mathematical result -about parsing in GF says that the worst-case complexity of parsing -increases with the number of discontinuous constituents. This is -potentially a reason to avoid discontinuous constituents. -Moreover, the parsing and linearization commands only give accurate -results for categories whose linearization type has a unique Str -valued field labelled s. Therefore, discontinuous constituents -are not a good idea in top-level categories accessed by the users -of a grammar application. -

- -

Free variation

-

-Sometimes there are many alternative ways to define a concrete syntax. -For instance, the verb negation in English can be expressed both by -does not and doesn't. In linguistic terms, these expressions -are in free variation. The variants construct of GF can -be used to give a list of strings in free variation. For example, -

-
-    NegVerb verb = {s = variants {["does not"] ; "doesn't} ++ verb.s ! Pl} ;
-
-

-An empty variant list -

-
-    variants {}
-
-

-can be used e.g. if a word lacks a certain form. -

-

-In general, variants should be used cautiously. It is not -recommended for modules aimed to be libraries, because the -user of the library has no way to choose among the variants. -

- -

Overloading of operations

-

-Large libraries, such as the GF Resource Grammar Library, may define -hundreds of names, which can be unpractical -for both the library writer and the user. The writer has to invent longer -and longer names which are not always intuitive, -and the user has to learn or at least be able to find all these names. -A solution to this problem, adopted by languages such as C++, is overloading: -the same name can be used for several functions. When such a name is used, the -compiler performs overload resolution to find out which of the possible functions -is meant. The resolution is based on the types of the functions: all functions that -have the same name must have different types. -

-

-In C++, functions with the same name can be scattered everywhere in the program. -In GF, they must be grouped together in overload groups. Here is an example -of an overload group, defining four ways to define nouns in Italian: -

-
-    oper mkN = overload {
-      mkN : Str -> N                  = -- regular nouns
-      mkN : Str -> Gender -> N        = -- regular nouns with unexpected gender
-      mkN : Str -> Str -> N           = -- irregular nouns
-      mkN : Str -> Str -> Gender -> N = -- irregular nouns with unexpected gender
-    }
-
-

-All of the following uses of mkN are easy to resolve: -

-
-    lin Pizza = mkN "pizza" ;         -- Str -> N
-    lin Hand  = mkN "mano" Fem ;      -- Str -> Gender -> N
-    lin Man   = mkN "uomo" "uomini" ; -- Str -> Str -> N
-
-

- -

More constructs for concrete syntax

-

-In this chapter, we go through constructs that are not necessary in simple grammars -or when the concrete syntax relies on libraries. But they are useful when -writing advanced concrete syntax implementations, such as resource grammar libraries. -This chapter can safely be skipped if the reader prefers to continue to the -chapter on using libraries. -

- -

Local definitions

-

-Local definitions ("let expressions") are used in functional -programming for two reasons: to structure the code into smaller -expressions, and to avoid repeated computation of one and -the same expression. Here is an example, from -MorphoIta: -

-
-    oper regNoun : Str -> Noun = \vino -> 
-          let 
-            vin = init vino ;
-            o   = last vino
-          in
-          case o of {
-            "a"       => mkNoun Fem  vino (vin + "e") ;
-            "o" | "e" => mkNoun Masc vino (vin + "i") ;
-            _         => mkNoun Masc vino vino         
-            } ;
-
-

- -

Record extension and subtyping

-

-Record types and records can be extended with new fields. For instance, -in German it is natural to see transitive verbs as verbs with a case. -The symbol ** is used for both constructs. -

-
-    lincat TV = Verb ** {c : Case} ;
-  
-    lin Follow = regVerb "folgen" ** {c = Dative} ; 
-
-

-To extend a record type or a record with a field whose label it -already has is a type error. -

-

-A record type T is a subtype of another one R, if T has -all the fields of R and possibly other fields. For instance, -an extension of a record type is always a subtype of it. -

-

-If T is a subtype of R, an object of T can be used whenever -an object of R is required. For instance, a transitive verb can -be used whenever a verb is required. -

-

-Contravariance means that a function taking an R as argument -can also be applied to any object of a subtype T. -

- -

Tuples and product types

-

-Product types and tuples are syntactic sugar for record types and records: -

-
-    T1 * ... * Tn   ===   {p1 : T1 ; ... ; pn : Tn}
-    <t1, ...,  tn>  ===   {p1 = T1 ; ... ; pn = Tn}
-
-

-Thus the labels p1, p2,... are hard-coded. -

- -

Record and tuple patterns

-

-Record types of parameter types are also parameter types. -A typical example is a record of agreement features, e.g. French -

-
-    oper Agr : PType = {g : Gender ; n : Number ; p : Person} ;
-
-

-Notice the term PType rather than just Type referring to -parameter types. Every PType is also a Type, but not vice-versa. -

-

-Pattern matching is done in the expected way, but it can moreover -utilize partial records: the branch -

-
-    {g = Fem} => t
-
-

-in a table of type Agr => T means the same as -

-
-    {g = Fem ; n = _ ; p = _} => t
-
-

-Tuple patterns are translated to record patterns in the -same way as tuples to records; partial patterns make it -possible to write, slightly surprisingly, -

-
-    case <g,n,p> of {
-      <Fem> => t
-      ...
-      }
-
-

- -

Regular expression patterns

-

-To define string operations computed at compile time, such -as in morphology, it is handy to use regular expression patterns: -

-
    -
  • p + q : token consisting of p followed by q -
  • p * : token p repeated 0 or more times - (max the length of the string to be matched) -
  • - p : matches anything that p does not match -
  • x @ p : bind to x what p matches -
  • p | q : matches what either p or q matches -
- -

-The last three apply to all types of patterns, the first two only to token strings. -As an example, we give a rule for the formation of English word forms -ending with an s and used in the formation of both plural nouns and -third-person present-tense verbs. -

-
-    add_s : Str -> Str = \w -> case w of {
-      _ + "oo"                           => w + "s" ;   -- bamboo
-      _ + ("s" | "z" | "x" | "sh" | "o") => w + "es" ;  -- bus, hero
-      _ + ("a" | "o" | "u" | "e") + "y"  => w + "s" ;   -- boy
-      x + "y"                            => x + "ies" ; -- fly
-      _                                  => w + "s"     -- car
-      } ;
-
-

-Here is another example, the plural formation in Swedish 2nd declension. -The second branch uses a variable binding with @ to cover the cases where an -unstressed pre-final vowel e disappears in the plural -(nyckel-nycklar, seger-segrar, bil-bilar): -

-
-    plural2 : Str -> Str = \w -> case w of {
-      pojk + "e"                       => pojk + "ar" ;
-      nyck + "e" + l@("l" | "r" | "n") => nyck + l + "ar" ;
-      bil                              => bil + "ar"
-      } ;
-
-

-

-Semantics: variables are always bound to the first match, which is the first -in the sequence of binding lists Match p v defined as follows. In the definition, -p is a pattern and v is a value. The semantics is given in Haskell notation. -

-
-    Match (p1|p2) v = Match p1 ++ U Match p2 v
-    Match (p1+p2) s = [Match p1 s1 ++ Match p2 s2 | 
-                         i <- [0..length s], (s1,s2) = splitAt i s]
-    Match p*      s = [[]] if Match "" s ++ Match p s ++ Match (p+p) s ++... /= []
-    Match -p      v = [[]] if Match p v = []
-    Match c       v = [[]] if c == v  -- for constant and literal patterns c
-    Match x       v = [[(x,v)]]       -- for variable patterns x
-    Match x@p     v = [[(x,v)]] + M   if M = Match p v /= []
-    Match p       v = [] otherwise    -- failure
-
-

-Examples: -

-
    -
  • x + "e" + y matches "peter" with x = "p", y = "ter" -
  • x + "er"* matches "burgerer" with ``x = "burg" -
- -

-Exercise. Implement the German Umlaut operation on word stems. -The operation changes the vowel of the stressed stem syllable as follows: -a to ä, au to äu, o to ö, and u to ü. You -can assume that the operation only takes syllables as arguments. Test the -operation to see whether it correctly changes Arzt to Ärzt, -Baum to Bäum, Topf to Töpf, and Kuh to Küh. -

- -

Prefix-dependent choices

-

-Sometimes a token has different forms depending on the token -that follows. An example is the English indefinite article, -which is an if a vowel follows, a otherwise. -Which form is chosen can only be decided at run time, i.e. -when a string is actually build. GF has a special construct for -such tokens, the pre construct exemplified in -

-
-    oper artIndef : Str = 
-      pre {"a" ; "an" / strs {"a" ; "e" ; "i" ; "o"}} ;
-
-

-Thus -

-
-    artIndef ++ "cheese"  --->  "a" ++ "cheese"
-    artIndef ++ "apple"   --->  "an" ++ "apple"
-
-

-This very example does not work in all situations: the prefix -u has no general rules, and some problematic words are -euphemism, one-eyed, n-gram. It is possible to write -

-
-    oper artIndef : Str = 
-      pre {"a" ; 
-           "a"  / strs {"eu" ; "one"} ;
-           "an" / strs {"a" ; "e" ; "i" ; "o" ; "n-"}
-          } ;
-
-

- -

Predefined types

-

-GF has the following predefined categories in abstract syntax: -

-
-    cat Int ;     -- integers, e.g. 0, 5, 743145151019
-    cat Float ;   -- floats,   e.g. 0.0, 3.1415926
-    cat String ;  -- strings,  e.g. "", "foo", "123"
-
-

-The objects of each of these categories are literals -as indicated in the comments above. No fun definition -can have a predefined category as its value type, but -they can be used as arguments. For example: -

-
-    fun StreetAddress : Int -> String -> Address ;
-    lin StreetAddress number street = {s = number.s ++ street.s} ;
-  
-    -- e.g. (StreetAddress 10 "Downing Street") : Address
-
-

-FIXME: The linearization type is {s : Str} for all these categories. -

- -

Using the resource grammar library

-

-In this chapter, we will take a look at the GF resource grammar library. -We will use the library to implement a slightly extended Food grammar -and port it to some new languages. -

- -

The coverage of the library

-

-The GF Resource Grammar Library contains grammar rules for -10 languages (in addition, 2 languages are available as incomplete -implementations, and a few more are under construction). Its purpose -is to make these rules available for application programmers, -who can thereby concentrate on the semantic and stylistic -aspects of their grammars, without having to think about -grammaticality. The targeted level of application grammarians -is that of a skilled programmer with -a practical knowledge of the target languages, but without -theoretical knowledge about their grammars. -Such a combination of -skills is typical of programmers who, for instance, want to localize -software to new languages. -

-

-The current resource languages are -

-
    -
  • Arabic (incomplete) -
  • Catalan (incomplete) -
  • Danish -
  • English -
  • Finnish -
  • French -
  • German -
  • Italian -
  • Norwegian -
  • Russian -
  • Spanish -
  • Swedish -
- -

-The first three letters (Eng etc) are used in grammar module names. -The incomplete Arabic and Catalan implementations are -enough to be used in many applications; they both contain, amoung other -things, complete inflectional morphology. -

- -

The resource API

-

-The resource library API is devided into language-specific -and language-independent parts. To put it roughly, -

-
    -
  • the syntax API is language-independent, i.e. has the same types and functions for all - languages. - Its name is SyntaxL for each language L -
  • the morphology API is language-specific, i.e. has partly different types and functions - for different languages. - Its name is ParadigmsL for each language L -
- -

-A full documentation of the API is available on-line in the -resource synopsis. For our -examples, we will only need a fragment of the full API. -

-

-In the first examples, -we will make use of the following categories, from the module Syntax. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CategoryExplanationExample
Uttsentence, question, word..."be quiet"
Advverb-phrase-modifying adverb,"in the house"
AdAadjective-modifying adverb,"very"
Sdeclarative sentence"she lived here"
Cldeclarative clause, with all tenses"she looks at this"
APadjectival phrase"very warm"
CNcommon noun (without determiner)"red house"
NPnoun phrase (subject or object)"the red house"
Detdeterminer phrase"those seven"
Predetpredeterminer"only"
Quantquantifier with both sg and pl"this/these"
Preppreposition, or just case"in"
Aone-place adjective"warm"
Ncommon noun"house"
- -

-

-We will need the following syntax rules from Syntax. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionTypeExample
mkUttS -> UttJohn walked
mkUttCl -> UttJohn walks
mkClNP -> AP -> ClJohn is very old
mkNPDet -> CN -> NPthe first old man
mkNPPredet -> NP -> NPonly John
mkDetQuant -> Detthis
mkCNN -> CNhouse
mkCNAP -> CN -> CNvery big blue house
mkAPA -> APold
mkAPAdA -> AP -> APvery very old
- -

-

-We will also need the following structural words from Syntax. -

- - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionTypeExample
all_PredetPredetall
defPlDetDetthe (houses)
this_QuantQuantthis
very_AdAAdAvery
- -

-

-For French, we will use the following part of ParadigmsFre. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionTypeExample
GenderType-
masculineGender-
feminineGender-
mkN(cheval : Str) -> N-
mkN(foie : Str) -> Gender -> N-
mkA(cher : Str) -> A-
mkA(sec,seche : Str) -> A-
- -

-

-For German, we will use the following part of ParadigmsGer. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FunctionTypeExample
GenderType-
masculineGender-
feminineGender-
neuterGender-
mkN(Stufe : Str) -> N-
mkN(Bild,Bilder : Str) -> Gender -> N-
mkAStr -> A-
mkA(gut,besser,beste : Str) -> Agut,besser,beste
- -

-

-Exercise. Try out the morphological paradigms in different languages. Do -in this way: -

-
-    > i -path=alltenses:prelude -retain alltenses/ParadigmsGer.gfr
-    > cc mkN "Farbe"
-    > cc mkA "gut" "besser" "beste"
-
-

- -

Example: French

-

-We start with an abstract syntax that is like Food before, but -has a plural determiner (all wines) and some new nouns that will -need different genders in most languages. -

-
-    abstract Food = {
-    cat
-      S ; Item ; Kind ; Quality ;
-    fun
-      Is : Item -> Quality -> S ;
-      This, All : Kind -> Item ;
-      QKind : Quality -> Kind -> Kind ;
-      Wine, Cheese, Fish, Beer, Pizza : Kind ;
-      Very : Quality -> Quality ;
-      Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ;
-    }
-
-

-The French implementation opens SyntaxFre and ParadigmsFre -to get access to the resource libraries needed. In order to find -the libraries, a path directive is prepended; it is interpreted -relative to the environment variable GF_LIB_PATH. -

-
-    --# -path=.:present:prelude
-  
-    concrete FoodFre of Food = open SyntaxFre,ParadigmsFre in {
-    lincat
-      S = Utt ; 
-      Item = NP ;
-      Kind = CN ;
-      Quality = AP ;
-    lin
-      Is item quality = mkUtt (mkCl item quality) ;
-      This kind = mkNP (mkDet this_Quant) kind ;
-      All kind = mkNP all_Predet (mkNP defPlDet kind) ;
-      QKind quality kind = mkCN quality kind ;
-      Wine = mkCN (mkN "vin") ;
-      Beer = mkCN (mkN "bière") ;
-      Pizza = mkCN (mkN "pizza" feminine) ;
-      Cheese = mkCN (mkN "fromage" masculine) ;
-      Fish = mkCN (mkN "poisson") ;
-      Very quality = mkAP very_AdA quality ;
-      Fresh = mkAP (mkA "frais" "fraîche") ;
-      Warm = mkAP (mkA "chaud") ;
-      Italian = mkAP (mkA "italien") ;
-      Expensive = mkAP (mkA "cher") ;
-      Delicious = mkAP (mkA "délicieux") ;
-      Boring = mkAP (mkA "ennuyeux") ;
-    }
-
-

-The lincat definitions in FoodFre assign resource categories -to application categories. In a sense, the application categories -are semantic, as they correspond to concepts in the grammar application, -whereas the resource categories are syntactic: they give the linguistic -means to express concepts in any application. -

-

-The lin definitions likewise assign resource functions to application -functions. Under the hood, there is a lot of matching with parameters to -take care of word order, inflection, and agreement. But the user of the -library sees nothing of this: the only parameters you need to give are -the genders of some nouns, which cannot be correctly inferred from the word. -

-

-In French, for example, the one-argument mkN assigns the noun the feminine -gender if and only if it ends with an e. Therefore the words fromage and -pizza are given genders. One can of course always give genders manually, to -be on the safe side. -

-

-As for inflection, the one-argument adjective pattern mkA takes care of -completely regular adjective such as chaud-chaude, but also of special -cases such as italien-italienne, cher-chère, and délicieux-délicieuse. -But it cannot form frais-fraîche properly. Once again, you can give more -forms to be on the safe side. You can also test the paradigms in the GF -program. -

-

-Exercise. Compile the grammar FoodFre and generate and parse some sentences. -

-

-Exercise. Write a concrete syntax of Food for English or some other language -included in the resource library. You can also compare the output with the hand-written -grammars presented earlier in this tutorial. -

-

-Exercise. In particular, try to write a concrete syntax for Italian, even if -you don't know Italian. What you need to know is that "beer" is birra and -"pizza" is pizza, and that all the nouns and adjectives in the grammar -are regular. -

- -

Functor implementation of multilingual grammars

-

-If you did the exercise of writing a concrete syntax of Food for some other -language, you probably noticed that much of the code looks exactly the same -as for French. The immediate reason for this is that the Syntax API is the -same for all languages; the deeper reason is that all languages (at least those -in the resource package) implement the same syntactic structures and tend to use them -in similar ways. Thus it is only the lexical parts of a concrete syntax that -you need to write anew for a new language. In brief, -

-
    -
  • first copy the concrete syntax for one language -
  • then change the words (the strings and perhaps some paradigms) -
- -

-But programming by copy-and-paste is not worthy of a functional programmer. -Can we write a function that takes care of the shared parts of grammar modules? -Yes, we can. It is not a function in the fun or oper sense, but -a function operating on modules, called a functor. This construct -is familiar from the functional languages ML and OCaml, but it does not -exist in Haskell. It also bears some resemblance to templates in C++. -Functors are also known as parametrized modules. -

-

-In GF, a functor is a module that opens one or more interfaces. -An interface is a module similar to a resource, but it only -contains the types of opers, not their definitions. You can think -of an interface as a kind of a record type. Thus a functor is a kind -of a function taking records as arguments and producins a module -as value. -

-

-Let us look at a functor implementation of the Food grammar. -Consider its module header first: -

-
-    incomplete concrete FoodI of Food = open Syntax, LexFood in
-
-

-In the functor-function analogy, FoodI would be presented as a function -with the following type signature: -

-
-    FoodI : instance of Syntax -> instance of LexFood -> concrete of Food
-
-

-It takes as arguments two interfaces: -

-
    -
  • Syntax, the resource grammar interface -
  • LexFood, the domain-specific lexicon interface -
- -

-Functors opening Syntax and a domain lexicon interface are in fact -so typical in GF applications, that this structure could be called a design patter -for GF grammars. The idea in this pattern is, again, that -the languages use the same syntactic structures but different words. -

-

-Before going to the details of the module bodies, let us look at how functors -are concretely used. An interface has a header such as -

-
-    interface LexFood = open Syntax in
-
-

-To give an instance of it means that all opers are given definitione (of -appropriate types). For example, -

-
-    instance LexFoodGer of LexFood = open SyntaxGer, ParadigmsGer in
-
-

-Notice that when an interface opens an interface, such as Syntax, then its instance -opens an instance of it. But the instance may also open some resources - typically, -a domain lexicon instance opens a Paradigms module. -

-

-In the function-functor analogy, we now have -

-
-    SyntaxGer  : instance of Syntax
-    LexFoodGer : instance of LexFood  
-
-

-Thus we can complete the German implementation by "applying" the functor: -

-
-    FoodI SyntaxGer LexFoodGer : concrete of Food
-
-

-The GF syntax for doing so is -

-
-    concrete FoodGer of Food = FoodI with 
-      (Syntax = SyntaxGer),
-      (LexFood = LexFoodGer) ;
-
-

-Notice that this is the complete module, not just a header of it. -The module body is received from FoodI, by instantiating the -interface constants with their definitions given in the German -instances. -

-

-A module of this form, characterized by the keyword with, is -called a functor instantiation. -

-

-Here is the complete code for the functor FoodI: -

-
-    incomplete concrete FoodI of Food = open Syntax, LexFood in {
-    lincat
-      S = Utt ; 
-      Item = NP ;
-      Kind = CN ;
-      Quality = AP ;
-    lin
-      Is item quality = mkUtt (mkCl item quality) ;
-      This kind = mkNP (mkDet this_Quant) kind ;
-      All kind = mkNP all_Predet (mkNP defPlDet kind) ;
-      QKind quality kind = mkCN quality kind ;
-      Wine = mkCN wine_N ;
-      Beer = mkCN beer_N ;
-      Pizza = mkCN pizza_N ;
-      Cheese = mkCN cheese_N ;
-      Fish = mkCN fish_N ;
-      Very quality = mkAP very_AdA quality ;
-      Fresh = mkAP fresh_A ;
-      Warm = mkAP warm_A ;
-      Italian = mkAP italian_A ;
-      Expensive = mkAP expensive_A ;
-      Delicious = mkAP delicious_A ;
-      Boring = mkAP boring_A ;
-  }
-
-

- -

Interfaces and instances

-

-Let us now define the LexFood interface: -

-
-    interface LexFood = open Syntax in {
-    oper
-      wine_N : N ;
-      beer_N : N ;
-      pizza_N : N ;
-      cheese_N : N ;
-      fish_N : N ;
-      fresh_A : A ;
-      warm_A : A ;
-      italian_A : A ;
-      expensive_A : A ;
-      delicious_A : A ;
-      boring_A : A ;
-  }
-
-

-In this interface, only lexical items are declared. In general, an -interface can declare any functions and also types. The Syntax -interface does so. -

-

-Here is the German instance of the interface: -

-
-    instance LexFoodGer of LexFood = open SyntaxGer, ParadigmsGer in {
-    oper
-      wine_N = mkN "Wein" ;
-      beer_N = mkN "Bier" "Biere" neuter ;
-      pizza_N = mkN "Pizza" "Pizzen" feminine ;
-      cheese_N = mkN "Käse" "Käsen" masculine ;
-      fish_N = mkN "Fisch" ;
-      fresh_A = mkA "frisch" ;
-      warm_A = mkA "warm" "wärmer" "wärmste" ;
-      italian_A = mkA "italienisch" ;
-      expensive_A = mkA "teuer" ;
-      delicious_A = mkA "köstlich" ;
-      boring_A = mkA "langweilig" ;
-    }
-
-

-Just to complete the picture, we repeat the German functor instantiation -for FoodI, this time with a path directive that makes it compilable. -

-
-    --# -path=.:present:prelude
-  
-    concrete FoodGer of Food = FoodI with 
-      (Syntax = SyntaxGer),
-      (LexFood = LexFoodGer) ;
-
-

-

-Exercise. Compile and test FoodGer. -

-

-Exercise. Refactor FoodFre into a functor instantiation. -

- -

Adding languages to a functor implementation

-

-Once we have an application grammar defined by using a functor, -adding a new language is simple. Just two modules need to be written: -

-
    -
  • a domain lexicon instance -
  • a functor instantiation -
- -

-The functor instantiation is completely mechanical to write. -Here is one for Finnish: -

-
-  --# -path=.:present:prelude
-  
-  concrete FoodFin of Food = FoodI with 
-    (Syntax = SyntaxFin),
-    (LexFood = LexFoodFin) ;
-
-

-The domain lexicon instance requires some knowledge of the words of the -language: what words are used for which concepts, how the words are -inflected, plus features such as genders. Here is a lexicon instance for -Finnish: -

-
-    instance LexFoodFin of LexFood = open SyntaxFin, ParadigmsFin in {
-    oper
-      wine_N = mkN "viini" ;
-      beer_N = mkN "olut" ;
-      pizza_N = mkN "pizza" ;
-      cheese_N = mkN "juusto" ;
-      fish_N = mkN "kala" ;
-      fresh_A = mkA "tuore" ;
-      warm_A = mkA "lämmin" ;
-      italian_A = mkA "italialainen" ;
-      expensive_A = mkA "kallis" ;
-      delicious_A = mkA "herkullinen" ;
-      boring_A = mkA "tylsä" ;
-    }
-
-

-

-Exercise. Instantiate the functor FoodI to some language of -your choice. -

- -

Division of labour revisited

-

-One purpose with the resource grammars was stated to be a division -of labour between linguists and application grammarians. We can now -reflect on what this means more precisely, by asking ourselves what -skills are required of grammarians working on different components. -

-

-Building a GF application starts from the abstract syntax. Writing -an abstract syntax requires -

-
    -
  • understanding the semantic structure of the application domain -
  • knowledge of the GF fragment with categories and functions -
- -

-If the concrete syntax is written by means of a functor, the programmer -has to decide what parts of the implementation are put to the interface -and what parts are shared in the functor. This requires -

-
    -
  • knowing how the domain concepts are expressed in natural language -
  • knowledge of the resource grammar library - the categories and combinators -
  • understanding what parts are likely to be expressed in language-dependent - ways, so that they must belong to the interface and not the functor -
  • knowledge of the GF fragment with function applications and strings -
- -

-Instantiating a ready-made functor to a new language is less demanding. -It requires essentially -

-
    -
  • knowing how the domain words are expressed in the language -
  • knowing, roughly, how these words are inflected -
  • knowledge of the paradigms available in the library -
  • knowledge of the GF fragment with function applications and strings -
- -

-Notice that none of these tasks requires the use of GF records, tables, -or parameters. Thus only a small fragment of GF is needed; the rest of -GF is only relevant for those who write the libraries. -

-

-Of course, grammar writing is not always straightforward usage of libraries. -For example, GF can be used for other languages than just those in the -libraries - for both natural and formal languages. A knowledge of records -and tables can, unfortunately, also be needed for understanding GF's error -messages. -

-

-Exercise. Design a small grammar that can be used for controlling -an MP3 player. The grammar should be able to recognize commands such -as play this song, with the following variations: -

-
    -
  • verbs: play, remove -
  • objects: song, artist -
  • determiners: this, the previous -
  • verbs without arguments: stop, pause -
- -

-The implementation goes in the following phases: -

-
    -
  1. abstract syntax -
  2. functor and lexicon interface -
  3. lexicon instance for the first language -
  4. functor instantiation for the first language -
  5. lexicon instance for the second language -
  6. functor instantiation for the second language -
  7. ... -
- - -

Restricted inheritance

-

-A functor implementation using the resource Syntax interface -works as long as all concepts are expressed by using the same structures -in all languages. If this is not the case, the deviant linearization can -be made into a parameter and moved to the domain lexicon interface. -

-

-Let us take a slightly contrived example: assume that English has -no word for Pizza, but has to use the paraphrase Italian pie. -This paraphrase is no longer a noun N, but a complex phrase -in the category CN. An obvious way to solve this problem is -to change interface LexEng so that the constant declared for -Pizza gets a new type: -

-
-    oper pizza_CN : CN ;
-
-

-But this solution is unstable: we may end up changing the interface -and the function with each new language, and we must every time also -change the interface instances for the old languages to maintain -type correctness. -

-

-A better solution is to use restricted inheritance: the English -instantiation inherits the functor implementation except for the -constant Pizza. This is how we write: -

-
-    --# -path=.:present:prelude
-  
-    concrete FoodEng of Food = FoodI - [Pizza] with 
-      (Syntax = SyntaxEng),
-      (LexFood = LexFoodEng) ** 
-        open SyntaxEng, ParadigmsEng in {
-  
-      lin Pizza = mkCN (mkA "Italian") (mkN "pie") ;
-    }
-
-

-Restricted inheritance is available for all inherited modules. One can for -instance exclude some mushrooms and pick up just some fruit in -the FoodMarket example: -

-
-    abstract Foodmarket = Food, Fruit [Peach], Mushroom - [Agaric]
-
-

-A concrete syntax of Foodmarket must then indicate the same inheritance -restrictions. -

-

-Exercise. Change FoodGer in such a way that it says, instead of -X is Y, the equivalent of X must be Y (X muss Y sein). -You will have to browse the full resource API to find all -the functions needed. -

- -

Browsing the resource with GF commands

-

-In addition to reading the -resource synopsis, you -can find resource function combinations by using the parser. This -is so because the resource library is in the end implemented as -a top-level abstract-concrete grammar, on which parsing -and linearization work. -

-

-Unfortunately, only English and the Scandinavian languages can be -parsed within acceptable computer resource limits when the full -resource is used. -

-

-To look for a syntax tree in the overload API by parsing, do like this: -

-
-    > $GF_LIB_PATH
-    > i -path=alltenses:prelude alltenses/OverLangEng.gfc
-    > p -cat=S -overload "this grammar is too big"
-    mkS (mkCl (mkNP (mkDet this_Quant) grammar_N) (mkAP too_AdA big_A))
-
-

-To view linearizations in all languages by parsing from English: -

-
-    > i alltenses/langs.gfcm
-    > p -cat=S -lang=LangEng "this grammar is too big" | tb
-    UseCl TPres ASimul PPos (PredVP (DetCN (DetSg (SgQuant this_Quant) 
-      NoOrd) (UseN grammar_N)) (UseComp (CompAP (AdAP too_AdA (PositA big_A)))))
-    Den här grammatiken är för stor
-    Esta gramática es demasiado grande
-    (Cyrillic: eta grammatika govorit des'at' jazykov)
-    Denne grammatikken er for stor
-    Questa grammatica è troppo grande
-    Diese Grammatik ist zu groß
-    Cette grammaire est trop grande
-    Tämä kielioppi on liian suuri
-    This grammar is too big
-    Denne grammatik er for stor
-
-

-Unfortunately, the Russian grammar uses at the moment a different -character encoding than the rest and is therefore not displayed correctly -in a terminal window. However, the GF syntax editor does display all -examples correctly: -

-
-    % gfeditor alltenses/langs.gfcm
-
-

-When you have constructed the tree, you will see the following screen: -

-

-

-

-

- -

-

-

-

-

-Exercise. Find the resource grammar translations for the following -English phrases (parse in the category Phr). You can first try to -build the terms manually. -

-

-every man loves a woman -

-

-this grammar speaks more than ten languages -

-

-which languages aren't in the grammar -

-

-which languages did you want to speak -

- -

More concepts of abstract syntax

- -

GF as a logical framework

-

-In this section, we will show how -to encode advanced semantic concepts in an abstract syntax. -We use concepts inherited from type theory. Type theory -is the basis of many systems known as logical frameworks, which are -used for representing mathematical theorems and their proofs on a computer. -In fact, GF has a logical framework as its proper part: -this part is the abstract syntax. -

-

-In a logical framework, the formalization of a mathematical theory -is a set of type and function declarations. The following is an example -of such a theory, represented as an abstract module in GF. -

-
-  abstract Arithm = {
-    cat
-      Prop ;                        -- proposition
-      Nat ;                         -- natural number
-    fun
-      Zero : Nat ;                  -- 0
-      Succ : Nat -> Nat ;           -- successor of x
-      Even : Nat -> Prop ;          -- x is even
-      And  : Prop -> Prop -> Prop ; -- A and B
-      } 
-
-

-

-Exercise. Give a concrete syntax of Arithm, either from scatch or -by using the resource library. -

- -

Dependent types

-

-Dependent types are a characteristic feature of GF, -inherited from the constructive type theory of Martin-Löf and -distinguishing GF from most other grammar formalisms and -functional programming languages. -

-

-Dependent types can be used for stating stronger -conditions of well-formedness than ordinary types. -A simple example is a "smart house" system, which -defines voice commands for household appliances. This example -is borrowed from the -Regulus Book -(Rayner & al. 2006). -

-

-One who enters a smart house can use speech to dim lights, switch -on the fan, etc. For each Kind of a device, there is a set of -Actions that can be performed on it; thus one can dim the lights but - not the fan, for example. These dependencies can be expressed by -by making the type Action dependent on Kind. We express this -as follows in cat declarations: -

-
-    cat
-      Command ;
-      Kind ; 
-      Action Kind ; 
-      Device Kind ; 
-
-

-The crucial use of the dependencies is made in the rule for forming commands: -

-
-    fun CAction : (k : Kind) -> Action k -> Device k -> Command ;
-
-

-In other words: an action and a device can be combined into a command only -if they are of the same Kind k. If we have the functions -

-
-    DKindOne  : (k : Kind) -> Device k ;  -- the light
-  
-    light, fan : Kind ;
-    dim : Action light ;
-
-

-we can form the syntax tree -

-
-    CAction light dim (DKindOne light)
-
-

-but we cannot form the trees -

-
-    CAction light dim (DKindOne fan)
-    CAction fan   dim (DKindOne light)
-    CAction fan   dim (DKindOne fan)
-
-

-Linearization rules are written as usual: the concrete syntax does not -know if a category is a dependent type. In English, you can write as follows: -

-
-    lincat Action = {s : Str} ;
-    lin CAction kind act dev = {s = act.s ++ dev.s} ; 
-
-

-Notice that the argument kind does not appear in the linearization. -The type checker will be able to reconstruct it from the dev argument. -

-

-Parsing with dependent types is performed in two phases: -

-
    -
  1. context-free parsing -
  2. filtering through type checker -
- -

-If you just parse in the usual way, you don't enter the second phase, and -the kind argument is not found: -

-
-    > parse "dim the light"
-    CAction ? dim (DKindOne light)
-
-

-Moreover, type-incorrect commands are not rejected: -

-
-    > parse "dim the fan"
-    CAction ? dim (DKindOne fan)
-
-

-The question mark ? is a metavariable, and is returned by the parser -for any subtree that is suppressed by a linearization rule. -

-

-To get rid of metavariables, you must feed the parse result into the -second phase of solving them. The solve process uses the dependent -type checker to restore the values of the metavariables. It is invoked by -the command put_tree = pt with the flag -transform=solve: -

-
-    > parse "dim the light" | put_tree -transform=solve
-    CAction light dim (DKindOne light)
-
-

-The solve process may fail, in which case no tree is returned: -

-
-    > parse "dim the fan" | put_tree -transform=solve
-    no tree found
-
-

-

-Exercise. Write an abstract syntax module with above contents -and an appropriate English concrete syntax. Try to parse the commands -dim the light and dim the fan, with and without solve filtering. -

-

-Exercise. Perform random and exhaustive generation, with and without -solve filtering. -

-

-Exercise. Add some device kinds and actions to the grammar. -

- -

Polymorphism

-

-Sometimes an action can be performed on all kinds of devices. It would be -possible to introduce separate fun constants for each kind-action pair, -but this would be tedious. Instead, one can use polymorphic actions, -i.e. actions that take a Kind as an argument and produce an Action -for that Kind: -

-
-    fun switchOn, switchOff : (k : Kind) -> Action k ;
-
-

-Functions that are not polymorphic are monomorphic. However, the -dichotomy into monomorphism and full polymorphism is not always sufficien -for good semantic modelling: very typically, some actions are defined -for a proper subset of devices, but not just one. For instance, both doors and -windows can be opened, whereas lights cannot. -We will return to this problem by introducing the -concept of restricted polymorphism later, -after a chapter on proof objects. -

- -

Dependent types and spoken language models

-

-We have used dependent types to control semantic well-formedness -in grammars. This is important in traditional type theory -applications such as proof assistants, where only mathematically -meaningful formulas should be constructed. But semantic filtering has -also proved important in speech recognition, because it reduces the -ambiguity of the results. -

- -

Grammar-based language models

-

-The standard way of using GF in speech recognition is by building -grammar-based language models. To this end, GF comes with compilers -into several formats that are used in speech recognition systems. -One such format is GSL, used in the Nuance speech recognizer. -It is produced from GF simply by printing a grammar with the flag --printer=gsl. -

-
-    > import -conversion=finite SmartEng.gf
-    > print_grammar -printer=gsl
-  
-    ;GSL2.0
-    ; Nuance speech recognition grammar for SmartEng
-    ; Generated by GF
-  
-    .MAIN SmartEng_2
-  
-    SmartEng_0 [("switch" "off") ("switch" "on")]
-    SmartEng_1 ["dim" ("switch" "off")
-                ("switch" "on")]
-    SmartEng_2 [(SmartEng_0 SmartEng_3)
-                (SmartEng_1 SmartEng_4)]
-    SmartEng_3 ("the" SmartEng_5)
-    SmartEng_4 ("the" SmartEng_6)
-    SmartEng_5 "fan"
-    SmartEng_6 "light"
-
-

-Now, GSL is a context-free format, so how does it cope with dependent types? -In general, dependent types can give rise to infinitely many basic types -(exercise!), whereas a context-free grammar can by definition only have -finitely many nonterminals. -

-

-This is where the flag -conversion=finite is needed in the import -command. Its effect is to convert a GF grammar with dependent types to -one without, so that each instance of a dependent type is replaced by -an atomic type. This can then be used as a nonterminal in a context-free -grammar. The finite conversion presupposes that every -dependent type has only finitely many instances, which is in fact -the case in the Smart grammar. -

-

-Exercise. If you have access to the Nuance speech recognizer, -test it with GF-generated language models for SmartEng. Do this -both with and without -conversion=finite. -

-

-Exercise. Construct an abstract syntax with infinitely many instances -of dependent types. -

- -

Statistical language models

-

-An alternative to grammar-based language models are -statistical language models (SLMs). An SLM is -built from a corpus, i.e. a set of utterances. It specifies the -probability of each n-gram, i.e. sequence of n words. The -typical value of n is 2 (bigrams) or 3 (trigrams). -

-

-One advantage of SLMs over grammar-based models is that they are -robust, i.e. they can be used to recognize sequences that would -be out of the grammar or the corpus. Another advantage is that -an SLM can be built "for free" if a corpus is available. -

-

-However, collecting a corpus can require a lot of work, and writing -a grammar can be less demanding, especially with tools such as GF or -Regulus. This advantage of grammars can be combined with robustness -by creating a back-up SLM from a synthesized corpus. This means -simply that the grammar is used for generating such a corpus. -In GF, this can be done with the generate_trees command. -As with grammar-based models, the quality of the SLM is better -if meaningless utterances are excluded from the corpus. Thus -a good way to generate an SLM from a GF grammar is by using -dependent types and filter the results through the type checker: -

-
-    > generate_trees | put_trees -transform=solve | linearize
-
-

-

-Exercise. Measure the size of the corpus generated from -SmartEng, with and without type checker filtering. -

- -

Digression: dependent types in concrete syntax

- -

Variables in function types

-

-A dependent function type needs to introduce a variable for -its argument type, as in -

-
-    switchOff : (k : Kind) -> Action k
-
-

-Function types without -variables are actually a shorthand notation: writing -

-
-    fun PredVP : NP -> VP -> S
-
-

-is shorthand for -

-
-    fun PredVP : (x : NP) -> (y : VP) -> S
-
-

-or any other naming of the variables. Actually the use of variables -sometimes shortens the code, since they can share a type: -

-
-    octuple : (x,y,z,u,v,w,s,t : Str) -> Str
-
-

-If a bound variable is not used, it can here, as elsewhere in GF, be replaced by -a wildcard: -

-
-    octuple : (_,_,_,_,_,_,_,_ : Str) -> Str
-
-

-A good practice for functions with many arguments of the same type -is to indicate the number of arguments: -

-
-    octuple : (x1,_,_,_,_,_,_,x8 : Str) -> Str
-
-

-One can also use the variables to document what each argument is expected -to provide, as is done in inflection paradigms in the resource grammar. -

-
-    mkV : (drink,drank,drunk : Str) -> V 
-
-

- -

Polymorphism in concrete syntax

-

-The functional fragment of GF -terms and types comprises function types, applications, lambda -abstracts, constants, and variables. This fragment is similar in -abstract and concrete syntax. In particular, -dependent types are also available in concrete syntax. -We have not made use of them yet, -but we will now look at one example of how they -can be used. -

-

-Those readers who are familiar with functional programming languages -like ML and Haskell, may already have missed polymorphic -functions. For instance, Haskell programmers have access to -the functions -

-
-    const :: a -> b -> a
-    const c _ = c
-  
-    flip :: (a -> b -> c) -> b -> a -> c
-    flip f y x = f x y
-
-

-which can be used for any given types a,b, and c. -

-

-The GF counterpart of polymorphic functions are monomorphic -functions with explicit type variables. Thus the above -definitions can be written -

-
-    oper const :(a,b : Type) -> a -> b -> a =
-      \_,_,c,_ -> c ;
-  
-    oper flip : (a,b,c : Type) -> (a -> b ->c) -> b -> a -> c =
-      \_,_,_,f,x,y -> f y x ;
-
-

-When the operations are used, the type checker requires -them to be equipped with all their arguments; this may be a nuisance -for a Haskell or ML programmer. -

- -

Proof objects

-

-Perhaps the most well-known idea in constructive type theory is -the Curry-Howard isomorphism, also known as the -propositions as types principle. Its earliest formulations -were attempts to give semantics to the logical systems of -propositional and predicate calculus. In this section, we will consider -a more elementary example, showing how the notion of proof is useful -outside mathematics, as well. -

-

-We first define the category of unary (also known as Peano-style) -natural numbers: -

-
-    cat Nat ; 
-    fun Zero : Nat ;
-    fun Succ : Nat -> Nat ;
-
-

-The successor function Succ generates an infinite -sequence of natural numbers, beginning from Zero. -

-

-We then define what it means for a number x to be less than -a number y. Our definition is based on two axioms: -

-
    -
  • Zero is less than Succ y for any y. -
  • If x is less than y, then Succ x is less than Succ y. -
- -

-The most straightforward way of expressing these axioms in type theory -is as typing judgements that introduce objects of a type Less x y: -

-
-    cat Less Nat Nat ; 
-    fun lessZ : (y : Nat) -> Less Zero (Succ y) ;
-    fun lessS : (x,y : Nat) -> Less x y -> Less (Succ x) (Succ y) ;
-
-

-Objects formed by lessZ and lessS are -called proof objects: they establish the truth of certain -mathematical propositions. -For instance, the fact that 2 is less that -4 has the proof object -

-
-    lessS (Succ Zero) (Succ (Succ (Succ Zero)))
-          (lessS Zero (Succ (Succ Zero)) (lessZ (Succ Zero)))
-
-

-whose type is -

-
-    Less (Succ (Succ Zero)) (Succ (Succ (Succ (Succ Zero))))
-
-

-which is the formalization of the proposition that 2 is less than 4. -

-

-GF grammars can be used to provide a semantic control of -well-formedness of expressions. We have already seen examples of this: -the grammar of well-formed actions on household devices. By introducing proof objects -we have now added a very powerful technique of expressing semantic conditions. -

-

-A simple example of the use of proof objects is the definition of -well-formed time spans: a time span is expected to be from an earlier to -a later time: -

-
-    from 3 to 8
-
-

-is thus well-formed, whereas -

-
-    from 8 to 3
-
-

-is not. The following rules for spans impose this condition -by using the Less predicate: -

-
-    cat Span ;
-    fun span : (m,n : Nat) -> Less m n -> Span ;
-
-

-

-Exercise. Write an abstract and concrete syntax with the -concepts of this section, and experiment with it in GF. -

-

-Exercise. Define the notions of "even" and "odd" in terms -of proof objects. Hint. You need one function for proving -that 0 is even, and two other functions for propagating the -properties. -

- -

Proof-carrying documents

-

-Another possible application of proof objects is proof-carrying documents: -to be semantically well-formed, the abstract syntax of a document must contain a proof -of some property, although the proof is not shown in the concrete document. -Think, for instance, of small documents describing flight connections: -

-

-To fly from Gothenburg to Prague, first take LH3043 to Frankfurt, then OK0537 to Prague. -

-

-The well-formedness of this text is partly expressible by dependent typing: -

-
-    cat
-      City ;
-      Flight City City ;
-    fun
-      Gothenburg, Frankfurt, Prague : City ;
-      LH3043 : Flight Gothenburg Frankfurt ;
-      OK0537 : Flight Frankfurt Prague ;
-
-

-This rules out texts saying take OK0537 from Gothenburg to Prague. -However, there is a -further condition saying that it must be possible to -change from LH3043 to OK0537 in Frankfurt. -This can be modelled as a proof object of a suitable type, -which is required by the constructor -that connects flights. -

-
-    cat
-      IsPossible (x,y,z : City)(Flight x y)(Flight y z) ;
-    fun
-      Connect : (x,y,z : City) -> 
-        (u : Flight x y) -> (v : Flight y z) -> 
-          IsPossible x y z u v -> Flight x z ;
-
-

- -

Restricted polymorphism

-

-In the first version of the smart house grammar Smart, -all Actions were either of -

-
    -
  • monomorphic: defined for one Kind -
  • polymorphic: defined for all Kinds -
- -

-To make this scale up for new Kinds, we can refine this to -restricted polymorphism: defined for Kinds of a certain class -

-

-The notion of class can be expressed in abstract syntax -by using the Curry-Howard isomorphism as follows: -

-
    -
  • a class is a predicate of Kinds - i.e. a type depending of Kinds -
  • a Kind is in a class if there is a proof object of this type -
- -

-Here is an example with switching and dimming. The classes are called -switchable and dimmable. -

-
-  cat
-    Switchable Kind ;
-    Dimmable   Kind ;
-  fun
-    switchable_light : Switchable light ;
-    switchable_fan   : Switchable fan ;
-    dimmable_light   : Dimmable light ;
-  
-    switchOn : (k : Kind) -> Switchable k -> Action k ;
-    dim      : (k : Kind) -> Dimmable k -> Action k ;
-
-

-One advantage of this formalization is that classes for new -actions can be added incrementally. -

-

-Exercise. Write a new version of the Smart grammar with -classes, and test it in GF. -

-

-Exercise. Add some actions, kinds, and classes to the grammar. -Try to port the grammar to a new language. You will probably find -out that restricted polymorphism works differently in different languages. -For instance, in Finnish not only doors but also TVs and radios -can be "opened", which means switching them on. -

- -

Variable bindings

-

-Mathematical notation and programming languages have -expressions that bind variables. For instance, -a universally quantifier proposition -

-
-    (All x)B(x)
-
-

-consists of the binding (All x) of the variable x, -and the body B(x), where the variable x can have -bound occurrences. -

-

-Variable bindings appear in informal mathematical language as well, for -instance, -

-
-    for all x, x is equal to x
-  
-    the function that for any numbers x and y returns the maximum of x+y
-    and x*y
-  
-    Let x be a natural number. Assume that x is even. Then x + 3 is odd.
-
-

-In type theory, variable-binding expression forms can be formalized -as functions that take functions as arguments. The universal -quantifier is defined -

-
-    fun All : (Ind -> Prop) -> Prop
-
-

-where Ind is the type of individuals and Prop, -the type of propositions. If we have, for instance, the equality predicate -

-
-    fun Eq : Ind -> Ind -> Prop
-
-

-we may form the tree -

-
-    All (\x -> Eq x x)
-
-

-which corresponds to the ordinary notation -

-
-    (All x)(x = x).
-
-

-An abstract syntax where trees have functions as arguments, as in -the two examples above, has turned out to be precisely the right -thing for the semantics and computer implementation of -variable-binding expressions. The advantage lies in the fact that -only one variable-binding expression form is needed, the lambda abstract -\x -> b, and all other bindings can be reduced to it. -This makes it easier to implement mathematical theories and reason -about them, since variable binding is tricky to implement and -to reason about. The idea of using functions as arguments of -syntactic constructors is known as higher-order abstract syntax. -

-

-The question now arises: how to define linearization rules -for variable-binding expressions? -Let us first consider universal quantification, -

-
-    fun All : (Ind -> Prop) -> Prop
-
-

-We write -

-
-    lin All B = {s = "(" ++ "All" ++ B.$0 ++ ")" ++ B.s}
-
-

-to obtain the form shown above. -This linearization rule brings in a new GF concept - the $0 -field of B containing a bound variable symbol. -The general rule is that, if an argument type of a function is -itself a function type A -> C, the linearization type of -this argument is the linearization type of C -together with a new field $0 : Str. In the linearization rule -for All, the argument B thus has the linearization -type -

-
-    {$0 : Str ; s : Str},
-
-

-since the linearization type of Prop is -

-
-    {s : Str}
-
-

-In other words, the linearization of a function -consists of a linearization of the body together with a -field for a linearization of the bound variable. -Those familiar with type theory or lambda calculus -should notice that GF requires trees to be in -eta-expanded form in order to be linearizable: -any function of type -

-
-    A -> B
-
-

-always has a syntax tree of the form -

-
-    \x -> b
-
-

-where b : B under the assumption x : A. -It is in this form that an expression can be analysed -as having a bound variable and a body. -

-

-Given the linearization rule -

-
-    lin Eq a b = {s = "(" ++ a.s ++ "=" ++ b.s ++ ")"}
-
-

-the linearization of -

-
-    \x -> Eq x x
-
-

-is the record -

-
-    {$0 = "x", s = ["( x = x )"]}
-
-

-Thus we can compute the linearization of the formula, -

-
-    All (\x -> Eq x x)  --> {s = "[( All x ) ( x = x )]"}.
-
-

-How did we get the linearization of the variable x -into the string "x"? GF grammars have no rules for -this: it is just hard-wired in GF that variable symbols are -linearized into the same strings that represent them in -the print-out of the abstract syntax. -

-

-To be able to parse variable symbols, however, GF needs to know what -to look for (instead of e.g. trying to parse any -string as a variable). What strings are parsed as variable symbols -is defined in the lexical analysis part of GF parsing -

-
-    > p -cat=Prop -lexer=codevars "(All x)(x = x)"
-    All (\x -> Eq x x)
-
-

-(see more details on lexers below). If several variables are bound in the -same argument, the labels are $0, $1, $2, etc. -

-

-Exercise. Write an abstract syntax of the whole -predicate calculus, with the -connectives "and", "or", "implies", and "not", and the -quantifiers "exists" and "for all". Use higher-order functions -to guarantee that unbounded variables do not occur. -

-

-Exercise. Write a concrete syntax for your favourite -notation of predicate calculus. Use Latex as target language -if you want nice output. You can also try producing Haskell boolean -expressions. Use as many parenthesis as you need to -guarantee non-ambiguity. -

- -

Semantic definitions

-

-We have seen that, -just like functional programming languages, GF has declarations -of functions, telling what the type of a function is. -But we have not yet shown how to compute -these functions: all we can do is provide them with arguments -and linearize the resulting terms. -Since our main interest is the well-formedness of expressions, -this has not yet bothered -us very much. As we will see, however, computation does play a role -even in the well-formedness of expressions when dependent types are -present. -

-

-GF has a form of judgement for semantic definitions, -recognized by the key word def. At its simplest, it is just -the definition of one constant, e.g. -

-
-    def one = Succ Zero ;
-
-

-We can also define a function with arguments, -

-
-    def Neg A = Impl A Abs ;
-
-

-which is still a special case of the most general notion of -definition, that of a group of pattern equations: -

-
-    def 
-      sum x Zero = x ;
-      sum x (Succ y) = Succ (Sum x y) ;
-
-

-To compute a term is, as in functional programming languages, -simply to follow a chain of reductions until no definition -can be applied. For instance, we compute -

-
-    Sum one one -->
-    Sum (Succ Zero) (Succ Zero) -->
-    Succ (sum (Succ Zero) Zero) -->
-    Succ (Succ Zero)
-
-

-Computation in GF is performed with the pt command and the -compute transformation, e.g. -

-
-    > p -tr "1 + 1" | pt -transform=compute -tr | l
-    sum one one
-    Succ (Succ Zero)
-    s(s(0))
-
-

-

-The def definitions of a grammar induce a notion of -definitional equality among trees: two trees are -definitionally equal if they compute into the same tree. -Thus, trivially, all trees in a chain of computation -(such as the one above) -are definitionally equal to each other. So are the trees -

-
-    sum Zero (Succ one)
-    Succ one
-    sum (sum Zero Zero) (sum (Succ Zero) one)
-
-

-and infinitely many other trees. -

-

-A fact that has to be emphasized about def definitions is that -they are not performed as a first step of linearization. -We say that linearization is intensional, which means that -the definitional equality of two trees does not imply that -they have the same linearizations. For instance, each of the seven terms -shown above has a different linearizations in arithmetic notation: -

-
-    1 + 1
-    s(0) + s(0)
-    s(s(0) + 0)
-    s(s(0))
-    0 + s(0)
-    s(1)
-    0 + 0 + s(0) + 1
-
-

-This notion of intensionality is -no more exotic than the intensionality of any pretty-printing -function of a programming language (function that shows -the expressions of the language as strings). It is vital for -pretty-printing to be intensional in this sense - if we want, -for instance, to trace a chain of computation by pretty-printing each -intermediate step, what we want to see is a sequence of different -expression, which are definitionally equal. -

-

-What is more exotic is that GF has two ways of referring to the -abstract syntax objects. In the concrete syntax, the reference is intensional. -In the abstract syntax, the reference is extensional, since -type checking is extensional. The reason is that, -in the type theory with dependent types, types may depend on terms. -Two types depending on terms that are definitionally equal are -equal types. For instance, -

-
-    Proof (Odd one)
-    Proof (Odd (Succ Zero))
-
-

-are equal types. Hence, any tree that type checks as a proof that -1 is odd also type checks as a proof that the successor of 0 is odd. -(Recall, in this connection, that the -arguments a category depends on never play any role -in the linearization of trees of that category, -nor in the definition of the linearization type.) -

-

-In addition to computation, definitions impose a -paraphrase relation on expressions: -two strings are paraphrases if they -are linearizations of trees that are -definitionally equal. -Paraphrases are sometimes interesting for -translation: the direct translation -of a string, which is the linearization of the same tree -in the targer language, may be inadequate because it is e.g. -unidiomatic or ambiguous. In such a case, -the translation algorithm may be made to consider -translation by a paraphrase. -

-

-To stress express the distinction between -constructors (=canonical functions) -and other functions, GF has a judgement form -data to tell that certain functions are canonical, e.g. -

-
-    data Nat = Succ | Zero ;
-
-

-Unlike in Haskell, but similarly to ALF (where constructor functions -are marked with a flag C), -new constructors can be added to -a type with new data judgements. The type signatures of constructors -are given separately, in ordinary fun judgements. -One can also write directly -

-
-    data Succ : Nat -> Nat ;
-
-

-which is equivalent to the two judgements -

-
-    fun Succ : Nat -> Nat ;
-    data Nat = Succ ;
-
-

-

-Exercise. Implement an interpreter of a small functional programming -language with natural numbers, lists, pairs, lambdas, etc. Use higher-order -abstract syntax with semantic definitions. As target language, use -your favourite programming language. -

-

-Exercise. To make your interpreted language look nice, use -precedences instead of putting parentheses everywhere. -You can use the precedence library -of GF to facilitate this. -

- -

Practical issues

- -

Lexers and unlexers

-

-Lexers and unlexers can be chosen from -a list of predefined ones, using the flags-lexer and `` -unlexer`` either -in the grammar file or on the GF command line. Here are some often-used lexers -and unlexers: -

-
-    The default is words.
-    -lexer=words         tokens are separated by spaces or newlines
-    -lexer=literals      like words, but GF integer and string literals recognized
-    -lexer=vars          like words, but "x","x_...","$...$" as vars, "?..." as meta
-    -lexer=chars         each character is a token
-    -lexer=code          use Haskell's lex
-    -lexer=codevars      like code, but treat unknown words as variables, ?? as meta
-    -lexer=text          with conventions on punctuation and capital letters
-    -lexer=codelit       like code, but treat unknown words as string literals
-    -lexer=textlit       like text, but treat unknown words as string literals
-  
-    The default is unwords.
-    -unlexer=unwords     space-separated token list (like unwords)
-    -unlexer=text        format as text: punctuation, capitals, paragraph <p>
-    -unlexer=code        format as code (spacing, indentation)
-    -unlexer=textlit     like text, but remove string literal quotes
-    -unlexer=codelit     like code, but remove string literal quotes
-    -unlexer=concat      remove all spaces
-
-

-More options can be found by help -lexer and help -unlexer: -

- -

Speech input and output

-

-The speak_aloud = sa command sends a string to the speech -synthesizer -Flite. -It is typically used via a pipe: -

-
-   generate_random | linearize | speak_aloud
-
-

-The result is only satisfactory for English. -

-

-The speech_input = si command receives a string from a -speech recognizer that requires the installation of -ATK. -It is typically used to pipe input to a parser: -

-
-   speech_input -tr | parse
-
-

-The method words only for grammars of English. -

-

-Both Flite and ATK are freely available through the links -above, but they are not distributed together with GF. -

- -

Multilingual syntax editor

-

-The -Editor User Manual -describes the use of the editor, which works for any multilingual GF grammar. -

-

-Here is a snapshot of the editor: -

-

-

-

-

- -

-

-

-

-

-The grammars of the snapshot are from the -Letter grammar package. -

- -

Communicating with GF

-

-Other processes can communicate with the GF command interpreter, -and also with the GF syntax editor. Useful flags when invoking GF are -

-
    -
  • -batch suppresses the promps and structures the communication with XML tags. -
  • -s suppresses non-output non-error messages and XML tags. -
  • -nocpu suppresses CPU time indication. -
- -

-Thus the most silent way to invoke GF is -

-
-    gf -batch -s -nocpu
-
-

- -

Embedded grammars in Haskell and Java

-

-GF grammars can be used as parts of programs written in the -following languages. We will go through a skeleton application in -Haskell, while the next chapter will show how to build an -application in Java. -

-

-We will show how to build a minimal resource grammar -application whose architecture scales up to much -larger applications. The application is run from the -shell by the command -

-
-    math
-
-

-whereafter it reads user input in English and French. -To each input line, it answers by the truth value of -the sentence. -

-
-    ./math
-    zéro est pair
-    True
-    zero is odd
-    False
-    zero is even and zero is odd
-    False
-
-

-The source of the application consists of the following -files: -

-
-    LexEng.gf    -- English instance of Lex
-    LexFre.gf    -- French instance of Lex
-    Lex.gf       -- lexicon interface
-    Makefile     -- a makefile
-    MathEng.gf   -- English instantiation of MathI
-    MathFre.gf   -- French instantiation of MathI
-    Math.gf      -- abstract syntax
-    MathI.gf     -- concrete syntax functor for Math
-    Run.hs       -- Haskell Main module
-
-

-The system was built in 22 steps explained below. -

- -

Writing GF grammars

- -

Creating the first grammar

-

-1. Write Math.gf, which defines what you want to say. -

-
-    abstract Math = {
-    cat Prop ; Elem ;
-    fun 
-      And  : Prop -> Prop -> Prop ;
-      Even : Elem -> Prop ;
-      Zero : Elem ;
-    }
-
-

-2. Write Lex.gf, which defines which language-dependent -parts are needed in the concrete syntax. These are mostly -words (lexicon), but can in fact be any operations. The definitions -only use resource abstract syntax, which is opened. -

-
-    interface Lex = open Syntax in {
-    oper
-      even_A : A ;
-      zero_PN : PN ;
-    } 
-
-

-3. Write LexEng.gf, the English implementation of Lex.gf -This module uses English resource libraries. -

-
-    instance LexEng of Lex = open GrammarEng, ParadigmsEng in {
-    oper
-      even_A = regA "even" ;
-      zero_PN = regPN "zero" ;
-  
-    }
-
-

-4. Write MathI.gf, a language-independent concrete syntax of -Math.gf. It opens interfaces. -which makes it an incomplete module, aka. parametrized module, aka. -functor. -

-
-    incomplete concrete MathI of Math = 
-  
-    open Syntax, Lex in {
-  
-    flags startcat = Prop ;
-  
-    lincat 
-      Prop = S ;
-      Elem = NP ;
-    lin 
-      And x y = mkS and_Conj x y ;
-      Even x = mkS (mkCl x even_A) ;
-      Zero = mkNP zero_PN ;
-    }
-
-

-5. Write MathEng.gf, which is just an instatiation of MathI.gf, -replacing the interfaces by their English instances. This is the module -that will be used as a top module in GF, so it contains a path to -the libraries. -

-
-    instance LexEng of Lex = open SyntaxEng, ParadigmsEng in {
-    oper
-      even_A = mkA "even" ;
-      zero_PN = mkPN "zero" ;
-    }
-
-

- -

Testing

-

-6. Test the grammar in GF by random generation and parsing. -

-
-    $ gf 
-    > i MathEng.gf
-    > gr -tr | l -tr | p
-    And (Even Zero) (Even Zero)
-    zero is evenand zero is even
-    And (Even Zero) (Even Zero)
-
-

-When importing the grammar, you will fail if you haven't -

-
    -
  • correctly defined your GF_LIB_PATH as GF/lib -
  • installed the resource package or - compiled the resource from source by make in GF/lib/resource-1.0 -
- - -

Adding a new language

-

-7. Now it is time to add a new language. Write a French lexicon LexFre.gf: -

-
-    instance LexFre of Lex = open SyntaxFre, ParadigmsFre in {
-    oper
-      even_A = mkA "pair" ;
-      zero_PN = mkPN "zéro" ;
-    }
-
-

-8. You also need a French concrete syntax, MathFre.gf: -

-
-    --# -path=.:present:prelude
-  
-    concrete MathFre of Math = MathI with
-      (Syntax = SyntaxFre), 
-      (Lex = LexFre) ;
-
-

-9. This time, you can test multilingual generation: -

-
-    > i MathFre.gf
-    > gr | tb
-    Even Zero
-    zéro est pair
-    zero is even
-
-

- -

Extending the language

-

-10. You want to add a predicate saying that a number is odd. -It is first added to Math.gf: -

-
-    fun Odd : Elem -> Prop ;
-
-

-11. You need a new word in Lex.gf. -

-
-    oper odd_A : A ;
-
-

-12. Then you can give a language-independent concrete syntax in -MathI.gf: -

-
-    lin Odd x = mkS (mkCl x odd_A) ;
-
-

-13. The new word is implemented in LexEng.gf. -

-
-    oper odd_A = mkA "odd" ;
-
-

-14. The new word is implemented in LexFre.gf. -

-
-    oper odd_A = mkA "impair" ;
-
-

-15. Now you can test with the extended lexicon. First empty -the environment to get rid of the old abstract syntax, then -import the new versions of the grammars. -

-
-    > e
-    > i MathEng.gf
-    > i MathFre.gf
-    > gr | tb
-    And (Odd Zero) (Even Zero)
-    zéro est impair et zéro est pair
-    zero is odd and zero is even
-
-

- -

Building a user program

- -

Producing a compiled grammar package

-

-16. Your grammar is going to be used by persons whMathEng.gfo do not need -to compile it again. They may not have access to the resource library, -either. Therefore it is advisable to produce a multilingual grammar -package in a single file. We call this package math.gfcm and -produce it, when we have MathEng.gf and -MathEng.gf in the GF state, by the command -

-
-    > pm | wf math.gfcm
-
-

- -

Writing the Haskell application

-

-17. Write the Haskell main file Run.hs. It uses the EmbeddedAPI -module defining some basic functionalities such as parsing. -The answer is produced by an interpreter of trees returned by the parser. -

-
-  module Main where
-  
-  import GSyntax
-  import GF.Embed.EmbedAPI
-  
-  main :: IO () 
-  main = do
-    gr <- file2grammar "math.gfcm"
-    loop gr
-  
-  loop :: MultiGrammar -> IO ()
-  loop gr = do
-    s <- getLine
-    interpret gr s
-    loop gr
-  
-  interpret :: MultiGrammar -> String -> IO ()
-  interpret gr s = do
-    let tss = parseAll gr "Prop" s
-    case (concat tss) of
-      [] ->  putStrLn "no parse"
-      t:_ -> print $ answer $ fg t
-  
-  answer :: GProp -> Bool
-  answer p = case p of
-    (GOdd x1) -> odd (value x1)
-    (GEven x1) -> even (value x1)
-    (GAnd x1 x2) -> answer x1 && answer x2
-  
-  value :: GElem -> Int
-  value e = case e of
-    GZero -> 0
-
-

-

-18. The syntax trees manipulated by the interpreter are not raw -GF trees, but objects of the Haskell datatype GProp. -From any GF grammar, a file GFSyntax.hs with -datatypes corresponding to its abstract -syntax can be produced by the command -

-
-    > pg -printer=haskell | wf GSyntax.hs
-
-

-The module also defines the overloaded functions -gf and fg for translating from these types to -raw trees and back. -

- -

Compiling the Haskell grammar

-

-19. Before compiling Run.hs, you must check that the -embedded GF modules are found. The easiest way to do this -is by two symbolic links to your GF source directories: -

-
-    $ ln -s /home/aarne/GF/src/GF
-    $ ln -s /home/aarne/GF/src/Transfer/
-
-

-

-20. Now you can run the GHC Haskell compiler to produce the program. -

-
-    $ ghc --make -o math Run.hs
-
-

-The program can be tested with the command ./math. -

- -

Building a distribution

-

-21. For a stand-alone binary-only distribution, only -the two files math and math.gfcm are needed. -For a source distribution, the files mentioned in -the beginning of this documents are needed. -

- -

Using a Makefile

-

-22. As a part of the source distribution, a Makefile is -essential. The Makefile is also useful when developing the -application. It should always be possible to build an executable -from source by typing make. Here is a minimal such Makefile: -

-
-    all:
-            echo "pm | wf math.gfcm" | gf MathEng.gf MathFre.gf
-            echo "pg -printer=haskell | wf GSyntax.hs" | gf math.gfcm
-            ghc --make -o math Run.hs
-
-

- -

Embedded grammars in Java

-

-Forthcoming; at the moment, the document -

-

- http://www.cs.chalmers.se/~bringert/gf/gf-java.html -

-

-by Björn Bringert gives more information on Java. -

- -

Further reading

-

-Syntax Editor User Manual: -

-

-http://www.cs.chalmers.se/~aarne/GF2.0/doc/javaGUImanual/javaGUImanual.htm -

-

-Resource Grammar Synopsis (on using resource grammars): -

-

-http://www.cs.chalmers.se/~aarne/GF/lib/resource-1.0/synopsis.html -

-

-Resource Grammar HOWTO (on writing resource grammars): -

-

-http://www.cs.chalmers.se/~aarne/GF/lib/resource-1.0/synopsis.html -

-

-GF Homepage: -

-

-http://www.cs.chalmers.se/~aarne/GF/doc -

- - - - diff --git a/doc/tutorial/gf-tutorial2.pdf b/doc/tutorial/gf-tutorial2.pdf deleted file mode 100644 index 3f1b6d507..000000000 --- a/doc/tutorial/gf-tutorial2.pdf +++ /dev/null @@ -1,7504 +0,0 @@ -%PDF-1.4 -5 0 obj -<< /S /GoTo /D (section.1) >> -endobj -8 0 obj -(Introduction) -endobj -9 0 obj -<< /S /GoTo /D (subsection.1.1) >> -endobj -12 0 obj -(GF = Grammatical Framework) -endobj -13 0 obj -<< /S /GoTo /D (subsection.1.2) >> -endobj -16 0 obj -(What are GF grammars used for) -endobj -17 0 obj -<< /S /GoTo /D (subsection.1.3) >> -endobj -20 0 obj -(Who is this tutorial for) -endobj -21 0 obj -<< /S /GoTo /D (subsection.1.4) >> -endobj -24 0 obj -(The coverage of the tutorial) -endobj -25 0 obj -<< /S /GoTo /D (subsection.1.5) >> -endobj -28 0 obj -(Getting the GF program) -endobj -29 0 obj -<< /S /GoTo /D (subsection.1.6) >> -endobj -32 0 obj -(Running the GF program) -endobj -33 0 obj -<< /S /GoTo /D (section.2) >> -endobj -36 0 obj -(The .cf grammar format) -endobj -37 0 obj -<< /S /GoTo /D (subsection.2.1) >> -endobj -40 0 obj -(Importing grammars and parsing strings) -endobj -41 0 obj -<< /S /GoTo /D (subsection.2.2) >> -endobj -44 0 obj -(Generating trees and strings) -endobj -45 0 obj -<< /S /GoTo /D (subsection.2.3) >> -endobj -48 0 obj -(Visualizing trees) -endobj -49 0 obj -<< /S /GoTo /D (subsection.2.4) >> -endobj -52 0 obj -(Some random-generated sentences) -endobj -53 0 obj -<< /S /GoTo /D (subsection.2.5) >> -endobj -56 0 obj -(Systematic generation) -endobj -57 0 obj -<< /S /GoTo /D (subsection.2.6) >> -endobj -60 0 obj -(More on pipes; tracing) -endobj -61 0 obj -<< /S /GoTo /D (subsection.2.7) >> -endobj -64 0 obj -(Writing and reading files) -endobj -65 0 obj -<< /S /GoTo /D (section.3) >> -endobj -68 0 obj -(The .gf grammar format) -endobj -69 0 obj -<< /S /GoTo /D (subsection.3.1) >> -endobj -72 0 obj -(Abstract and concrete syntax) -endobj -73 0 obj -<< /S /GoTo /D (subsection.3.2) >> -endobj -76 0 obj -(Judgement forms) -endobj -77 0 obj -<< /S /GoTo /D (subsection.3.3) >> -endobj -80 0 obj -(Module types) -endobj -81 0 obj -<< /S /GoTo /D (subsection.3.4) >> -endobj -84 0 obj -(Basic types and function types) -endobj -85 0 obj -<< /S /GoTo /D (subsection.3.5) >> -endobj -88 0 obj -(Records and strings) -endobj -89 0 obj -<< /S /GoTo /D (subsection.3.6) >> -endobj -92 0 obj -(An abstract syntax example) -endobj -93 0 obj -<< /S /GoTo /D (subsection.3.7) >> -endobj -96 0 obj -(A concrete syntax example) -endobj -97 0 obj -<< /S /GoTo /D (subsection.3.8) >> -endobj -100 0 obj -(Modules and files) -endobj -101 0 obj -<< /S /GoTo /D (section.4) >> -endobj -104 0 obj -(Multilingual grammars and translation) -endobj -105 0 obj -<< /S /GoTo /D (subsection.4.1) >> -endobj -108 0 obj -(An Italian concrete syntax) -endobj -109 0 obj -<< /S /GoTo /D (subsection.4.2) >> -endobj -112 0 obj -(Using a multilingual grammar) -endobj -113 0 obj -<< /S /GoTo /D (subsection.4.3) >> -endobj -116 0 obj -(Translation session) -endobj -117 0 obj -<< /S /GoTo /D (subsection.4.4) >> -endobj -120 0 obj -(Translation quiz) -endobj -121 0 obj -<< /S /GoTo /D (section.5) >> -endobj -124 0 obj -(Grammar architecture) -endobj -125 0 obj -<< /S /GoTo /D (subsection.5.1) >> -endobj -128 0 obj -(Extending a grammar) -endobj -129 0 obj -<< /S /GoTo /D (subsection.5.2) >> -endobj -132 0 obj -(Multiple inheritance) -endobj -133 0 obj -<< /S /GoTo /D (subsection.5.3) >> -endobj -136 0 obj -(Visualizing module structure) -endobj -137 0 obj -<< /S /GoTo /D (subsection.5.4) >> -endobj -140 0 obj -(System commands) -endobj -141 0 obj -<< /S /GoTo /D (section.6) >> -endobj -144 0 obj -(Resource modules) -endobj -145 0 obj -<< /S /GoTo /D (subsection.6.1) >> -endobj -148 0 obj -(The golden rule of functional programming) -endobj -149 0 obj -<< /S /GoTo /D (subsection.6.2) >> -endobj -152 0 obj -(Operation definitions) -endobj -153 0 obj -<< /S /GoTo /D (subsection.6.3) >> -endobj -156 0 obj -(The ``resource`` module type) -endobj -157 0 obj -<< /S /GoTo /D (subsection.6.4) >> -endobj -160 0 obj -(Opening a resource) -endobj -161 0 obj -<< /S /GoTo /D (subsection.6.5) >> -endobj -164 0 obj -(Partial application) -endobj -165 0 obj -<< /S /GoTo /D (subsection.6.6) >> -endobj -168 0 obj -(Testing resource modules) -endobj -169 0 obj -<< /S /GoTo /D (subsection.6.7) >> -endobj -172 0 obj -(Division of labour) -endobj -173 0 obj -<< /S /GoTo /D (section.7) >> -endobj -176 0 obj -(Morphology) -endobj -177 0 obj -<< /S /GoTo /D (subsection.7.1) >> -endobj -180 0 obj -(Parameters and tables) -endobj -181 0 obj -<< /S /GoTo /D (subsection.7.2) >> -endobj -184 0 obj -(Inflection tables and paradigms) -endobj -185 0 obj -<< /S /GoTo /D (subsection.7.3) >> -endobj -188 0 obj -(Worst-case functions and data abstraction) -endobj -189 0 obj -<< /S /GoTo /D (subsection.7.4) >> -endobj -192 0 obj -(A system of paradigms using Prelude operations) -endobj -193 0 obj -<< /S /GoTo /D (subsection.7.5) >> -endobj -196 0 obj -(Pattern matching) -endobj -197 0 obj -<< /S /GoTo /D (subsection.7.6) >> -endobj -200 0 obj -(An intelligent noun paradigm using pattern matching) -endobj -201 0 obj -<< /S /GoTo /D (subsection.7.7) >> -endobj -204 0 obj -(Morphological resource modules) -endobj -205 0 obj -<< /S /GoTo /D (section.8) >> -endobj -208 0 obj -(Using parameters in concrete syntax) -endobj -209 0 obj -<< /S /GoTo /D (subsection.8.1) >> -endobj -212 0 obj -(Parametric vs. inherent features, agreement) -endobj -213 0 obj -<< /S /GoTo /D (subsection.8.2) >> -endobj -216 0 obj -(English concrete syntax with parameters) -endobj -217 0 obj -<< /S /GoTo /D (subsection.8.3) >> -endobj -220 0 obj -(Hierarchic parameter types) -endobj -221 0 obj -<< /S /GoTo /D (subsection.8.4) >> -endobj -224 0 obj -(Morphological analysis and morphology quiz) -endobj -225 0 obj -<< /S /GoTo /D (subsection.8.5) >> -endobj -228 0 obj -(Discontinuous constituents) -endobj -229 0 obj -<< /S /GoTo /D (subsection.8.6) >> -endobj -232 0 obj -(Free variation) -endobj -233 0 obj -<< /S /GoTo /D (subsection.8.7) >> -endobj -236 0 obj -(Overloading of operations) -endobj -237 0 obj -<< /S /GoTo /D (section.9) >> -endobj -240 0 obj -(More constructs for concrete syntax) -endobj -241 0 obj -<< /S /GoTo /D (subsection.9.1) >> -endobj -244 0 obj -(Local definitions) -endobj -245 0 obj -<< /S /GoTo /D (subsection.9.2) >> -endobj -248 0 obj -(Record extension and subtyping) -endobj -249 0 obj -<< /S /GoTo /D (subsection.9.3) >> -endobj -252 0 obj -(Tuples and product types) -endobj -253 0 obj -<< /S /GoTo /D (subsection.9.4) >> -endobj -256 0 obj -(Record and tuple patterns) -endobj -257 0 obj -<< /S /GoTo /D (subsection.9.5) >> -endobj -260 0 obj -(Regular expression patterns) -endobj -261 0 obj -<< /S /GoTo /D (subsection.9.6) >> -endobj -264 0 obj -(Prefix-dependent choices) -endobj -265 0 obj -<< /S /GoTo /D (subsection.9.7) >> -endobj -268 0 obj -(Predefined types) -endobj -269 0 obj -<< /S /GoTo /D (section.10) >> -endobj -272 0 obj -(Using the resource grammar library) -endobj -273 0 obj -<< /S /GoTo /D (subsection.10.1) >> -endobj -276 0 obj -(The coverage of the library) -endobj -277 0 obj -<< /S /GoTo /D (subsection.10.2) >> -endobj -280 0 obj -(The resource API) -endobj -281 0 obj -<< /S /GoTo /D (subsection.10.3) >> -endobj -284 0 obj -(Example: French) -endobj -285 0 obj -<< /S /GoTo /D (subsection.10.4) >> -endobj -288 0 obj -(Functor implementation of multilingual grammars) -endobj -289 0 obj -<< /S /GoTo /D (subsection.10.5) >> -endobj -292 0 obj -(Interfaces and instances) -endobj -293 0 obj -<< /S /GoTo /D (subsection.10.6) >> -endobj -296 0 obj -(Adding languages to a functor implementation) -endobj -297 0 obj -<< /S /GoTo /D (subsection.10.7) >> -endobj -300 0 obj -(Division of labour revisited) -endobj -301 0 obj -<< /S /GoTo /D (subsection.10.8) >> -endobj -304 0 obj -(Restricted inheritance) -endobj -305 0 obj -<< /S /GoTo /D (subsection.10.9) >> -endobj -308 0 obj -(Browsing the resource with GF commands) -endobj -309 0 obj -<< /S /GoTo /D (section.11) >> -endobj -312 0 obj -(More concepts of abstract syntax) -endobj -313 0 obj -<< /S /GoTo /D (subsection.11.1) >> -endobj -316 0 obj -(GF as a logical framework) -endobj -317 0 obj -<< /S /GoTo /D (subsection.11.2) >> -endobj -320 0 obj -(Dependent types) -endobj -321 0 obj -<< /S /GoTo /D (subsection.11.3) >> -endobj -324 0 obj -(Polymorphism) -endobj -325 0 obj -<< /S /GoTo /D (subsection.11.4) >> -endobj -328 0 obj -(Dependent types and spoken language models) -endobj -329 0 obj -<< /S /GoTo /D (subsubsection.11.4.1) >> -endobj -332 0 obj -(Grammar-based language models) -endobj -333 0 obj -<< /S /GoTo /D (subsubsection.11.4.2) >> -endobj -336 0 obj -(Statistical language models) -endobj -337 0 obj -<< /S /GoTo /D (subsection.11.5) >> -endobj -340 0 obj -(Digression: dependent types in concrete syntax) -endobj -341 0 obj -<< /S /GoTo /D (subsubsection.11.5.1) >> -endobj -344 0 obj -(Variables in function types) -endobj -345 0 obj -<< /S /GoTo /D (subsubsection.11.5.2) >> -endobj -348 0 obj -(Polymorphism in concrete syntax) -endobj -349 0 obj -<< /S /GoTo /D (subsection.11.6) >> -endobj -352 0 obj -(Proof objects) -endobj -353 0 obj -<< /S /GoTo /D (subsubsection.11.6.1) >> -endobj -356 0 obj -(Proof-carrying documents) -endobj -357 0 obj -<< /S /GoTo /D (subsection.11.7) >> -endobj -360 0 obj -(Restricted polymorphism) -endobj -361 0 obj -<< /S /GoTo /D (subsection.11.8) >> -endobj -364 0 obj -(Variable bindings) -endobj -365 0 obj -<< /S /GoTo /D (subsection.11.9) >> -endobj -368 0 obj -(Semantic definitions) -endobj -369 0 obj -<< /S /GoTo /D (section.12) >> -endobj -372 0 obj -(Practical issues) -endobj -373 0 obj -<< /S /GoTo /D (subsection.12.1) >> -endobj -376 0 obj -(Lexers and unlexers) -endobj -377 0 obj -<< /S /GoTo /D (subsection.12.2) >> -endobj -380 0 obj -(Speech input and output) -endobj -381 0 obj -<< /S /GoTo /D (subsection.12.3) >> -endobj -384 0 obj -(Multilingual syntax editor) -endobj -385 0 obj -<< /S /GoTo /D (subsection.12.4) >> -endobj -388 0 obj -(Communicating with GF) -endobj -389 0 obj -<< /S /GoTo /D (section.13) >> -endobj -392 0 obj -(Embedded grammars in Haskell and Java) -endobj -393 0 obj -<< /S /GoTo /D (subsection.13.1) >> -endobj -396 0 obj -(Writing GF grammars) -endobj -397 0 obj -<< /S /GoTo /D (subsubsection.13.1.1) >> -endobj -400 0 obj -(Creating the first grammar) -endobj -401 0 obj -<< /S /GoTo /D (subsubsection.13.1.2) >> -endobj -404 0 obj -(Testing) -endobj -405 0 obj -<< /S /GoTo /D (subsubsection.13.1.3) >> -endobj -408 0 obj -(Adding a new language) -endobj -409 0 obj -<< /S /GoTo /D (subsubsection.13.1.4) >> -endobj -412 0 obj -(Extending the language) -endobj -413 0 obj -<< /S /GoTo /D (subsection.13.2) >> -endobj -416 0 obj -(Building a user program) -endobj -417 0 obj -<< /S /GoTo /D (subsubsection.13.2.1) >> -endobj -420 0 obj -(Producing a compiled grammar package) -endobj -421 0 obj -<< /S /GoTo /D (subsubsection.13.2.2) >> -endobj -424 0 obj -(Writing the Haskell application) -endobj -425 0 obj -<< /S /GoTo /D (subsubsection.13.2.3) >> -endobj -428 0 obj -(Compiling the Haskell grammar) -endobj -429 0 obj -<< /S /GoTo /D (subsubsection.13.2.4) >> -endobj -432 0 obj -(Building a distribution) -endobj -433 0 obj -<< /S /GoTo /D (subsubsection.13.2.5) >> -endobj -436 0 obj -(Using a Makefile) -endobj -437 0 obj -<< /S /GoTo /D (section.14) >> -endobj -440 0 obj -(Embedded grammars in Java) -endobj -441 0 obj -<< /S /GoTo /D (section.15) >> -endobj -444 0 obj -(Further reading) -endobj -445 0 obj -<< /S /GoTo /D [446 0 R /FitH ] >> -endobj -448 0 obj << -/Length 347 -/Filter /FlateDecode ->> -stream -xÚm‘MOÃ0 †ïû9¦‡ÛùìnCb“&NÐpˆ¶Â&öºVü}œ S¥Æ±ûµcR()¢‘#©`)ªÕ~‚êM‚‹ }CÆEðÎåë•hmÀ8+VhÀ#¹ßÔ?š‚âF,ï,¢Éøm;¹™‹º´Ãä¬j_EMP®]?éEŸöû4lWiWee=¯BÔâì>+úØ¿g7ë¶ -‡c¿­H ûÒ.E ‘¡q޳@m€=G9#ȸsýÙ8lŽ’ÒO¥{=Ký¡+æC:TõÊ5¥Œ•`ÐÏè0+ bPV'Xåž6i·ïúœºÜ…b Î`YËÑžeïs±SU“JòøQÕ’»Îþ¡›‘ÇñP¢ËqWŒXŠS# Ÿ²ümñqîC֜ܵ—\6Þxc®nôÂÔ?PÙS„Р¬O[&ø¦ò ôWÏ6¾¢÷-hŽÊendstream -endobj -446 0 obj << -/Type /Page -/Contents 448 0 R -/Resources 447 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 460 0 R ->> endobj -449 0 obj << -/D [446 0 R /XYZ 117.8281 740.0018 null] ->> endobj -450 0 obj << -/D [446 0 R /XYZ 117.8281 715.0952 null] ->> endobj -447 0 obj << -/Font << /F18 453 0 R /F19 456 0 R /F15 459 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -463 0 obj << -/Length 2232 -/Filter /FlateDecode ->> -stream -xÚÕ›_oÛ6Àßó)ôh?˜ã?Q$†=´ÃR´@_º`{Øö ÚŠc,¶[ÙÒ}úI‘¢L‰Ìì¡MP ‘¥ywþñÈ;Ò¤Àð„THRIŠŠc„1‘År{…‹5<|wE:!VJ$ÊRyºà•@\2Z,ÂFÞÞ\}wÍdA8b\Ðâæ6è sD˜`ÅÍê·Ùó™íwsFfm£¯á’ÎZ}uœÿqóáê§ß—oATU¸Rº'ûð°.ìŧ@5/¿_°ª©‚`¤°"Õ¼œVÌŠ–³÷V£Ã~¾€¿«Çe»}OT£˜!pÔ@³ÈUN(§¯0¢—CuDä~TàoQbD¤9w8ùEø‚韔wD w pÁ”ÎÞ]ƒ+›ý`ÿ¼;ÌɬÞê¯l[·›e}oï_Ï%›õÏš¿ç´šíõ?OMaXé/ ˜ùÏKå `¤¿q64Í%ÆÁ®T|óÂg‘+9|˜‚6I+½TÎʸ¹QLüMû–SDá@)A%Qìù0Qˆ¾„ÉÉY˜hÓ¯wšV#Ãgµ¦£±×޲õ¡ÞnëÃÑÞ}œëÀ qZÙÇ·@Ô)M,&Š¡j±ÅN*g£`„ë_‘¦IŒRæ¥Í‹›ÓæUÓ%z>F¸B X"+eb!B{ËÇÆò¡/Û»ðÃckBÏÆE§n(Ä]VA,îu‰c¸“I+L+†¨Ä"TøëÇŸg<›dkÚY)œ6¥] §©šîï|¦JY"Áp•£ÊËY®xÇÕÍ]Š–û9•³¿ôfb&µu÷pkjïúØÒv -™¢HTB¡r1fN*gUUŒ«¡ ßµ)ª’6÷\elŽ›Ó6«I¶’½^@—€+oæèrr–®Ò­¢š¶Ýì’µ WñÜ÷·{=ƱªB%-yj1­:©œ²°øE•›{yëôë%*+NÒðR9ÄÍ™¯ OS•êöªàÍRÑ,T˜eJtL}zÔ@íz¬tXrLÁ½k{é°²kóS²É™(Mb°œPF_ª •)1èûB°šä)aw€SÒL‰>».(âTòçe½— L¤³^èÜÉi%©ÍzíÜ ÒÞRÏq’ÏÖaªw°°‚´/¢HTˆÃâ:Ô!¦¨ÊiÊCŠUr¨)!“1—à2Ο?êÂRÃÎËWùŒøýöacÂf·Õ×c©K­Ge—µ<˜LÇ$2áplzͺ[GµV2„ fÓFPé¤ri¦=±ç—Sã+iA?À2ÄÍ&èäK;îìxÍaB³‰‹³ÜP¿Ø5‡ºÄëCÓØêWÁ¥Õ±Û¾pŒ×–U’N#+K+“Qܯ+CÅ_Ú²Ò#°7*ipÔ˜Á‰Mã”èóš8,Uq™ÍX¼œåÉe¿lŽõ½!ÿ CKÈÕ)4¬BJëöcã¤r*R®gÁ‡*¾ÈÜ÷¿E­”wÈÒÞ‰›3˜ñiÌRÝ^ÀåK‘Í]¼œåÌeÆ?ï·ÝªÒ,v+]€1˂ź«â“ U¶•}ÅhW½ÛédºmvËq(…ÉUQR„ŠÆö;©œ=Ð/¤ÓìÄž¯å$N)»œÒvÅÍœÊiœ’î<' ËWQ‘,NNÎâäR៿¸ÅPÛ˜-ËÖº›G¶[ ÷2ymØñÈò²“Êéç«uý^E½ÎrDÀSÚqs†§é=…d·çóÄ ½Ä¼’9ž¼œåÉ¥Á÷Á>Ðc—ÜzZ´Ëôưö½›uˆZšùÒ¬½ÇRH“Tj5šË©œò¶ò¯ -¶¤#zØ2Žˆ›ËÀ–ìöØJaBf—ð^ÎÂV¹Ý‡9$ƇÍ`¯gDsqhêUG•ùü;&ü¾9ŽVó¤(BUÆ‹yº<šQØ×ò -¿ŽZ^ÒYiÄͲ¦÷´’Ýž]aRŒI®þâå´–l¬þ²¾µLAAßÈ_ »‡nŠPƒ‘ˆÕIåõå—¢±;û‘‚ÁÿËçAûB6íñrÆS¾üòæó±=ÔËödð-÷»å¡i»yàøÅ®9ë§øôF¸Òî -Ô9}ÐIå´ef¢ÄPÛo6þ&‡ZÊØ`¨¥›3lLoô¥}|v‡q‰°ÈoÆx9K+Ä|Ðç -Vëf$'ý>1™mÇSgNã¬,ÂÞãqæ¤rJúÔy äëO“ÞéIËx'n.CZ²Û H°äå4›ëx9KókSX‚V³Õã}°]¬yûò`Li(CRª"ì<­Ê©HF²¬†¾Ìž—`'=@—vUÜœnz¯9ÙíÐq½åM³ ‘—³Ð¹zÍÛÚn5,»”Çófs¡ÓB󭎆;{Ðñä…)@Õ°"Ttd -µB9süù½9ßþüž‡!edÀVÚʸ¹[IßžÏÅ/fÙüÇËY¶\ñæ“b¹?¬æÁ®EXì3öfdS‹– "hª‡5'•ÓT×{*Uª¡¦/9°M–òGXÚqs&sÞ…Nv{>`DUHIž=Óàå,`®šó¦ Bõg_%ìK6m°5¦«ˆ~on4Ÿüžµ>÷pßÄ»fÌžµ -õÙ7ë¤ræø³9/uë,isOZÆæ¸9C™$-Ùí¤éöWYÒœœ%Í•rÞtyc÷›b¯n/ã4“Ô\=Ù[ÍS½}°+ºè8 dÙ"ìsüÞ·MÒýÆíÊ®Í xs˜ËŸN’®j&õ~H½;ê‰ÒÔíëñã°ô9’P½‘±ÖIå¬ð%Æ”MüŒŠ ÁÆÏòô®ë…F#)·_D'e¿M}·qÿGø-„endstream -endobj -462 0 obj << -/Type /Page -/Contents 463 0 R -/Resources 461 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 460 0 R -/Annots [ 469 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R ] ->> endobj -469 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 670.7116 204.3543 680.2799] -/Subtype /Link -/A << /S /GoTo /D (section.1) >> ->> endobj -473 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 649.1923 310.8247 658.7606] -/Subtype /Link -/A << /S /GoTo /D (subsection.1.1) >> ->> endobj -474 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 625.5518 317.4156 637.2413] -/Subtype /Link -/A << /S /GoTo /D (subsection.1.2) >> ->> endobj -475 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 606.1537 271.3701 615.722] -/Subtype /Link -/A << /S /GoTo /D (subsection.1.3) >> ->> endobj -476 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 582.5132 293.6731 594.2027] -/Subtype /Link -/A << /S /GoTo /D (subsection.1.4) >> ->> endobj -477 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 560.9939 278.5217 572.6834] -/Subtype /Link -/A << /S /GoTo /D (subsection.1.5) >> ->> endobj -478 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 539.4746 282.8398 551.1641] -/Subtype /Link -/A << /S /GoTo /D (subsection.1.6) >> ->> endobj -479 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 507.0461 268.4902 518.7356] -/Subtype /Link -/A << /S /GoTo /D (section.2) >> ->> endobj -480 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 485.5268 354.0066 497.2163] -/Subtype /Link -/A << /S /GoTo /D (subsection.2.1) >> ->> endobj -481 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 464.0075 295.7792 475.697] -/Subtype /Link -/A << /S /GoTo /D (subsection.2.2) >> ->> endobj -482 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 442.4882 238.9155 454.1777] -/Subtype /Link -/A << /S /GoTo /D (subsection.2.3) >> ->> endobj -483 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 420.9689 323.1883 432.6584] -/Subtype /Link -/A << /S /GoTo /D (subsection.2.4) >> ->> endobj -484 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 399.4496 265.5217 411.0179] -/Subtype /Link -/A << /S /GoTo /D (subsection.2.5) >> ->> endobj -485 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 377.9303 268.2792 389.4986] -/Subtype /Link -/A << /S /GoTo /D (subsection.2.6) >> ->> endobj -486 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 356.411 278.5822 368.1005] -/Subtype /Link -/A << /S /GoTo /D (subsection.2.7) >> ->> endobj -487 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 323.9826 269.1872 335.672] -/Subtype /Link -/A << /S /GoTo /D (section.3) >> ->> endobj -488 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 302.4633 301.0671 314.1527] -/Subtype /Link -/A << /S /GoTo /D (subsection.3.1) >> ->> endobj -489 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 280.9439 242.3398 292.6334] -/Subtype /Link -/A << /S /GoTo /D (subsection.3.2) >> ->> endobj -490 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 259.4246 224.8852 271.1141] -/Subtype /Link -/A << /S /GoTo /D (subsection.3.3) >> ->> endobj -491 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 237.9053 307.2793 249.5948] -/Subtype /Link -/A << /S /GoTo /D (subsection.3.4) >> ->> endobj -492 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 216.386 254.6125 228.0755] -/Subtype /Link -/A << /S /GoTo /D (subsection.3.5) >> ->> endobj -493 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 194.8667 294.6732 206.5562] -/Subtype /Link -/A << /S /GoTo /D (subsection.3.6) >> ->> endobj -494 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 173.3474 289.158 185.0369] -/Subtype /Link -/A << /S /GoTo /D (subsection.3.7) >> ->> endobj -495 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 153.9493 243.4307 163.5176] -/Subtype /Link -/A << /S /GoTo /D (subsection.3.8) >> ->> endobj -496 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 119.3997 349.1745 131.0891] -/Subtype /Link -/A << /S /GoTo /D (section.4) >> ->> endobj -464 0 obj << -/D [462 0 R /XYZ 117.8281 740.0018 null] ->> endobj -468 0 obj << -/D [462 0 R /XYZ 117.8281 693.3333 null] ->> endobj -461 0 obj << -/Font << /F38 467 0 R /F39 472 0 R /F15 459 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -499 0 obj << -/Length 2338 -/Filter /FlateDecode ->> -stream -xÚÕ›KÛ6€ïù:ʳ|S<¦h¤@Ð Ý´‡¦Åëxø±•í"Û__¾M™¹µ›f{XÙ“3㣙!*¨þP… nP%(¢¦Zl^Àj¥n¾~œa àŒé—#wç„b€%¢êŠF j){·_Uöâ}$Hª©æª+‰þÀ÷7/¾û± -A ¡DÕÍç*¹›Ûßku9›#ˆqýr;›Bê7‡vÝÍPÝº× u¿ÞmÕ;æªWK}qXêû´Þ?lg¸©ú#_fÜüôâÕMP7Jx+—ؤJ6` f m³9ƒ0úG¥Lß¼ò^YäÌtÊ`‚¢¼éAªdz:œ6“dZÁmÎO{¢ #À$¦Œ7p$Jy1ËvŒ}ØwەŪµÿ63,êãZÁsèÖ¦lul×öÞJ³Ön4l›¶?7”@ …¼Š4JíôB½ #Éz3®¦HÊYz)oi2˜ÁˆNb”õîåq eŒ¼œåˆ8Žnf ©ûVã²×xh~ÚC·s!koÔÞÜÒ¡L½—¨Œ1^ÅŠ¤qÉK•ôÅL0„ðPß'—.‰YY·D¨åÝ’g`cӰ妽‚6¢¾GÑÐ"m^ÎÒFGÛŸGõºû;AŒp ©dU<{Š˜—*)‰©Î-8*ù s÷&IËy'"-ït8CŸ&-7­KÑÔ[¡h6íÃJKõA,èHä3/椴†l6—˜Õ¯ûv£qs¢HkûÅŒàú®³YÖâpì— \L&1¯N3¦hy™¼Z” ‰hbµ°8Ÿ0¬Ö0ÀÕãòÑ‹/þ@nñ9ã—–¾ú2³¹&ªõ¼µ9B”CÐBž ÖŒNØ@óÔY^ª¤/àFe}Ÿä:œZrYGœ–\Áépãä„%—öòàÎÔ7‡*÷ gùò)é[½×‡î^ÿs%aìnÙw¦¨Ù.F–RHYÅ“,@'UÒQÃ'$“CŸrlŸD+ç­¼?ÒáJh妽-õIAQ-/gÑòYê¯Ýþhké¿M&E.¬v3UùÖ·ê]SùzÚ„}ÒŽ:ô›çøIa«šXÁ?/U²#?;ž\õ“56b+ol:œa«™f+7íl©@›"[^βåsÒ_|6zXn,8‹{šçä>-yT:Ðð*žx¤â±B%õBÁ3PïRï8©’’!-(IàdbJ¹J_ñãÛ¥‘|nýy1㢕Þܹh½ÚéÐ}»tµ`ŒÒˆÝgûægË· S1ª|Âu·îû]œ¸º§Ãy“KE å±u)'^¨`LW×l`ÓWKrŸT^ãd°qÂrÊzéâPM©J\!+V0Aβâ3ÌŸïÕs^ئy?lÜúfúGˆ¨ºÞvÛ¯JW‡ªì U¬ËHc…J‡|s ñsÌ7³îˆ(Ëû#®ÄYnÚ+@êmx±” r4r”>*ɰO³ß™$ÒlÞ,õ+³‰³Ï¥Åñ 7rîÍ‘¤“êf¨¨b-G’N'U2ËBåИoÍà$g9›#Îò6§ÃÎÐ4g¹i¯à ª”–‹b]ä,gt$ é§Ö©°¡~[§_šÜt§‡ýXýŒÆ˜T±&#õ³“*)²ÑÂÏ8ͺ%Â-ï–t¸n¹i/Ç4*É¥¢Xê9‹s¸½ÓQ©íÍ¡OžÚ{Ó¯éöaš”: À ó*žy¤ÖqR%^Ÿ1^Y·œð*¸%Îà…'ñÊN{^LæÊ£,^^ÎâÅãÝ®Lòå7¨‡!Ì<=Ïz7ÂCþ1›@(ôtŒT±~)„^ªdF8ú00ã‰}Èš–7=΀6}ô!;í ‘@(q4/gA´º¿ôÃ2Þ•6<ù2qÝ~2Pé|- hÔv’cFš“*iöš>ÿ½Ä¬w"ÜòÞI‡+á–›öâ½D•M´ý2ÑÄ rZKa›8owúqy·[ïV L - «âR˜¼TI‘Ш(’º+,å9¢^wñrë.ÈO„^Í)°­–å!”â{—´noõ®í§õHg‹»}œX‘‘âÛïöô ;ˆ}ŸÕbÖ§…VpD:œ!gú,RvÚËã:æ*í¥åmž gùòý7Û1Ÿ,NÝE“é)#µN]Û¾Õ¥w·ÚìÓƒmR·óXë5r²ÍI•Ô'ˆ)ªÿÿã6ÉRÎʈ¥¼•ép†¥é£Fyç^ÎU9..oë9Ë’oáü6kh½ëm6ªø˜¤Ú}”~~>†³¸Z¢ÓÍBÇ—îD»Æbk¶®ÝOa¯ÈDÁEÈuÓÒ‰pTµNlÈHÇÙI•ì%\%ÚŸÙûµë›¬îRyÝÓá RÓgŠò.»)¤²Yý$.!åå,R¾[óÒ‰Ô_úÃ>ìú¬Ó#Ãjc+#pôÐÄEÑ»ÐV\;‡Ìu„úÖmr¤AM•/‚^ÅÖ¤NòR%£©ÊNCbhôÂNN¿ˆ‚~Ép†é y·\Ì’ȆK– gÙ¶^‡eïi›ö°ÐïÝoWaJt\@U<ïHâ¤Jê…:e Þó¯S²Þ91VðN:œalú$CvÚ+Óãs*‹Œy9Ë?û݉" -KwÒo½6¹‘ë0ë·mœÙšméíXu´¢Ã6÷)Á¢¾3ë„`ª²%Ä‘¬b«ÒïÈK•Œ§˜«ÒÉ¡ñÿ—¬*'\ -ª$ÕpÉM{.ŒI/ââå,.¾‹âK[M‚ªn»…m Óz|Ãkl³+}8!¬7hë–šì¥J&„Œ{`ÂÓɸ³VF<å­L‡3è{éàQ<(x«X×Ô^ªdRh¸ L¢éÉÿkD‰'ãÇq‚Ìü$4Ú|¦ö[qR曞ü¢Óùþ;'—Yendstream -endobj -498 0 obj << -/Type /Page -/Contents 499 0 R -/Resources 497 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 460 0 R -/Annots [ 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R ] ->> endobj -501 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 701.0189 287.3398 712.7083] -/Subtype /Link -/A << /S /GoTo /D (subsection.4.1) >> ->> endobj -502 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 679.4995 304.0368 691.189] -/Subtype /Link -/A << /S /GoTo /D (subsection.4.2) >> ->> endobj -503 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 660.1014 250.5519 669.6697] -/Subtype /Link -/A << /S /GoTo /D (subsection.4.3) >> ->> endobj -504 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 636.4609 237.9458 648.1504] -/Subtype /Link -/A << /S /GoTo /D (subsection.4.4) >> ->> endobj -505 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 606.1537 258.5888 615.722] -/Subtype /Link -/A << /S /GoTo /D (section.5) >> ->> endobj -506 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 582.5132 265.0368 594.2027] -/Subtype /Link -/A << /S /GoTo /D (subsection.5.1) >> ->> endobj -507 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 560.9939 256.9762 572.6834] -/Subtype /Link -/A << /S /GoTo /D (subsection.5.2) >> ->> endobj -508 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 539.4746 298.0368 551.1641] -/Subtype /Link -/A << /S /GoTo /D (subsection.5.3) >> ->> endobj -509 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 517.9553 248.5822 529.6448] -/Subtype /Link -/A << /S /GoTo /D (subsection.5.4) >> ->> endobj -510 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 487.6481 234.4102 497.2163] -/Subtype /Link -/A << /S /GoTo /D (section.6) >> ->> endobj -511 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 464.0075 366.4308 475.697] -/Subtype /Link -/A << /S /GoTo /D (subsection.6.1) >> ->> endobj -512 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 442.4882 261.2792 454.1777] -/Subtype /Link -/A << /S /GoTo /D (subsection.6.2) >> ->> endobj -513 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 420.9689 295.5519 432.6584] -/Subtype /Link -/A << /S /GoTo /D (subsection.6.3) >> ->> endobj -514 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 399.4496 252.2186 411.0179] -/Subtype /Link -/A << /S /GoTo /D (subsection.6.4) >> ->> endobj -515 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 377.9303 249.2489 389.6198] -/Subtype /Link -/A << /S /GoTo /D (subsection.6.5) >> ->> endobj -516 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 356.411 280.5216 368.1005] -/Subtype /Link -/A << /S /GoTo /D (subsection.6.6) >> ->> endobj -517 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 337.0129 245.9762 346.5812] -/Subtype /Link -/A << /S /GoTo /D (subsection.6.7) >> ->> endobj -518 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 302.4633 201.3998 314.1527] -/Subtype /Link -/A << /S /GoTo /D (section.7) >> ->> endobj -519 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 283.0652 266.9761 292.6334] -/Subtype /Link -/A << /S /GoTo /D (subsection.7.1) >> ->> endobj -520 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 259.4246 310.4308 271.1141] -/Subtype /Link -/A << /S /GoTo /D (subsection.7.2) >> ->> endobj -521 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 240.0265 362.0975 249.5948] -/Subtype /Link -/A << /S /GoTo /D (subsection.7.3) >> ->> endobj -522 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 216.386 391.7339 228.0755] -/Subtype /Link -/A << /S /GoTo /D (subsection.7.4) >> ->> endobj -523 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 194.8667 244.0973 206.5562] -/Subtype /Link -/A << /S /GoTo /D (subsection.7.5) >> ->> endobj -524 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 173.3474 416.1581 185.0369] -/Subtype /Link -/A << /S /GoTo /D (subsection.7.6) >> ->> endobj -525 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 151.8281 313.2186 163.5176] -/Subtype /Link -/A << /S /GoTo /D (subsection.7.7) >> ->> endobj -526 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 119.3997 336.7065 131.0891] -/Subtype /Link -/A << /S /GoTo /D (section.8) >> ->> endobj -500 0 obj << -/D [498 0 R /XYZ 117.8281 740.0018 null] ->> endobj -497 0 obj << -/Font << /F15 459 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -529 0 obj << -/Length 2435 -/Filter /FlateDecode ->> -stream -xÚÝ›ÝÛ¸ÀßóWèѺ¬ø%Š}»Ã%×+Z48ì=õîA±¯UÖæ²ýë;üeJd`§í¦°±¥9Cý83Ò¸(á.0¨&5.+QYâºØÞ”Ånþø[!ÊkTq®¾ÎÜ} Œ "1ƒOÕ ¨¤ÌÝ~W˜?ò˜2„%tõ JøD+ªøþñÍßa^àÉRââñcá½Üãö«áõ. Y½_“zÕôk¼jpiÕ}·Y?PJWŸ.ê2_:8>µ}{T æâǶžÕ³­’¼üÁ\mv}«/ô_x@¿=þåÍÛÇq<*´t õ‡ÅIå̤‚£R ->5tçeüǤŒ/&î])Í*ޏ`¥½TNé¸9¥4+£nE…XMIf¬^MÌùÅ«¤Ò*i¥ãæ4*t•äXÝŽ -®QÉA§*NΠÂ-*?t—ò0'“™t:&©·~z¶ˆ@ » Ýðì2#8ã}*nª"ThÆûX©œÞD–ˆðOõþ_{ŸY)Ó²Ò¦ÇÍi²Ø2Y©no'‹Ë -q*ëY^ÎUY²Þ­k¶2ÉOksè5ç&½îš¡â®"Þ9©Š°ç!'•SÐ"˜ê÷JújÎ,9T#r™¡Š›Ë —ìöäT$ %Ï"çä rÂ"÷÷OÊ{µýþÔleÇïôÑþoS'“RA$ÔÂb-vf1Êx*4ã̬TNoïÌ&z¿rg–4= +mzÜœ&‹/“•êÖàŒ<1±4–)F@ÂI.Éèr©œ€å½œÒR®$á6›R>¬6Ѿ ýófP²†…¿ŽŸ½ù¢W|J|pŽ.^^Žk¾Ã%Xî]gS”"RQ„JƦ;©œ-¬‚uõÔV]w;N&˜¥¥ õ—ÏÒàä,urz0}•å¯'˜…õÊ&¥tµm-1Só°[œT )¤œèÏG'•Ó0õº+6ÕðÛ ‹S65:Á”MNÜÜ<@ã”Mu{{0[ç4»òr3W‹ùY»ùÍ©·Ë›öóÐ/ -0S˜ V>º"£Ün…m‚ÇõDŪtPÑ"Ô,6ØIå  ˜#Q2:5à¿OáMI+Gš2VÆÍehJîí4 H’)Ë®“¼œ¡ÉUh×àÇ"ç}ë×β:÷'Wl!&Ìjt98Î0@Ùi¨×L†a¥rêû c¢þ+Ï0’¦€¥M›Ó€‰eÀRÝÞ‡”³lTôr0¶à®Bÿ4Xð wg¹mœ¡ -’'h®•™¡ÊJåt© -u~íT¥L¨J›7—£*ÕíTÁ')yvEäå U|BÕNñ³ozÏã6•}j?ËÅųAk6 “aˆZE¨TL—“Êéî ÌÝ_k9is€UÚæ¸9U½ŒUªÛ;°ÂA$‹•“3X¹ÚÎ{JÝáóç‡m{Öi}{ÜN+…¶Š¨÷6NÝf! -p‰q*£å¤rú«¸)*Φú¿®´Ô ¥G nNƒ&—AKu{;hTb$y%s y9šˆ@Û^wl·_œkÑZe䤕™Y=Z©œÎ~õ8ÑùÛ_=&Gg/3:qsjtøò>~²Û› >”C„D'WðñrJK\R¼\ý¢JŸêóª@‹š³ìO-¼œåJ®¾ïuêw㪂07h¨fj {qüÎpûý…>üuÐñÍlÙÆ©uEPU…ÍÿºËJå ¤UëDreà×n‘Ÿ”î@iÝãæ4BË‹³ôÝZƲzüm¡8ìå4B؇¯nÚ³; ¨£\m>˜3‚>R«Ÿ|á•:HôϽ¢cE±JÈ"TkæX‘•ÊiïëÁí«hã­”U ¾²Qh6È2ó¬”ÞjZ|§qÿBxâ(endstream -endobj -528 0 obj << -/Type /Page -/Contents 529 0 R -/Resources 527 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 460 0 R -/Annots [ 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R ] ->> endobj -531 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 701.0189 368.8853 712.7083] -/Subtype /Link -/A << /S /GoTo /D (subsection.8.1) >> ->> endobj -532 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 679.4995 354.946 691.189] -/Subtype /Link -/A << /S /GoTo /D (subsection.8.2) >> ->> endobj -533 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 657.9802 289.855 669.6697] -/Subtype /Link -/A << /S /GoTo /D (subsection.8.3) >> ->> endobj -534 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 636.4609 373.1884 648.1504] -/Subtype /Link -/A << /S /GoTo /D (subsection.8.4) >> ->> endobj -535 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 617.0628 287.9459 626.5099] -/Subtype /Link -/A << /S /GoTo /D (subsection.8.5) >> ->> endobj -536 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 595.5435 226.2489 604.9906] -/Subtype /Link -/A << /S /GoTo /D (subsection.8.6) >> ->> endobj -537 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 571.903 283.4308 583.5925] -/Subtype /Link -/A << /S /GoTo /D (subsection.8.7) >> ->> endobj -538 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 539.4746 334.1989 551.1641] -/Subtype /Link -/A << /S /GoTo /D (section.9) >> ->> endobj -539 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 520.0765 238.9762 529.6448] -/Subtype /Link -/A << /S /GoTo /D (subsection.9.1) >> ->> endobj -540 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 496.436 313.6126 508.1254] -/Subtype /Link -/A << /S /GoTo /D (subsection.9.2) >> ->> endobj -541 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 474.9166 282.5519 486.6061] -/Subtype /Link -/A << /S /GoTo /D (subsection.9.3) >> ->> endobj -542 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 453.3973 286.0065 465.0868] -/Subtype /Link -/A << /S /GoTo /D (subsection.9.4) >> ->> endobj -543 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 431.878 293.1277 443.5675] -/Subtype /Link -/A << /S /GoTo /D (subsection.9.5) >> ->> endobj -544 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 410.3587 278.0974 422.0482] -/Subtype /Link -/A << /S /GoTo /D (subsection.9.6) >> ->> endobj -545 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 388.8394 239.6125 400.5289] -/Subtype /Link -/A << /S /GoTo /D (subsection.9.7) >> ->> endobj -546 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 356.411 333.1444 368.1005] -/Subtype /Link -/A << /S /GoTo /D (section.10) >> ->> endobj -547 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 334.8917 289.764 346.5812] -/Subtype /Link -/A << /S /GoTo /D (subsection.10.1) >> ->> endobj -548 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 315.4936 244.7943 325.0619] -/Subtype /Link -/A << /S /GoTo /D (subsection.10.2) >> ->> endobj -549 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 291.8531 240.6125 303.5425] -/Subtype /Link -/A << /S /GoTo /D (subsection.10.3) >> ->> endobj -550 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 270.3338 399.6733 282.0232] -/Subtype /Link -/A << /S /GoTo /D (subsection.10.4) >> ->> endobj -551 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 250.9357 274.1277 260.5039] -/Subtype /Link -/A << /S /GoTo /D (subsection.10.5) >> ->> endobj -552 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 227.2951 383.0975 238.9846] -/Subtype /Link -/A << /S /GoTo /D (subsection.10.6) >> ->> endobj -553 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 207.897 290.0065 217.4653] -/Subtype /Link -/A << /S /GoTo /D (subsection.10.7) >> ->> endobj -554 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 186.3777 265.4004 195.946] -/Subtype /Link -/A << /S /GoTo /D (subsection.10.8) >> ->> endobj -555 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 162.7372 363.6581 174.4267] -/Subtype /Link -/A << /S /GoTo /D (subsection.10.9) >> ->> endobj -556 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 130.3088 318.4641 141.9983] -/Subtype /Link -/A << /S /GoTo /D (section.11) >> ->> endobj -530 0 obj << -/D [528 0 R /XYZ 117.8281 740.0018 null] ->> endobj -527 0 obj << -/Font << /F15 459 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -559 0 obj << -/Length 2432 -/Filter /FlateDecode ->> -stream -xÚÝ›[sÛ6†ïó+xI]%Ž{×C’N§ßÌ7§½h{AKŒ¬F‡ E5ö¿/Î rá‘;®ÝÉ$–ÄWÀîæÁbq0.*õ×H‰‹šU¨ª°,–»7U±Vß¿ÁND¹D‚sývâée‘3õŠ#©„ZeŸöë¾ø9ÒcÊnTWWu¥^QAõ¾½~óÕ;Ì \¡¦jpqý± »^ýVbŒðâŠR¾·¸¢”–íQÿdekßnëͲÝÚ7û.ÛÝâ -—Ý—©ËƒþàÓâëß¼½FÉQ%E[”8êE9»IS!Â+<¶)£«*úÁš&ýð‰Ïò’Ž3Á¯†=ªœëisÚuÁ“nk˜¤îöLÁˆã†>š,! ¸ÎåeŽ+b¹ú¾û¼PÿÙe·_)V:ÍÎ~Ašr°˜ õì^Kê²;&$ѱ†‘)HN“1“0=8™ùB0zij9Ò ÈœAƒC“4–Á êó ” Œª¦ÎcæuŽ3j9û¿é°½W™eRÓç[õÏæ¨ßﶈD®HwœÒåU9û­äõؼ×Ã×ãòª78Tis89ÔíˆS™ƒ×’e‰ó:G»$³ÙIUIÍLz´Ÿ>i‘ûªoõ »_ŸÚug?°0õªÛ&’Öæ“±3iŒ¼*ç3•qIÈØçËyš ²6 ¶6m.$U¾‘ªz ÁÎfúõf©_ùÚ\A¢>›J -ŸŸtvI‘! QLi›˜zîU9O±HÔô'Ï1Îúu)ãWÚœ©™ çų¯Õ‰T<7k‰»Yk³î=GÃÒF½=ì¿¶Ô¬:7cÙ9Iå n¯ç¨Á>ôªO×XnêsóÚÆÍ^ËÃ~ÙwƒKSÇ{ûÕö.ANM3BÍç±/iˆœ(ç1mªD=vøÌC ‘>°•isÚ̺šÇŒÍåyˆ«¾Â$›‡¼Îããçª_’–­fhÓÞlJ„E¨d>ê)k¿6‡}`ç\Ùï$™H -BX9‘‰œ*çË9žü«™ò+B ö+m.‡ÎËQ¢57Y”¼. ä¦´üšÍ€3Î.~úóIF¿¿7ØÍäå¼Àjá›;Q9UÎ+_œz¦Šô Âö mÎàƒçñwùD¦lb‚ˆìDæuáü[ß>Z@7ê/ÿì–Cº•¤²†äRq·Ë}§ÊYç—û#ãþkË}0Top¨Òæ odž7¨ÛËÓ“5Œfg¾ ó¼ù™oDÜÕ²í{w6ûµ+ì*ÝTå'ŸÒ\õ”Nuö¬€±U“ÎUÎx]c©^ŒFçÝ;#”q/mÎ Dg‚£zqÊb¢FŒÐ&—²‚Î!TÛ”õ³-{†^—I†“¡sBn?h{¿;ôŸÕÓÛÍ1ݱ¬=GÑ"6#Ma^•³6œ¬Œ¬}á'+ ëO°ëis†'6ÏÔíxb\ÙIJS`Ð9ž¤åiª×5ÑÍÆ¬ÜL1¾NgBe.«´óQï)F^•32¬ŒŒ|ý'+`t"Òàè¤ÍÒæWÀnŸ@šÞ¾‘<{:tŽ´Æ’ö¡Ûµv&Ó»Nš±°§ô{…™MÓ¦{)oœ;Þ"RÞ¼*gªB Õ oƦ¾dÞf ƒâÇ#mÎ6¿Á vë®'èU¶Jxv§Ì(Dé 猫’e ˜L-)¯TeÕ.‡¦ÉÞ5PimcwÔßÓĹ0–ˆ -‹¸×)¯ÊÇE ­åØ8™¬ˆÂ(¡µªPi-=üâ/@Ã/èltü匟º;3ÖúEØi GIf›%ìÃÜuýÄT­ëÛØŠ‰èT9cÃû óÌÄ#mnšž0Án/Oñ”©šËlŠ:ǘ»¨ñÁíÌŒ–:×ßúí]žÜ°ãŽ”‡Óà>OÊT‰ªºŠ:š.S*g7‘ª~œí~Y¸ÍE  Ž@Úœl~ vûÀHh“]üx™ÃËÝÏøŸÎSÛa³µKfsžéŽ®ìž=;oïìgîüSi‡CŸ^0cv8²hâ‚™eìË Øî¾ -‚üްýNËAôù¦*ŽdÝdoý£ÊÝÁøî`Íuº:íÍ¡h;„™/›Áå°÷零”ª³I[0™¥Œ*gè9Kņ¾’,E  Ž@Úœj~ìöâ:”Ô1Ži® :µuèÛÝBÍl7ê )»ÕÊlΨZtÝ·»]Û]eº·?hŸ´¼ÛÚ£uó¡Õ‹Íá¼~þ×Bèë´7…rŒQZħaðªœ_¡„ù%Ùl K¸*u©ÝÔÔH¿Ô ³õ%ì¯ ÉÊ~3˜­‰u•槉¯‰W?uA*UžŽlN‡ªWå,Õ"²cK_dý:7bÁ@œGl&isÓÌ„ v{ùƼ>Kaxþ È ƒÎ“å7æ¿ë»(ë·ç0½9áMØßap£9=|VG°¨›éÃg§ÊYŸGVÿ›‡Ï _4°_is9hÀp^M%‘l(ÍBãuwø|­7O; †Ý)M „+Œ‹¸¯‰#C§Ê™¤/ªS¦Ø#“^Ý™á,^P"¼à ¥Í¼Ä<^P·—ã…¥ªvk–£ËË\ÔÂõÍʬ]Â\~Ÿfß}±ï㋾3Q%ìmÝȈÔ5/ʘJ1GuÅèÈÔç‡nŽÈÅ34°‹IcdÀ°^NŒ²BrVg‘ñºÀ ³Ì¼½Ó;èç‹wq¥4ÜvÀF»¥ËÂÈ’ nœ*gðœØàDäe„ìeÚœ§ž‡ îÅë`Ì¢”g!è=nóîÛ“ÙXYMdœÓ±ëÝsX»‹æÉb˜#Á„(b3&ÃN•³6,†GÖ¾ŽÅ0+8is«ùC°Û'$%}Ÿ ‹ìo&ÇjâÎËêäo-¸rÉî[Ø–‡ÝçM8…XùJ;þµakö–?-8/§’˜4ŒÕElùÄÕ`§Ê9èïüû'i¬Œh­L›ËÑ'l¨’¤Ó¢ó†Iƒ‘˜¯Yf·_œJÛ5v}nÊ÷÷7ìi[‰endstream -endobj -558 0 obj << -/Type /Page -/Contents 559 0 R -/Resources 557 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 460 0 R -/Annots [ 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R ] ->> endobj -561 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 701.0189 286.0822 712.7083] -/Subtype /Link -/A << /S /GoTo /D (subsection.11.1) >> ->> endobj -562 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 679.4995 240.4913 691.189] -/Subtype /Link -/A << /S /GoTo /D (subsection.11.2) >> ->> endobj -563 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 657.9802 229.0064 669.6697] -/Subtype /Link -/A << /S /GoTo /D (subsection.11.3) >> ->> endobj -564 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 636.4609 380.0066 648.1504] -/Subtype /Link -/A << /S /GoTo /D (subsection.11.4) >> ->> endobj -565 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 614.9416 353.9308 626.6311] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.11.4.1) >> ->> endobj -566 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 593.4223 325.3096 605.1118] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.11.4.2) >> ->> endobj -567 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 571.903 384.6733 583.5925] -/Subtype /Link -/A << /S /GoTo /D (subsection.11.5) >> ->> endobj -568 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 550.3837 323.2187 562.0732] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.11.5.1) >> ->> endobj -569 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 528.8644 354.6127 540.5539] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.11.5.2) >> ->> endobj -570 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 507.3451 223.8549 519.0346] -/Subtype /Link -/A << /S /GoTo /D (subsection.11.6) >> ->> endobj -571 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 485.8258 318.8247 497.5153] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.11.6.1) >> ->> endobj -572 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 464.3065 280.6126 475.9959] -/Subtype /Link -/A << /S /GoTo /D (subsection.11.7) >> ->> endobj -573 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 442.7871 243.4004 454.4766] -/Subtype /Link -/A << /S /GoTo /D (subsection.11.8) >> ->> endobj -574 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 423.3891 256.4004 432.9573] -/Subtype /Link -/A << /S /GoTo /D (subsection.11.9) >> ->> endobj -575 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 390.9606 219.3588 400.5289] -/Subtype /Link -/A << /S /GoTo /D (section.12) >> ->> endobj -576 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 369.4413 255.158 379.0096] -/Subtype /Link -/A << /S /GoTo /D (subsection.12.1) >> ->> endobj -577 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 345.8008 279.0671 357.4903] -/Subtype /Link -/A << /S /GoTo /D (subsection.12.2) >> ->> endobj -578 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 324.2815 285.2187 335.971] -/Subtype /Link -/A << /S /GoTo /D (subsection.12.3) >> ->> endobj -579 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 302.7622 279.9004 314.4517] -/Subtype /Link -/A << /S /GoTo /D (subsection.12.4) >> ->> endobj -580 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 270.3338 363.4396 282.0232] -/Subtype /Link -/A << /S /GoTo /D (section.13) >> ->> endobj -581 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 248.8144 267.0216 260.3827] -/Subtype /Link -/A << /S /GoTo /D (subsection.13.1) >> ->> endobj -582 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 227.2951 324.4611 238.9846] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.13.1.1) >> ->> endobj -583 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 205.7758 230.0973 217.3441] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.13.1.2) >> ->> endobj -584 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 184.2565 307.0065 195.946] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.13.1.3) >> ->> endobj -585 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 162.7372 308.3702 174.4267] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.13.1.4) >> ->> endobj -586 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.1956 141.2179 276.6429 152.9074] -/Subtype /Link -/A << /S /GoTo /D (subsection.13.2) >> ->> endobj -587 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 119.6986 386.643 131.3881] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.13.2.1) >> ->> endobj -560 0 obj << -/D [558 0 R /XYZ 117.8281 740.0018 null] ->> endobj -557 0 obj << -/Font << /F15 459 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -590 0 obj << -/Length 695 -/Filter /FlateDecode ->> -stream -xÚÅ–MÚ0†ïü -®Çß¾nµÛj¥^*ªÚ=d7”¢‹ô÷wœ08Û­Ú -‘ØñûÉ“q€pü°Ì Ä*Î8GžÖN8ønHjnj֡{at*qÁ¹Â–f…AÕŽÖ Ò6>ô =¸(™Z®H#à 7³É›;Ð8óÜ™}#Qu³ê ÉÅÔ(E?NÑz¹_n - ‹b*¥¤ûïóÐPô}¹ûQG± tU„#(·ÛÐ[>…ëå>4Ÿ7ÅÃì~r;;Ƭ$3Ö’¡Å4òN4ˆTž%åi ¬˜jÎ'å}zñwÇÎâPF3m䉪±HÒéB$Î%ËZÔ“b$‘Lƒ—/&Ç8Á Ø1pzYäF¶Ü¼}^‡‡¿ Ï~µÄãæ*<«ŽšE]®››Ê:eÅ0+­!WXéD#Þ#+Cïÿ•\GRòa$“5œø«œdS÷zL 0îí8'½.‚¢ZPnËP+ªcQ´l¨7»@ľ=ð¸¿TJ8N(„"C7i½jÌ´ä˜ ðæÔôß!äO Ê; (l:]Öóëesüz¤GN‚Ôë"HºéÓnÙ×˜ŽŸåqwúÊA… j~—°¸Ã(cÈÐ@WTùÄžY£Õ©ÏÿÆÎű«@å20*Ÿtº1 rËv_FØÀŠ!ZQާökK K|‰AGÒŸÐÔË:UÃ$©9½]RÐGì:¯ªy…-×íNe½k{X­šó}³_…~&®sº> endobj -592 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 701.0189 344.6732 712.7083] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.13.2.2) >> ->> endobj -593 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 679.4995 347.7339 691.189] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.13.2.3) >> ->> endobj -594 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 657.9802 304.2187 669.6697] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.13.2.4) >> ->> endobj -595 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.2866 636.4609 274.6428 648.1504] -/Subtype /Link -/A << /S /GoTo /D (subsubsection.13.2.5) >> ->> endobj -596 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 604.0325 295.1809 615.722] -/Subtype /Link -/A << /S /GoTo /D (section.14) >> ->> endobj -597 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.8319 571.6041 221.8315 583.2936] -/Subtype /Link -/A << /S /GoTo /D (section.15) >> ->> endobj -591 0 obj << -/D [589 0 R /XYZ 117.8281 740.0018 null] ->> endobj -588 0 obj << -/Font << /F15 459 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -601 0 obj << -/Length 893 -/Filter /FlateDecode ->> -stream -xÚ•VËnÛ0¼û+x”fù”ȽmŒôÀ·¶Õvl!¶•(2‚ü}wùäX>È$G;äÌîRœ0øqÂyN0œäŠQƸ!›Ó‚‘=,®<€¤64Ó‡«Ë°L–"SÔ² Aä…Äuæ_{YHÁÜ@('?ÝŸ8ùV-ä¡ 6%ÈRåš2«Ý®¾®Ÿî¤!\Q©2AÖ¤*)h®eFÖÛŸ O!‚ÐÉý9•EhŒ¶ÂÁ„ÉuòÅ?V5Χ“{¤«ÜG\ÏmU0»·T²¤r£'OÎ5á ³< Cu¦<ùú°ƒ RALžìÜN8!“Õ–¯pÀ+v[¿ðˆ,øg +å/Æ¥?:§ÂàVÒsÞ¿~Æ=-¾¯[Zm¥Ì©µ2ô¾³ªsV)Þ?—Šr ùÕâð”°¹ü†XZš©LÍGÔ-ñµ®\iʳ×ÄEðßö¡r €Ì!žQ¯j_§!·4T X°—×íßPäª~*Ïfç0=0O~£û䩉Ã@rMUn¦À:ìP“ؼþS¬üXÇÔï±þøNHPÌÈäèÄ:ï/Å~7d –Jž«Ä÷»,ߤ"OZåS¬J w*êPI›"àÿ¤K€†|«Ë¦éjgÌ#aµ™P3&õaS.µ¸Y›¦‰[ŸnˆGŒº"žwª9ìªú}È `V™ÕWxM«KÓKýVù«$”ÐýEwöNqWd ‘ÒõÈ#¥B“ôM* -ßhª«Ëµ_˜‹kÏ0W—@Váß»Ÿ¼ÞÃsøß^Y¿þý çmDúd€ÝÀ¥àï„ÈâSÓ7ÍPª•n·GwJ—»Ôõy+Ç ž¥ÜîüèÝ5’ËxÞq:+9—w=ØdÞEÜ|ÞMwy÷‘x,ïúÄMå5Ü‚­èª½¯;ô 8ÜXj•ÉgÄéæÄiq³âL·â܈sEÅÁÆ%‰yøïw -Ïrª qç¤éÁ&¥‰¸yi&‰;i>IÓ'&ÖeÛïCËÁNÑ^x7˜x7¬F”ôªÞõR³mZE¼BªÓ34ƒ_˜Ýç–Mšq#,§™œ+ß4 …°Š*aT …JÜè¯òŒ*ô–ï/ ³¬öendstream -endobj -600 0 obj << -/Type /Page -/Contents 601 0 R -/Resources 599 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 606 0 R ->> endobj -598 0 obj << -/Type /XObject -/Subtype /Image -/Width 320 -/Height 240 -/BitsPerComponent 8 -/ColorSpace [/Indexed /DeviceRGB 1 607 0 R] -/Length 976 -/Filter /FlateDecode ->> -stream -xÚíÑv! Dáÿº¯µµ=.$!3ÜyW'wdWMÆ@!„B!„BWk‚à!°ÿ UrP AÄGì Ÿ± Å5ðj^j ïÔ[8ÐëñF7»aF´÷L ô -‚¹1ºÌÏ™`Ml® Ã2$X’Áá8<‹ Àcx<„>ÀÃ9 ž‚çíKlá]`—K/š‚}lKlåY`·K.–‚ýìJléU`S§*ÛúÔØØ¥ÀÖûlî°;Àö¸·A ¦³E‰®¯I‘««M™¿§Q¡̾÷—÷ç½j=aß®_ð |ðøîåÒ|¬^ÒÕKú‘~ˆô#ýH?ð!V/éGúÁ±|I?ÒôüH?ø±|I??–/é?Äò%ýà?ÄöGúÁ~ˆíôƒüüàÇñKúÁÁ~ðƒ‚üà??øÁïÛGÕË'ýù‘ð»‰ŸÝæ?øÁ~ðƒüà?øÁ~•ü¦)¿’ØÌù øÁ~ðƒŸú\ͯ(2k~~ðóç7 ùÙÅu€ß€ünà7íøù=XªçG¡$Ãošñ›Õ¿Ì3ä7àG²Ÿ in¶~;ü”Òݯ¢¨Íù«z¯ŸZO~*¢•~%—ÌîHqt¶_ÀO"é+ŸÓøO©¿1üÐíûÄê®{Êsèá6üÆ9~S<²£ýøLøa™€UÏ(öÃHç—ýGòÃíDR/_¿ãÝH3 äókÐÌUžß8ÏoÊ]š6é—i¢âþ°A/*i~£¿)_›NàYFòïnšt’K²’_œø9ðK2“~o3†5ÀìÒ| o€¹•y³.¤ –R ËnM\šfÖ•ýšàÆ»J,+;ö÷•WõlÁí,­(êÚÁ:Ø[VMÔ·x¬»¤’¨sÿôP9Qïöó‘S -¢îÝû=fÔCý‡ĹL(‡fG„ùŒ¯†4FoD9 /†T&—uâ>Ê…¿ÄØ=ɵææD=ÈÕ¦\òÀcHphÓ¾í¸SHsæÕ®ñ°eéí_ú #HxàÚÞL¡íȧ8¾Íˆ8ä§ýmäÀþîi1,q9ݽÓeÔäj,ñ;á[gkã4›sºÒƶi8%öù€ÄÕ5ïHo%¶µïJïy|+ëÝ™ÞKŒ3˜ß¼Þk 3Œß¼†Þhg¿y½ÏcþÈð~þGèŸäç¥ôÞÄÿ›À?TЇnË |AñLýÄrA†m¦½[3Û2D`­RB!„B!T®/±ô Ôendstream -endobj -607 0 obj << -/Length 14 -/Filter /FlateDecode ->> -stream -xÚûñçÇŠåendstream -endobj -602 0 obj << -/D [600 0 R /XYZ 117.8281 740.0018 null] ->> endobj -6 0 obj << -/D [600 0 R /XYZ 117.8281 458.6565 null] ->> endobj -10 0 obj << -/D [600 0 R /XYZ 117.8281 421.9506 null] ->> endobj -599 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F41 605 0 R /F39 472 0 R >> -/XObject << /Im1 598 0 R >> -/ProcSet [ /PDF /Text /ImageC /ImageI ] ->> endobj -610 0 obj << -/Length 2243 -/Filter /FlateDecode ->> -stream -xÚ•Z[Û¸~ϯð£ Ä\‘uÙ·´ÈÛ] @;@QìîÇÖØBdÉ•ä$“_ßs!)ÙÖe“‘D~⡾såqä&„¿r#e*2•ÉM‡" e¶ÙŸß…›#L~z'-(Ò™H´ÆÇ‰Ù]œ&"Î"µÙùÛ󻟞¢ $ˆ\kµy~ c!£$Ú<~äv'¡à_©tð|:™­ úí.J“À´ß|z«Ž-BÌùL—¶ãÑkWøîµi·>ÿã§'©72y˜Knv*:‰S’úÀŠõp©³iq,ÊŽç _€(ðG(c¸¯Ë¾„KSótóÊoYt…ëÕÇ«9‚'ž¶Y´Í™ç{˜?9 ³K¿çW%LD„h´Þªœ¸Aa¦†á~.~ŸŒ„ŽsEßG;T—¶ÙîTìñõ¢Ã»_<â|ìúþ šz$( úŽ× wMÍ/„,ømÿ ¸Ãò ¾D8þ3îìÝÇgo+ÞÔEœæ“åQ»1Œ *–cÊì({ó8ütà,}å"‰“xE°C= -ŽòÁ±2 ó[Á´F ÙC~'ì]$‹ˆ¯üÌŒö _Mmª7x“”d îO[Ï -gÝÎR&"ŒT´Fí¶H­Ã­S»(x ö^ðµcÁ“Z˜ÖüÝôtƒ`9IE*óhšåcá4ä ×ôžmë5z1Î,P­3ð8™d+TaKT{Ü*ÕË‚=Õ‚g¨¾Ü·¦F3®Èåûrš` ¥¥úëfì˽Ó=ÖµC¸tD!~³Ë¡|h‰8µ‹ì(]Ä™‚©C;î1„áaq]aEÒ ¦ãQÃHßö•iM?rˆºÀ@Û †¿Ò³}øz*÷ˆ=ñ£ód ¦˜ŠÙüVŒÕY°gèbµÒIЛîsÇ·>$+­‡ïÁsí›3hno*PÍŠÖnû xä—Ú‚ñ%}%œ<Ûµ!Õ¼1¬6ß2¦7´»Ï¤ç‰¯áÄ -mé-’Sâ~ÈBp/_¶(¿¬Ì š›U1Ø´Œ¢”&Ñútï¬j>µÄY.â$Wœr [rJ[uÊeÁÞ)Ï8åàsÓ^NMÕ)æb·;(eØ yê›O=Ý”¿Bm%tš§ƒÃÆyèëŽh4מǩJ)øþBÙX[„‰—ÊÎaº [ôeαÏèK¹Ä"‰üÕïâÆR¾¢14í¡›×©¡t[Ñ鶨S‡[×é¢àA§÷‚çt:<¡Ó¢D÷Vo#…‰¨+§U…P=+}{ÃfU1è^cìô<‡u³dÏ·E•¶pý¤Í.©v•e°Ã`‹*r¸u- -Tt/xNEcÁ -1lQñÁþXÔE;›e‰T%É_×KËy–(¾QFqe:eÍÒÃLDi¤×HÁIw¸uÒ¤ß ž#},x~qå8þ0"°]¬ùòT$9”â?îÅ·‹?_ q®©ç‰2-2½z~Öˆ÷¸Uâ—{âÏ#¸o‹âÅÔŸ±±]DÈœÍCGÕt•*ç'Xޤ˜ëi°*]îîyà ^{Ï=Z=¾ñµ„jî0Aè¹â¡º//ãQ•^¥|$ønv6Ÿݤ˜~Í“¢8i©5…Ž`‹ -u¸u…. -z/xN¡cÁ}aö˜KN|z:²CýïZ~ÿnéžPi–‰TgwÙ¨>›*(IPB¸`Uˆ9ÌÕuõÁ½@®òáršv• -•¦Éí#Ø"í·Nû¢àö{Ás´Ÿ‘ókÅ5QÅ%<và.Fw¸ö§¦…‘é2-ÆG×XBmÐäMxoør°ç„ë¹àF —X~É08}ãÑQSªãrÎeœÐ—a×Ãʼ7ÞÙš«sb¨ä甪r)”TkÇâ1lI©·ªÔeÁ^©‚g”z#¸»`X´qн -4äC»çÕóT+"2Õ#Rx¾Pµ|v¹æ»=)«ˆúŽé¸ð泩;FâDËÅ[sD¡%¹¿ðÖõ>ó3ttóFõ5jÎŒÏSd¹1œPÒQGN6$ø¾’kTûO|k°^¹PpßÛŽëŽÂ¬ùxûb:Û„GmøµÄÙ -€ù$v©|ÁŸ”ôüIoŠDžjwè)k>u"è_Jߥƒ/—Z$*¾;šô\¢±Åo]?„«ãÚeéÒ =TÖOiluá*Hx›b¨àáßP}¯Ã)<ãzd´²}Ò⊭ÆûS9 –¾=a\…¿¯PÓ‡ù®•†R¹z˜ÃÝÓáÖÝsA0 ¦®(ÍáH{´Sÿo|sjww𷏛Í}¨ðTj[è¢Pò¬0ãP«²–ó¡\søÖ/L¥$Yí¼u -G@%d°yÐûÊõÕìí vÚFËqŠê¯8Mø²Ç8€¨?BÞ‹K²;û8ü–AB„Ñ}B8VewzÏfö´Í0Õ—ìà¿¿Þtÿ 匪LctòÅZÁݶd‡·j‡K‚Ôv7m‡7›ûµøï£ &"‘‰\!Å¡VÅ>,çj¹DQ¤H°ˆeÙÒšËiŽ©Aû 2ekëF¤PåÛº}qæu(Íà> endobj -612 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [144.1047 206.9911 169.1275 219.8927] -/Subtype/Link/A<> ->> endobj -613 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [144.1047 171.5324 167.6124 183.2219] -/Subtype/Link/A<> ->> endobj -614 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [144.1047 134.8616 176.5518 147.7632] -/Subtype/Link/A<> ->> endobj -611 0 obj << -/D [609 0 R /XYZ 117.8281 740.0018 null] ->> endobj -14 0 obj << -/D [609 0 R /XYZ 117.8281 715.0952 null] ->> endobj -608 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F41 605 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -617 0 obj << -/Length 2579 -/Filter /FlateDecode ->> -stream -xÚ•YYã6~Ÿ_á·È@›©;oÙÅôd²É˜x1É>¨mµ­Œ¯$Çûë·.Ò’¬îÆ¢‹G±ªXüê [¯|øÓ+­•šT¯’ÐW¾¯ÓÕ®~ç¯0ùᢠJUEØ]˜ÝÈ46TŠ%"dV›Ä•âÉþ¶}÷ýcjø*ó3½Ú>¯tÓ(âè¶û?¼?}¬ÿ½ýùÝû­ã©ƒLÅa®Æç‚#Fal5Ç‘î SŸÆê…‘Ò¾^ÐNGí„n¢ÜçuzÅz£½§µö~üeÞöNÛ4U°ÿôUm7ŽêMEîØ¡&?¬7‘z9~"¯^›Ä;ƒJÕPVð)›öòЧhwyÓWùÐv¼°}æo›É‘àXH»„ÎŽšÓІ¿Ý®ì©Ù3×?ýÈGay³A¬6a t -ç¹ÑŠÂÌ¢‡s~(zP7Bïïùó’¼÷ ôUÙeà¥7 þö(ë ;…ÖîŠf·6©gé‡ùS¾Hÿû Iã=ÚÄ̓âúîÐ,jã8U~¢ã7°=&{ ÛŽîMl¿&øÿÅövËØž(÷Ïs]txäh»àbMJ†À™in‚XâÉë&sTo)uÏNpŽú4x”iBúÓz¿t²ÏÓQ·ÝžuF¨=wÐnkîhÙUËÝ,Ë`>ÜG$§)ÓT´qF- -°`ÁÇèÄþ&aD -n G¨c¯?V€7r’¼¯ü/xSÛà|D‡ßœÉ]^×yÇTl4·ÕG)«ëü‹CsÏT(càæ‰ Ò’Â}ù„'VŒ9Ç^‹k@v¸ê£.|ì°qC„ÙØÈÃÀ ÙÜ0wØ&>ò½áH΄¥|mÿŒËª².‡bÏäu.B1j±â"ñ -7‰ıþÚ¤E­–v±=¢‹›8ñìwf†&NÉ&ƒ ž¼ Ø¢ª6ûü2lì÷LG{+êœ7”»žÙà)ºé±ÉppßÖ`á^±€uk>ÇŽÍ…,È>¸ê+G꥽q°eÄ"'t žC xé -!É« -, -œ¾ ²‰¯ëL…0äßütªJd±³È4vâLz"{æ2‹À% -òÌF±ø­¨d¸ëL' -º`Ú€‘S°%™Èz'9– R•%A4%Ä¡u´Hy—ŽÀÏhh˜âim2ÒÚ•$À²dÅ_g‹×Á’;xïò3&6$&»2²ºLN²,å)•Ð!~öKGÉ €Ù yçi$­î˜V‘Î8¿ÿÔ¢µ£_çwœÝLbpTÞ„/ Lä}xäñOœ`ZD› 'mZ@Š_Ê'rÍîÊýcÞs£›,¥HÅ÷[žÏ­ðÓþ@çÕN ®u®@¦O&>½Ù 'á¨s32Ìæý"z4`=b9fŽI²ÙR’Ü6BÈÀÆ!Êæ a¿Q‡ü„Eau«c)ÔÉyùÊh?žÕ¨²1Üy ½ ‡cië Ã…í+^˜¤äÛó—k€¶ïmðT¬åïÅúq9ÈLÎ(âŽ6Pü‡ x ¯L9 Ô¯xÍÂɶçÓî - QD1È;œ™î%¡®JDOÊ{šª°Q6? •Šìx˜­‰=5%4K·yò%~›vˆËt7 ú?Ù½ëô,§¼N9™c£»ó%ûÀèÈ„Ë4 àB r²wI|püÔå;Ø=…wèZBÙyö R1 ²>:ŒÂÒð†»QTa€¦FUqã–†Z§àô^†T J!“ÙÂPIY0ÎnE'ÚA – ;£ßôXÚEùDå !™V‰£§P-¨,Š z,, ¸šŒ–i…¤ühLŸ)2’G^)¥-zð@¤`qïŒKÚ}ST[˜GSáEâV"=b˜t¥\ŒqÌÎIÀ®®,&4NT¦¸ ZtB±JS¦Ì]eƒÊ¶LRÙs#5¢ƒ]Ö±÷ÃÐ(X-ú°+ÔôÜc0\áèGºŒ\QDä-é;Ä‚¤½ïzvÌ™½Ÿ§omc‘WœY#a#Ì‚ÒR빚«ÜMD6P >y`_Ñ {!Ã¥:Î^2JñYhílDIʸØ1dœè´ßjÏŒ]NÇ9.¢wŒZ¼.ɸ•Ëçy¥+eó’0àÂÈIê‚ï”'ç¸Tæ·g¹—žè,–ì³Å·Óønk}ëv‹Åâzb¯S"ærÂÞ%[b¸³÷²C,PP!Ôs[ìäêjÍX -éPì–56ŸrÍį64Br|_Ÿ`nyéþSÜ¿•¤J¾^™,âøï!–~3^°ô rÇ•øÄ¢Ö™5ñO¿áÖ?o»{1™JÓ8™)8±To©uÏNjbT«üº«"u0Âa?¯xÄ>‚…P)]J - 0úÃ~à;9Òq"è,cÙî- -nìKˆQ~”Ϊ¨š¼<ˆR¨Ã›Ã"åž(Ü‘­âatZ/ Ç^hômõÕåzèOª‚À…Y¨â—Ëž©H‰FI¤Ì±¸€¸[ ¸à`ôȘØ+rWƒ08·Õ!gN#i&nûã>> -'~`|&ö5Ó2dx¾vðÃÞŠûž{¤'|éÊ ²ðùËÕô_|·|`¢²>¹¢­– (ŽôÚ+ä{÷Úò† Ó0ž¦£"™Òd´Q“%èuĹ.š'J®MÊ­ áê ,®T‹q{E‹o¼ïæû¥¡ÊùòÀÝ ×Ö7yN¾­X«AÃ$V|ÞÐÅeÉW”D$ï²xyU Yýì¼äº™Fļöÿh݈–|" UhÀ„ -åesya«0 Ì‚¼ÿ1e½endstream -endobj -616 0 obj << -/Type /Page -/Contents 617 0 R -/Resources 615 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 606 0 R -/Annots [ 619 0 R 620 0 R 621 0 R 622 0 R ] ->> endobj -619 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [144.1047 700.4128 189.279 713.3144] -/Subtype/Link/A<> ->> endobj -620 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [144.1047 664.348 237.461 677.2496] -/Subtype/Link/A<> ->> endobj -621 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [137.1338 292.357 230.883 304.0465] -/Subtype/Link/A<> ->> endobj -622 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [116.8319 216.6409 215.1962 228.3304] -/Subtype/Link/A<> ->> endobj -618 0 obj << -/D [616 0 R /XYZ 117.8281 740.0018 null] ->> endobj -18 0 obj << -/D [616 0 R /XYZ 117.8281 421.6731 null] ->> endobj -615 0 obj << -/Font << /F41 605 0 R /F15 459 0 R /F39 472 0 R /F38 467 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -628 0 obj << -/Length 2350 -/Filter /FlateDecode ->> -stream -xÚYO£:¿Ï§ˆÞ‰HÆÌ“f#½žÝ=ìaÕRöí&„x†„,éÉ|ú­&@Ó£QKÁ.—ËårÕ¯Ênµ‰àOm”ÊB[µÉLF‘²›òô!ÚÔ0øùƒ&Ø0M쮌îL–†Æêx³› -ùôôá÷Gma…0O’xót˜,™PéTožöÿ Ôv§‚ÐÀ¯Š“à {Çj»ÓY”íV«àþTµŒ´Ø;p{ðì¯uŽø›íŸþùû£J6* -ó(W¨G´ÙÅ6LR“‘O8?¶y0\·*ÚÎÁ4 Ø vß¶± *Õ3OÁŸ#pçý–è*صgžáÎ8aè@‡8 ö(°D†ÁyT%ÔŠ8áà©èxì•4º@ -êyŸ·Ö¢$­7È50å—¼áFqgJ‡‰ÉcÚÙ ®ïTÓk0’R¸üô'¶OÃÝ¥6H;©•6ÛûöT€nÔnFÔE~q½?xȳh0×c'†ÅЬòÀC7T¿½r§,Îké‹-˜ó%!1«2 -ô <¢/•\#·*˜ÝI‘ãÚ_9éL-m˜iÞÿUÖ±–NÅ»Àß¹i­zfù2æÃA\zÄÂ÷“äÂÐZH¿–D¦ì?K"#nã~Á¢ ±û -%Çw±ÙKûâ~ü(¦ížtÅ4ßܹ½_ß~¸¶oeŒ¸ùˆ›JœM«æCÕ¯_1ƒ­@a¬C Á"¸p9¶··5Á)$]c¬ð"™„7L '"ög$Œ Ñ—›”å=ûÂö4.™â…»Aó‘ªY¦k½Ô¨;¸®e&Uï”áX´'ŸÆt4æ]Ññ)å‚FEœŽ™c©–H× -eCÇdhˆ–b©žàÛq†n)a•²²Ô „EÈ+ïkõöì• f×H‹“AC,Ø÷û¸|¡®íXûLOêkŸƒhÇ=O›U§3ðØód^Ë®À*d¶§÷7Äú0æ¢v -?”VhdÌ$&Ný.ünÔ÷~S/MÅ#hnC–•‹M¥ü$b˺¢>Í’Naƒ,¹j†Ž™++ZÊ;0 -_ÕVö[}/&®ò4~·ôb²û)ËMy^ý!ÐÓl¤(J‘€·µ+]÷L(øs?zWHÁÄsŸô/00»Iá^ÝêÛ¢À›‡Üîo òÔD_ÿÎ9¾üMŸ:)j¦RL0¹×º~p¥<΂)nþ~ã¤j¨ä%ë^‰Ó]çÍËèêëJ@à'Ïسôý‰#ûx‘Úü^9ÏŽƒœÕù—äEJ“Ð*£G'TKÀ51€³‰…qîB~ÕB¦K‘æPaeÙ0UX(Î.œíë+j¿'“R]Âe–ÿùJ}”"ƒîA™ZÁ)28áûùQJ™gŒDçß]2}GghCŽÅ}¹œ-oõ(fÍ 'Ë)¨ ÉÌD¸ ä«v¾òJ¸‹üôjÆÚxUhGg_gR‚Ïô6| ÁM·~¨NL=4ßÖWë¿·þÞ“}Å4/=µß4Ε@ÓˆQò~;/¢äß'¹ -S­WŸ9GžÝiõ•S…Y¤FQô˜h¹àø· þŸwôendstream -endobj -627 0 obj << -/Type /Page -/Contents 628 0 R -/Resources 626 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 606 0 R -/Annots [ 633 0 R ] ->> endobj -633 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [252.9123 560.0329 294.9953 571.7224] -/Subtype/Link/A<> ->> endobj -629 0 obj << -/D [627 0 R /XYZ 117.8281 740.0018 null] ->> endobj -22 0 obj << -/D [627 0 R /XYZ 117.8281 715.0952 null] ->> endobj -626 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F47 632 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -636 0 obj << -/Length 2176 -/Filter /FlateDecode ->> -stream -xÚ…Ymã6þ¾¿"(PÔL4–üÞ÷a‹›í]h§Øwý IœÄ[ÇÎÙÎÎÌ}¸ûëLJ”_’x&èb"‹ERùPÕ ŸþÓ ­•šT/’ÐW¾¯ÓÅjÿÎ_l‰øávLA”ª8Šð9C]†I¬Â40‹åTÈû‡ww÷:Zh_e~¦›Éf~¨t‹‡õ?½‡›4ðê›e¨C¯ÌmSÉpw£iÖ¤Þ¾#¯s,OMA”.—Ù÷ø ¼mc÷û›¥ölCÔVˆE+Kªº“A¡ne]Ѹ|¶¶¥Œêc%ê®Ð»r [ª›?~$»—:PQ˜6áÓMB®É|ï©(!˜>Ò̳e[Ë(>`Þ¾SR%¾n¡w'ÓÅþ€ÇÛu¶‚:a\ÕÎB(¾neꞈƒC0Ѿ8±l°ööJèŸØ{»9+zïÿèo™ó-o1KTR²ÌelX[¬lW°G[Y ½‚È—s±Í°ô¸º1 -m+³]cÝRe¡2d‰|ÞyNÛÁ÷b ÂKkù›·²• É °ä‘×—˜®a{.4dSìu`ª¶“U«¦×ŠÜ â¶:ŸŠÓ¯ëÁÙb´Št&Wà#7P§:À¯¼n Z@î¦Y¤bÅÃêÔü :+Ãz7ó¢VÕ¶;b+[.K[mÁi·nß›saC,ï’;î0XèÛåÜÉ”5 †é:•`>[Å õMηû þȆ ¤^“ËÉ6n=,njŽ£‚ýN<¸DøeÙõÞqnYL5 vØ`w«ZÇZ²)³Úoäº,Aœx;hwta#¹""]ôRFP±ÈÿåëèEf¦·ß.™%HføÆ-Åï–•dÏà–ȤeÓãac²gí(Žc%v8žëY3ª\Ž“¯Xæîcêý`Û¿»DzïåAV á{¨n]Þô’*‘4(WÀ•[!Ž)d/\…ãþÑÊaG‘geÆVkGÂð Qc2‘ã$èæ,;@Idç8a°©NÛî‰bß9&ù!Ò¡ÉwyÕ}äaz/™öÈU æâÀóH½ )~MÒ§õGNÚdFÇÁ\ÚWÓ˜!`üþóÿn"ß§ÀŠq½ c$SJêÊ$&%E¨ybIVÿ@j‚1#àCyßb†›bÃ=ÃûÎ\¾¹-&ú†aÝ^&OŠÅíŒü*ï{ |Yù9EŒ¥LNz”¢Ì%³®“Ÿ)§ü¦¨oYB™ÌëFоrÕVÝI €qËA8ÐQ:I–Ñ7ÚшÿÐÀgeþ‚Уèb8‘¦Ç´J8Þ÷ß²ëfoKjg¬5Ê2ª àþý%!½ÝrÅ"LâôÀz©È­øbp*FéE—s›J²ø–VØ,ãIâ«ß篪PÁŠ‹ƒ åÓ+pV"Üc‹âê?ól;¾‘Aì²þÒæa_Ž!øóE˜ù$Ó|´ôó[†gYßîò²TBøI‚íøìØÅÁÚûèâü?ÿ*s¿ËÏ±ÄÆŒsvvÚÇ¢7.:×x»zOùqÅCæ».ÝYృ+9eô_Ke÷®?ÿŠX©¶¸æ_)¡~âÇ5×¥_ÓWÚK:»†ùú7žœ«`6üz!‰ÇZ ï3wÕ¥p|Ͻ=ÍFP¸i†;)¿qð>OQ†¾±ïI‰°é‹û¹•zÎûg8žc‡ãá8«*yCHb÷6“8„?à÷š-a¿§'¯—ƒ%¿@vg@®‘Äð¢Õî1É+w´`xp³Ç“»#,:'üóqäp‡‹v´ï).j7Á¯$ˆ:Fñ‹OpïL wÜË)û.7e3 ~}³¤ªêm7sÞ&á*ŒÂ°¯ŽR}ñª¾¸7 ô\ )¡üÁçs~y²á}8âãÃý7îÑ80RdEÌŠ›LJ3Ó¶ÜÊ`¢/ðX>¼*Ó¼î^^.È~jL`B>+þ6gpªÂ”BËw]+o€‘¡BêÁÃl¶¸î‘Ì^a™Vq\`#Ó ¢T¨_¢øŠéó ‡ÿp¹áÿú3Ô1endstream -endobj -635 0 obj << -/Type /Page -/Contents 636 0 R -/Resources 634 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 606 0 R -/Annots [ 638 0 R 639 0 R ] ->> endobj -638 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [297.1352 570.8029 591.2154 582.7955] -/Subtype/Link/A<> ->> endobj -639 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [116.8319 470.527 319.2768 482.5196] -/Subtype/Link/A<> ->> endobj -637 0 obj << -/D [635 0 R /XYZ 117.8281 740.0018 null] ->> endobj -26 0 obj << -/D [635 0 R /XYZ 117.8281 557.0744 null] ->> endobj -30 0 obj << -/D [635 0 R /XYZ 117.8281 243.5046 null] ->> endobj -634 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F38 467 0 R /F41 605 0 R /F40 642 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -645 0 obj << -/Length 1709 -/Filter /FlateDecode ->> -stream -xÚ¥Xßoã6 ~ï_æ%Ë¿:ì€u[·ì¶=¨‰“µ­ÀvšË?R”œ¸U“†>D–>}¤HФÊ'!üñ ç)ËDÆ'© Yòl²¬oÂÉ?Þp ŠâŒ%qŒŸžÕY”HÆÃLg±ˆƒmQí¦ÿ.þx?çñù& g2–t,³Ôl:”U5EQlÊç©È‚‚¾Ž8Ö{úPø#ƒjʃ²›ÎxÐÓ¼^»u?Oã$Pe¥V´e©kÄתYÁ¬ÙËP98ðLpóœtÿ¥#¼"Â%u]ëæü»™Š‡]²ò€»jåË‚+¿z­<üÁge¸ù\ðè›ù#¬Ï‡«g¶¨æÈÈpõÁ¹äã°ØâMÚ…ééæ ™ÝVïñf¬h ©tOãqÇ|˜[d¦¶Eg†™Q´Õõ®ïÞÑf…}O¬º©Ž4‚´lrKStŽHYèZW•FI·2åtýkF†Œ204‹d"ÐW¤`Bä™9š˜bVMàˆxÑÓ²l]bÞJe°ÁVÙÕâ$HÄ3š2_ïóWh, AéëÁ©eâ,uf°½-h¶-ÔêHs½¦©ýz¤±Þ[Ïž€ -4±*ñ«³€ è ú2¢ûŠ ÎJézÕZС[€nÈfFæ–„'à‹e.Ì 0[Jð›ó0ލ_Ù÷6ÛÂ\”Óah|‡8t8D7ªfƒº«Ù÷ŽÀö|òqÔ&—˜’·´Të¶ ‘˶˜¹û‡¹ïÆ‚ zSd˜‚éâð^Þ'›×e˜Êš1s4 ÆÃ°…3Z1aƒƒsú¥°Þ˜˜Áï½¹\EKUÑ]5³¤H•EcIe+–Y†ÚéÑT¹F‡1uª( 0rTÓUª/,²ì‡%’†"UáM3éBÓ/œ„?Ú}¶–½-vmAuÉ ·b›²Šœ!´EO~Å - l(^f ;tKã¥ÞÚÛnØZ˜¹ƒîâ—͆–+J(ICM Ê‘›kRY’FÕÆ+ºÀã -ñ˜Å‘tw­õŠ-×¾«ŽÝ_Æx÷ºXÙ¦-Ê‹³„g‹w÷UhWÝJÿÔa`Š0 ¾ÀÈgww?SÛ÷©/jÝ–Ý->ïUUöGúøÉo H˜FxZëÄz‹ù²ýYbø] *»+TƒbW¨>ã:p‰dÀ޹F»Böë¶€ªÄ,…ívi ·Hæe·u‡óR¬p‰à+ÄîEó‹|êáȪÁú§/,pb±¨KD÷Ð7g7x èÍoEU.K½GŸ¿rɉhå`—¸~ÿ¶+š®|..svÑSö.vÞ Z#æÉ_E{tÞzƒã ß};ª¶¾ÂwȹJþŽcèÙ fÉÀdRCÞÔØwA¶Ô¾àôS3´%ð¥Û•é±”ë:`îóãÃܾ‰ SA¨=êô¶‚‰ƒ{‚³’Y+›eµ7…°#ÀÐqÀ¸øÕÊg”¢¢>ÎV›;€ |KRW—Ÿ>†ö8OÝ+Ÿ˜€Ÿ¡àmœÄ ¶Ò;[4(µ±RPQ!‡vÇ£. 0/ô£IóäÅEåzhƒvïêðP@°¾hk#Wõ§Z4™eœeq’íñhªáÙ‹ê áµtê14¶ þŠl|—åТÀ³®6ËN]X?´º·Ã•ë¦íá©À‚¢Ÿ®pÏ}à0g‡ß­U´fñCHœžÿ0»ÖV|‡^€øQOƒPÈ£ñÞ{[Òµ¦U³ËŒ°²Ð¯é'ËŠþ«à‰˜TÂ]. -:ð!¶ME³,:_ÐÄ1˲ÔuØ¥øšÉ„Ò‚¾xyX*Rq¢áV[ëZ+c¦®Ü4æ:n|‚ÒˆÁãÑÒ¸„qµ7ÁÆ32Ï ¥ˆà庚í»<†Yî™ Z˜Pdñw1ecÕð5ôÖc?ç,‰¢+OýÈôL/o>giÈ*ÌÅK2M˜Ì"áø)ªÊ3endstream -endobj -644 0 obj << -/Type /Page -/Contents 645 0 R -/Resources 643 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 606 0 R ->> endobj -646 0 obj << -/D [644 0 R /XYZ 117.8281 740.0018 null] ->> endobj -34 0 obj << -/D [644 0 R /XYZ 117.8281 543.6157 null] ->> endobj -643 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F41 605 0 R /F40 642 0 R /F38 467 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -649 0 obj << -/Length 1801 -/Filter /FlateDecode ->> -stream -xÚXYoÛF~÷¯ôDÖ†{’,ÐmZn_Z@m4} %Z"*‘*IEñ¿ïÌì!JY«JaÀÚcvfvÎoÉ')üñ çËEÎ'™JYšò|²ÜÝ¥“5l¾¿ãŽHꜭqÙ«Ì0•K1™™|¿¸{óÀõ„§¬H >Y<„¥Šqiäd±ú3y:ÌxRoW³¹äiò “®ÝÍþZüôæAeããZ2nŠ„ⱟëfe©Î…ÃÜSõÈ•'O3‘'/V¾ÕlΓýl.2;l`mUÿfmO 0ÞTv|ÄÓmç4œ$ìñØÔ.µ%„-Ø)‡)‹é/Rò´ÈþÏÊÎéRÕ$ƒ”îìqYŒÏeª™)29™sÉ´*ñ)0*œ©—1™43Ê˼QÊ$ýa‰ߨY‰š¨,™ÚÅŠ4è+o¤ #ÚñôX7^Í©ãGVR:yn»]åè‚c`¼G×Wè”<©À6 ,yYGí™s–Áž¿Êm=¼Ä®–Ë™6ÊœÛdh{þw Ìòü&gy*fù}ãÇ fd ¼¢¬RL¦J8º·<É’g¾·ªcœzÏÞÛ5ò[F~˵õ[~{@$ùhjW‚¿àÌô‰r¡íÈmë©cÕRˆÕ@?%Ó û¹Ìfs%ste®ÄqÙ´6º˜)rÅŒì¿Å¹É¹#ô±‚b±‚ŠÛÝé'$uvâÉ ä#­/6-F¬’Õ™rWƒE:\È Éц° -6&bgk{Q0-•:¿ÿ²mPÎ@‚>ãÑ9ލ„a~ÈB&ëŽáúEÉjL;”C ‡iv¬·Û°^/éœéåpo—Ÿ[w®nú¡l–Õ½'q´(°Ýn[Tæˆ9ƒ:§çºö®Ì‘¾ I‘*Y–¨„”É“/…¸zò+nzoZÜ#«PPÂäürß Ü»¡3p.˜Ì¤™¨÷Zh5n_´‘@=“S¹È$p†Èň-%óµ‚i²ª¶õ²nnêãž&`žÊŽ<õ§ª{¹UŸ÷UÓן*W`s¸ -+´TL`¬4ÆTÍÂö0ÁÐ|†—‰;×]$ø…‚p à¢j–4ÛíFd匒™ŠÌ _›•ìO;ádAFkr纥 ¸^P½ËH¹…íc*ù˜rÕùÖ5ص÷0°ÃeëTM6Š* -SËtø€*}…†AT…HüOÔaï,3À®­ƒ¾þ -ëCùwx³Îý³ü< -± ¹ºëW>lèå£ûÔˆÕ­=<Ͱ YyÿÚÐz¯q~¦eG›â^j ½I 1ËõÅóƲØàW,ïˆòÉ^¡\bg…7^ÿÒÌ÷åg;ð%¹~K“iáÑPÿ}@¹V· ¯bØ|:}îZÓzã?xáî?.Ä\ ÈUåÚ›ð±kƒ‘¨GS€P»Ê»…Ðg,« OõÖƒûóšä¾œ)£ŸÍüDùà(`7Ky`E^^ - ß/¿ø/[:úendstream -endobj -648 0 obj << -/Type /Page -/Contents 649 0 R -/Resources 647 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 651 0 R ->> endobj -650 0 obj << -/D [648 0 R /XYZ 117.8281 740.0018 null] ->> endobj -38 0 obj << -/D [648 0 R /XYZ 117.8281 587.089 null] ->> endobj -647 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -654 0 obj << -/Length 2022 -/Filter /FlateDecode ->> -stream -xÚ½X[¯ÛF~÷¯0ò$õTsÓå,º‹è Òb±â¶(Ú¢PlÙVcK'’÷ä×—·‘e%8À.~ð ‡Ã!9äGŽô<†ŸžkªÌdzžºXÅ±Îæëã,žï`ñÕL “õ™J¼ÇéÄêÒ¥‰r™5óåXÈ·«Ù×÷ÚÏu¬ò8×óÕvtXì”¶‰¯6¿FÛv¡£æ¸Xš,ú}ɃöÔƒLÅ;¤LØ1qW}\˜,*kžVÀ_!0–­»¶8q[Ç|ÅÄ¢Þà ‰Úrk ®mžn>/àÐOy”C«š7ž÷Õéû«M¿¯¾—,µUÞ冬;`»Õ (QâÀG§ŽlÙàÌE}ÃÔrŠŒ6¸”“ätH쑳ªwbâKajË’OBwçW¼"îÁᎎ®ÙL¡¤â l]CÎ*û=mØ1µ,HTU¶S&’ñ -·¼.êúvÔ-xø²l#¾ö`%šà6r¬Ÿ¶)Û®§«¢5ߎÛCÛP\°ŸHÇN<¡Yà³V•V^çso{Xméäîð1ð=Œ\AÑŸÚšÇÿ‰_í¼/eé¡h/—ó ß2uòœ««¶?‰¡°ÒlEð^;ºò˱hyñýÓœ¦|^Èò¦íËb›W‹ÌFí£¸ŵ]n€œÓñbÉj¦JB•!Pnü`—hε™}·Ò_k£lj“ygÊå~ O b`^ޏ )\z…&W&3¡hó?Ko Iøïž<Ÿ›ö°y1å§ë÷us®¶MwÇãÛݸùë{›µu•óÎÍÁ~åRÇj|÷×8sÖG¤ÿ-ä9¯¼ÍÑ~ÜŠå,HèK -k¸±Î]aɺq -Œ“ĶmšZo'Oµ*³êÌøŽLޓܧÉg>; `³½§0ÞtÌ4Ĭ|8\\’ë—&øwqrUÙ}&¾880rC^ dœ+LÖ=OêòÌH1R -È”N!žÿ2éAj\šºàTøïnÖ½ÜH!1uøw)dÆ -Èਬ¡¦ Ú1íÃ)œßõUS/dÁ‘yÆ©Ž†ðô(!’Œ•2:Qq–¤¢U…û}ûÂh zE_Ã[¥§0¤.5õ p~È "TçyÜñºl™LUŒùLù®êT Ç¦g=T<>y ©a=ɬ7Ñ«{&P;4 #&VÖfF¬PIOLöZ»$V© ±ð[ì㩸rÊ8ãÙ(<ÎX+•æ0%fÚA‡ìáÍü<4³ ;š/ÿ!†Lë5ÂU£Ùêo®ú}šÜWÝ-¼ à}[rrm¯|ú͵J¬üŽ<ð,/L_‘ ¬¦p9Aê­ÝíÃGé§þ Šcendstream -endobj -653 0 obj << -/Type /Page -/Contents 654 0 R -/Resources 652 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 651 0 R ->> endobj -655 0 obj << -/D [653 0 R /XYZ 117.8281 740.0018 null] ->> endobj -42 0 obj << -/D [653 0 R /XYZ 117.8281 358.3813 null] ->> endobj -652 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R /F46 625 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -659 0 obj << -/Length 1382 -/Filter /FlateDecode ->> -stream -xÚWYoÛF~ׯ òDÖ†{ñpÑPÍC›¢nûæ)iaJTÉ•]ýñcIQ6SÌ=ffçøæŒø“‘”™ÈU.£Ì$"Idm‹$ÚÁåû… DÚæ"µ·3·+“¥ÂäZE«©w÷‹·wÒF2ERÈè~;y,1BêTG÷Õ§ø§v©òøi¹RÆÄϸnϸQñf¹’qyœlÚÓR@':öû:,ººfv –qŧ§²÷Àù@Ø^8?ßx{g²©~Jja]€Y¨XãŽuÙ¹/ Ä*oÚá6þÝ‘ÑhAÙܿР!>;)•Øô~.° ]妆AuO~ÉŠxçÖ tͱíÜM¬,N ¯WáÉùpy*»Á÷\ÆPô„’<‰GvwcÒW,a=Ä;ËC¤à SÙ‘ä\¸«Ú ö€âØz>oø¼}˜ jãB¥2ˆ“Q•šD >þc‰¶²¸Ç¡¯çï¦lšºÂµeÇ´ßóÅÝ2çʆq§öá¥rÝû®Ü‡.PÀ(pÙ°DN©6 ‹‹3Æ<ºú «uf¨Ÿô¸´ñZómEå4lHc²ü¼ñç 1…ªôLÕÕ§î¹NЧŸ«¢ -J£T‰ ¥ñX÷Þg§ aL®áí ü4 /m@(v”Y\1BM§ž¤RðÍõµ_B÷qÞÕ=ø»,®HâzÍ}(Ô¢ÁÞÀÓ t€‡Œ½MèÒôGˆÉdñGª_]ý*&<;7ˆ¡7™‘ûø\Ì¿—Ð Ô,\øE» ºoøxlŽõ— Ÿn¡F\„ZMóÃéìǦ,˜âÝÙÒÁ‘@Jù‚òeP#Ôß`0à9¯f,»Øµ½Œ+Ê«ÑIК¤Iòœ=ŽÕ ‡þÆ3Á7|‹’ذ„µ¥TÖ’ê a?d»ò†ßÃÞ…¤z®ªçÅ?ÉØÂЇ›™Ñ^emF=»úÕ‘Y‘å™qÂ4üµøô9‰* >,¡‹ÜFO°I„,@Þa YÃLöÍâ×Å/“!c¸šHœ›12˜1tžŒæê8|ËŸG?—ÑV‚if@уO­ø}Ú»I§Ç“Pȱ<ÐþÏÄ&cr¾<…6-;» BC+[¡ŒŽ«|EeÌ õ§ªÂ$éËõÒ†%¾(C{†užÃm_pa¶©n¿:é™DÁ<¤õÿœô¦äÿ5ét“IújÂñæ2ÑUuã6®=‡ífõ§¾žêëîùjü{s52rP¯­ ?y -)ÒkÛ&6šÕ…hæ×“‚Û,‘£(´GÚ—Ž?Æ^?ø/ÜVÆendstream -endobj -658 0 obj << -/Type /Page -/Contents 659 0 R -/Resources 657 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 651 0 R ->> endobj -660 0 obj << -/D [658 0 R /XYZ 117.8281 740.0018 null] ->> endobj -46 0 obj << -/D [658 0 R /XYZ 117.8281 579.1535 null] ->> endobj -657 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -663 0 obj << -/Length 749 -/Filter /FlateDecode ->> -stream -xÚ•UËŽÓ0Ý÷+¼t¤‰Ç8,ÌhØÝ!iÇm"5ÉLâ¶ññøúº¯i(ƒ*%ö½Çç¾NA¸û "DÆr™ ’%œq.r2o&œ,ó~"H霥ZÃvÄ·[Å -® @‘g²p<÷¢}=0”­ ,Rúä}·ìËf@Ã}ï,åSÉœnܲþ…ö² D÷ÎXuƒÝÔf{ƒ¾mÀy$3Z!hÇ»5nšzéélôcúÙ•»¦é¤>ó¶³Q¬”¢ÀQŰ歳µ3Ä -8 Ö6°Nè"¬Ýcµ n,D» -êU9[Á]‹[m[ 63™Þީܵ›ZKè¼K\eLä²ð‰Kq÷RÓoì ÉRÚ»n¡!^úlZÓûXóMÓFÊWÞ¹0âù¬]D™3&™øfÃuRÐ¥/´ÝWìçfk_•äô¨2€]:0÷Ì@`ÛBk|vh°žµ({ÂÀ)hU‘Þ¢¯ÓqËyÙ<ôxð2DÃÌ5¸YÀ@[†œ®k#’8ˆ¦ÓÄñä j/&^‡ïÑf„¡Z&퓲à«Ûåp"*_FÐSך PüKxв »ùÙí 3ù4=ü«2˜ÊTJd–3©Sqz™\\*t| -÷W€Àé æn€ZèÚû(ÖNˆËßq»nf¦'8îãk5Öp[•ÝÛª‡èÞ³®wͺ~jÑ›¡Âå¼2fxAî« cÇ6¦ßý;‡=zŒáÁ–«ÚÍæjhóóÉ´C½1ç9B®·¡Þwá?*¿ìø±î«ùïá—¯:6Vçkú|YäñÔ¹öÃg¶,Ujô3zÀÄGÐÈ'O:oÆÅ -éË€I–²$Wr$àëð6endstream -endobj -662 0 obj << -/Type /Page -/Contents 663 0 R -/Resources 661 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 651 0 R ->> endobj -656 0 obj << -/Type /XObject -/Subtype /Image -/Width 360 -/Height 289 -/BitsPerComponent 1 -/ColorSpace [/Indexed /DeviceRGB 1 665 0 R] -/Length 917 -/Filter /FlateDecode ->> -stream -xÚíšÁkÓPÇQ†zð"RÖƒâY˜Èf£ù„ü<ˆž¤›Ûa°=ÛATº{Tta°8†ºMi;ɤoc«q—¥cJ“æù’¦íšfëïZ§ó}KB -Ÿ&¿÷ý½÷’ßK)åâââúe'ØnJ‹lS ° šT…ÂIy F’šìY¦p8)›àÚq3".®Ŷ6Øæ@aÝÝI˜XT G€°T¥Õ0F¥ªÙÀœ€³b``}W3›ŠDÈ -·¹F;u¦€rÌŠø*@"˜±¢FÊ$" –¢µÔ ¥Û¬cRHB|iÍt§FÊ ßNh[[‘•RTuéåâjotÄ$þ×mo,:"ÝHÊåwÃ&a}6l(*BQ2h¾Kðp«ç]šsijT;6ØOMjâ%Â3Ùƒ/ÞLÓ séõ¨‘•l‘MD8îÁöõTš…qíå^°[Ú‘Ë¿Êð-Ý…Ofö‚5Ñ äìb6R_(±Ÿž5–Ï„Àóç¥5Ú9~º ï¤ -tÂ^ Ì®=8?[9èä½ëo‘¾ÏýöÿƒÉa€Uÿ[0åðÁÀ„Ãí€Õ¶Á\\R·ó»÷:)Ñ禮Eµœ{°ÎúéL`ñá§ìÞ¨>º ö² v‚°04 iN¢Gðá•¢–»';4›ž#=ÝrüclpXšsÄÞiÑ?ó¦–»ÐgKÙôs2³]?¾2ò‚…‘è]ª„±¢å:ØcÐbúnü~ÒƒûjpVË1x> ÂÌ‘7,æTïr%Œ«Zö†îÐõ…n2³hôOÛk‰ÆYØyOä:xYØ->ö»›BWÿTtàЗ[RÓb£áœ°`¢¬ˆ¸ÍÐep“GÔsˆŠ1ZTuØÔÕÛ¬bz³·f4jé`úˆˆ°Å•φ—…i*~Ò€­cƉhîÍ£LH‘_£`lnn´Ž¹Lô -÷îÕ£¹¸0²¶é?ºoQ*—gƒURPr4W“*\+Š>ûðtÖíÊa­(Êûð[€7³¨}ŽÙ~Qär$3K&ÍŒOÆêà¯fN»4D]Øb¥‹+w -–lÒ‰l¡þÌßã.<«EeøhÇ)VÃd‚ð†íÂ#բȅóÊý䯄»„þþÙOb¶´Ux8‹»ðªòà„ûÿ:åþ·X¸áþLT›w›ÿ¿ŽE\\\‡P¿Q*Ýfendstream -endobj -665 0 obj << -/Length 14 -/Filter /FlateDecode ->> -stream -xÚc``øÿÿ?þendstream -endobj -664 0 obj << -/D [662 0 R /XYZ 117.8281 740.0018 null] ->> endobj -50 0 obj << -/D [662 0 R /XYZ 117.8281 373.6411 null] ->> endobj -661 0 obj << -/Font << /F15 459 0 R /F38 467 0 R /F47 632 0 R >> -/XObject << /Im2 656 0 R >> -/ProcSet [ /PDF /Text /ImageC /ImageI ] ->> endobj -668 0 obj << -/Length 1664 -/Filter /FlateDecode ->> -stream -xÚ­Xm‹ÛFþî_aòI†x³¯Z©¥ -$iùPr¥”$­³²äHr|ùñÙÙ•W]¸rpû6;;3ûì3#‹%‡?±²Lfbi5gœ‹l¹9,ør‹¯ )“±Ôά®µM™Î”\®c%¿_-ž½TœÀrcäòê&:Œk&Tª–WÛ÷‰\­E üÒ$ïîú¡Ä™C1`SmVkeM²ÃAÙ”¶ÅPaÓ6«Wož½f)8Ëy.ð¾\ËŒ™T[§þj•©¤]­µàÉ ßmÓi¼-Ls©`;î*êÕÚˆ¤ž;¼P‚ /Ù;k›•Ì’¡l6%ž$’a%’=z€Çþô®8ŠŽçGžƒ]¤<ÄN·B]÷)IŸ`¦w ñ°/#5-¨m¶Þ)›º¶³BêåZ(ft.Éq/®Æ›©fJ)±LSɸ„mpŸï?òå®ýÍ‚3•gfy†g"u‡…bZ¥:ŒëŻşhŒ×±J©¡"µÌ¦¹¾†]Y‚Ûpñ 5»aîFŒeÒÊp#ì+¿„dʪt™"0´ÍcçQz‹ÏÙ,s&3©ÅÓõ†úÿùð…*„i|'ƒC .oö°¡¤~åw~.»;꽊º*šÇ¨¸n»ªÙ=Fö¬«MÕžúÇ()oeÓWŸËÇ(¹éÊ~?§€16¯7è8WÍ=­ß1èáñ­Mç¢;ÌaðÇ´Ñy^‚"ûÇ±Ø ¸Pº€ø(ÓO@ § -ÙG57JÎ4Fâ°§á5ò‰ßß´i-êšfÚš’9টhØ6õ àî£WÜ^ÎE˪ÏH„žÎœw*½SB3#ÀczªÛò8ì碠 SƤ^ ,Âèâ,K­¼ezaDÀ¥FÆÇ>‘&Gédv·+i]T`ñmuA…ÁHÈJÉ(°rh»ÀÅ8Œ¹ÇÈÅ3Ô+‘FRH€ä¾¬&›uüƒ»÷[6í!p;žþ«ièc³dµXü[¬6ÊE¬vñ"ñôz/àU¬6nó‹Û8³m*B"NÍ…À0£ò —¯e.’×7Ô{Ò$s…æf³_¦™”<`m>uSÅmñ¬½¥ãÜ“pçvÁDž^5Øò€¡Žäv.u{»º§4Y ÔžI´æB´4¤Çœ«)ž›’Qçñ5FÎé­ªaúo,4PüîùÜ…`1$àÅåê¸ eóämPPô'|8·oÑ€3 ð>ÐM§2>^!ö§á¢» -æ.,ÒÓìÙ¹¾rpÛ ÷è&½˜¦ÆWC€uïÂ$¾Æ=d›tÄh „Ò½ÿaz8^¦‰VlDÁ0˜’€¥‚ ;5ÕíÜEˆ”C%‚y^É´CD"0Ÿœ›Åh -d¨óV˜Á<0ˆUyÀóy3‹yÕ· -ïÂQ8XN¥$:FÅ,ÍÖÕX–ölöÉÃ+`¹R÷Hùêa¤f—y,¨˜/á…ÁÆ1tŽ•¿Ê x ßž¼ûÓ@’.kA[Póê¥×Èn¢òÞ —"@ßà.޶Dv×+™ ¢‚ígO½‹ÒŽžäh$ô b›½È’ÙD‘ ` 4þóÙú–Y¨o½„OCEO'`ªoëšž`Oùú¡L!SÈŸ¹´?˜)bñoeŠQîÇêßç¾òØœ~#FÄ2‘I*ª%CÇRÿøÖÝiž|¶ µÇÊ¿h…„ó3N¦ÈAÈW_ô~ç{ñ7¼)OÂûDtá4 -ÛiòéIÈ¡W÷ÞFà\I—ë²Ù9<¥q(ÇPpÌpÐAå§c´K$Ohþ7¼¬€‚º¹"´º :‹›C©/ a³ð+7´Ò6¿)úyð…qÈÐŒS?Ш¨]^sßõAÂ}¤cŠÁrkÞEIËOœ=ÇP„ÂÌœg±I>*3Þ5å­/Ó¦åÒXýÇéïÊY Ë$þ“}’\Ëm¾½QÌg4´úx+t5½Æe *> endobj -669 0 obj << -/D [667 0 R /XYZ 117.8281 740.0018 null] ->> endobj -54 0 obj << -/D [667 0 R /XYZ 117.8281 715.0952 null] ->> endobj -58 0 obj << -/D [667 0 R /XYZ 117.8281 252.2034 null] ->> endobj -666 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F46 625 0 R /F47 632 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -672 0 obj << -/Length 1727 -/Filter /FlateDecode ->> -stream -xÚ¥]‹ÛFðÝ¿Âo•ÁÞh¿´R!}HÉ…ö¡Pj% A¶eYÔ¶Iî%¥?¾ó±+˶î¸N»³³3³ó=–ÓþäTJ'R•Ê©3±ˆc™NׇI<-áðÝDz$mS‘X‹Û‘Ó…NŒq–ÀÊŠ‡XwØR*¡lÃ=hD³œ¼z0n*c‘Å™œ.·S©2¡R•L{¼åæCôÓla•ʆ¿‹Î/þãÏ~|š}\þ -üʉ8K ‘ú¥åÿb/w•ßý¼+ж˜äý›º©Že¸/µ°&St¿ëï¬é¯lõä½oåûêAÚ¡b@…ÂXc@ßZÄ2sD•)ik£íLFùz¶Qµ‡eÕÍT}å³€SÖ³@ùÿa&ÚÖ /º/·£ž€Æ¹9¦‹ê–~¼pâK@ù›O»—$@1çï(B}fò<É{¡Lô8Òp — æ{D¯(<‡í˜6s84)8D~8ä oà•¤7 õ–8¡’̺w˜i­*äPžA6”~DÛàû1°âKsO_6iB0`]³ôyЂ6(°©`w,[FêvyçÑá±´X‘V ÆGEç kMb*•ðuSÐãRY¡ñÆñ."kÕG$¨I¯iPtªAÖ¥`LHaeÆáõöKxYƒ6$í´Q±ÂêLzÝ€* p! -ìA¨‹ C»]Á ²9@Ã$o‚^&ÂYk<Ím]oÄzûs@v`ĶFòÆ+¢c^•ÿžššô¼9÷~Ù2:8ÀW%%Öç–Õ¬b)ÏÉk5£EñQ%ùåœÕûgâºk¾zœ;Ù±BÑ·Ü.‘‰ˆ>è‚•RЅȬUÞJÚ )%g.%×Í0™Úèý,ÓQC¦êè?¤ @· Ù† ½9ßT|’@ê‘fÏ Çt‹N‘ -›˜”S z*<±íƒ÷ü‡V×eó‚â¨;ÑÿÖƒ¶|óÝ×5Ùÿ€ÒQ¬ RÅñã™ä D)…óQŸILˆ#ãC§:…`"‚£0É,ØaÄånòÉcSu„7y»ì«–4 } Ú7|^9*qŸ'>ÆÓ ”¸_'±ÐYj§°‰…Ì€Öa¢…ÒöûÉ“ße0P\ IŽ•A ›ºôš£Úûzóš?£Ab­©Ô>H®5?¿{d¨ÌÆ(ac—¾°ŽÑŸ«ã=ÞX?ž«¢y-ã±rîwdšO—§_¾ˆîpzyü“ùÌ·ù²È¸V -‘Ëv<ïoÞu˜+x‰nw+¸ +EÁ0âg -Ú˜4Ö¡”× h“¥¸Yœ “B[ö½nÖS\ IŽX -HÈ:=Þ¨›5ϸ™úF7ƒD$L’êºÙý97ëñn†Êqœë‘q_‹öå.õ[ÝUkôé8 â|Çb*ÇüÀi¡Œ1ù4?Hø)hÕã•ç[ôY™pƒ4dé›Îð€@e®> C|ƒx%Ó(ö{BÎÌä¹Û€7Ç f©aŠ<åMèõ»‹¡¶¬±´a$Y„Ob8æ~„°˜¤tÜ2  —w¡ïØC¯b¨¯‚ó÷Ø@u;®* êcÔÉËCæ÷g%ʘ{OlX V -ÛoÆzÉc LÀ8Ôü4ëºÛÝSSš# g„¦2¶r1{ºöíÆo°=mDH¹åMI}Æ¥¿# Mhƒî‰NCC€+¥¯: êý‹à`°y÷ðCÛÏ$zƒÚÏ÷ lŠSo²Ö÷ž4M`3XÕGÆ"]Àt#ƒMî=Pð·é×S‹¨±ö=H¢:ø¹¨éŠÍ|LÿÃ’¢ÙW“AÙ&ϱþXc³nCª=v· V9דÄM3ÞừHOq1$9’„! kyaM¹+ÌfƒBrm“T8•Ø~Úzªt@^ 2/«ìç -G@Ô Òï§ ÿ7Ìâä -ÇŸ;Þòô­£ÏÃ6“ çcï»9VÌ|µ÷'¹¿×ùÙ^…»äÁZù_•·¶Š¶E±çÕ.?f* 4“>ë¶0- P•%(I!ðd.6  ’_ìÒBvƒ”ìî°iº~8f³> endobj -673 0 obj << -/D [671 0 R /XYZ 117.8281 740.0018 null] ->> endobj -62 0 obj << -/D [671 0 R /XYZ 117.8281 537.4381 null] ->> endobj -66 0 obj << -/D [671 0 R /XYZ 117.8281 286.4331 null] ->> endobj -670 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -676 0 obj << -/Length 1987 -/Filter /FlateDecode ->> -stream -xÚ•XKã6¾Ï¯0r‰ŒŒñ!Qœ díIç–M{Hö ¶e[YÛš•äíé,ö¿§$M¹åîY4Ðâ£X,V}õ²\äð'RZQ©J.¬ÉEžËj±>¾Ë;ØüøNz"]T¢, -œÎ쮌-…©´Z¬R&}x÷í,2.wrñ°M.˺ԋ‡Í¯ÙÝRUÙÓRÙ¬ù›åJfýRfï—++¿ư×ÂÞáÀ '&:ƺy}ÜQÃË›æØ†±¯Ç¶;á’Ìöé±@z÷õÀÞ8îc=®?§²]Ë"Ë>üÏ_I- -ã½ä·ºór¥lžQê3œ]ã`Aü®gÑ”UYóùLzàCÞ¯¬Ì>Á§Ê‚r¢ZˆÏ¸¯OaDÌ@šoïŒhÛ9QÚB”(œXo™jj•ƒ%"Ñ–d#)éÝ‚EùDz2Aâ§ö€êçö´T.ûŽdÝÀÆyíéðø~V°•’NT2×Sí‰Ý¼€RHX™“o¥Ë<{DÝ<óø“×,¨’þ³tíiÇÛ5˜s(z^#ÕÖh"Ï£ÛòwÓü–KsZÒ#eF,äV0&›ÕG?Ûõõ‘óœë7àø¼è]l»nsÃNèY.z»èBfûæÄ£è#Eb!œ ¤Ã ¥Oçñ90Þžƒ[¿wü¾ -¶È¡?’öáPsªñçÁÐ;VAæÉGÀŠÖà”þ;îÑO;d  KDÜa¯î^E t#Ñ/lÖ ¤þ–oçb¸úµ5x.ˆ46ŸÇÕ6ÂÃoÆÇV¹® F W€?€ÊÁ»µ²RŽ×OJø'U‘ýð…³F¹lèÚð`ÝöÖ}3†»`ux>-5ºžùŒY -c¤ñ†£þUØ8PDhê¾ýƒö7¼ÏqMæc…2[‹ˆ‚—„ ¾_AÐÂXÃ`zÀ¸bŠü*®4~õ*?ã8¬ Hh|` iê±¼ái·k@ï™ß#òy«õw´ž´>„t)q¶D Á“ËÇÃ2ÆÂ ‹±þ—¯6b8&Ýy¡öQD0õVH-Yõ‰J|Þû«Pœæd? ¤L¹¥X̵LQ•çÃŒ»(¡­.ÆXasmSÔθ§^¥äì6ÓrI9¡*•°E}ÝðÐâý/üùðá{ÜÍ‘G_µÃW<úù\Úñ™'ßÍĦ,yPtI;¤ù‹PÕ_J™±ñ°­‡©M(ƒu”ëCNçÚ8¸É§ºõ–áì b2éχX)}¸©`]A-Ì—*8%MÁ‘ŽJžóÉ+tð¾Öïê/3Ú ‹¿$ʾÆú¡½bÝFžÿNyy‹þw˜L‘Xø¥o¾¹6uXñŒÄð¿ÿÃêI(ÑÖ웞Ç=aä:0‹“ÓB4}•gì¦ÏTùQØÙÌv -š\ëP@ŸOsJ¬sd™^¸ì‘bÑÒq†RtAÿJ±¾rìžÙÏëÏ‚ïGV+'òʸ©©.1>Äqc+âÏuÙ$ÏàŸ¥®./Z-õU³…6”²t¡p¾fŸ_вtÖÓ<íÛ5êvÏR¬©w<‡X5záø•Ñc1ù“Ì ˆÂ‘Óá’¯2yò[^äóÝ4ÑV›+9My[N‚3)UCjM)§JElb&œÏ¼Y+aJë„J †ã?êjòö-NêݼF ‘7&ÖN[ÎÉùÕ[¼Hi¹$}rœb¦¸‰S…M*^Çi!ò²¬RœB3X"=‡•œ…-§Z¼W QZÚk¸^÷l«@7Óº)ߺýDªÜìªÓ ƒÖTPa“¶¥Ö­?²vÞîÑþžäÑ%>(£f+‡ÈJ¸ðvo¸O5*XׇC³™ƒˆ,AÖ“þ>Ya š°ï5UZBãeÔšæIþ!<¸úì7Ëøê©Ñν•C€è`t¼rîgm$>J¿LÕ7~ûq‘#i¬¬²ó‹ùÒz¤—üëSË•<A縰ÍÐù´6rÿ€:ðÅ(í¦ÕøœMœfÈÜ´ à\ivÖK+0k(Щu&ù=.ÿ‘ÛÄÒQÒxX{oÉ+Qêë?œ#¬$ý‚‹½¤ð>vÃx©0‰Þ÷=Öëxûw¬¸Q;.ùÎm—êü•ߤ–¢tPѾ޼¦d¯5¯‘îÍæõõ‹cóúââ«øš×ÉÅIaÚÄIÊ¿¥ <À_^WÅ…hF»6—‘J#Ýõ…ñ§÷—þ µ¯ªGendstream -endobj -675 0 obj << -/Type /Page -/Contents 676 0 R -/Resources 674 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 678 0 R ->> endobj -677 0 obj << -/D [675 0 R /XYZ 117.8281 740.0018 null] ->> endobj -70 0 obj << -/D [675 0 R /XYZ 117.8281 632.5532 null] ->> endobj -74 0 obj << -/D [675 0 R /XYZ 117.8281 240.0226 null] ->> endobj -674 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F38 467 0 R /F41 605 0 R /F39 472 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -681 0 obj << -/Length 2104 -/Filter /FlateDecode ->> -stream -xÚÕYÝoã6Ï_aôÉÖ<~p¤‹ÛE ìCÑ÷Ðëƒâ(¶zvœ•ä˦}g8¤,ÙR¼‹s;ˆ(jHg~œù -fþÄLǼôbæ4gœ ?[ínøl ?Þˆ$¤ŒgÖ|ùº”Î1é¥-µgÎhÛ—:•6LmfR1­ƒAÉÏ7¿üÊg ùã g*x3{ÎDr¶»Þ f"÷lo~¾ùé¸zê] -ÅŒ†ÆäŒ$ÇaÆÔÌ#N&”\ƒŽ&Ì–Ž &´‹Z~wó—ÂÌg1»{œIh[%ÝÌqäjv÷ðËüq_/Ä|·øõîÇ›ÜuÓJ+™ `¤4©½‚¢yÊeÎ1E-øÅ‚µŠÖeñPªOëS]•`wEU…×ÌsÐ]qìÿ´ß­w(:sj7êw“>¢9WE‹v<³=gN2ï'QÑ_òZ¨8ÛÆ*Ûx¿X*¥çŒ†š>Ô|µXŠyÑ–ë}ý:˜ëíâÿ 0N1i¤¼ˆ”J¡OñòHÃÙ -È$ñ×±9SVÙ$q;¹žÖWÃÜ©%¦0×·¬jèYì`"AÀk«ýöËù>‰· éç¯Ï‹%tj¨œŒÚƒŸhhÖ‰~Ô=V›(f5£¡mÏ(Ð l·!h¶©~v¤qòtÅlà9?ï"ÐQ¿iE`‡.T¾£%«ŽFï©ãeSÅ¢ ¼·¡žßÐÀhåuœ{×|-ê’ˆ¶çèõò!á<óÞ«!6î6ev`<éº z‰&Ø×-øQ†y;æéÓ¹CŸ×†ƒ"  TÆñðVa­¾Ø[…Q'w±0z{á®0:_ØFƒ…‹û¦­‹Õ(»ÓDƒðg“JHŠòBÚ Üg|}ŠQŠëû|[4zAÅ5}k^»z,¾ßÒã¥j7Ô:þ'?Çè¥ñx§ÀRRljç#ª€?HëýT÷ýx“¢Æ'Å&a'˜nÅXôÅÞ‚E'wo/ÜÁâ|áqX ¦z¹-Çj8ãžë7I¿dBóÌ·rä9IÂxžÐ¥5Ä«·ÑåCè£+pºªÙw—6]b@Ú®‚" äßSwÌ×ðJ¨ŽîpŒŽº}—¢®â¤8ÍÄ®ê"\U‚+ò®Íñrb˜Q©oÎcéÑáó4áUŽtÒŸd%† -蔕¾/šjÕå!ž H1B7ephÐUšèžvqžÀ¾&yÅÐ-­›?íɦe½‹)¹Ø6ø¸ -ôXe9\õ ¶Kl¡FuYÒ”ßшŠe¯³4Å j«(¿%á˜|¢P¬Õ€C¥±c9S)  Ý÷Ñ€ ùÃ`IÆ‘Æ #Ušb—8‚ÁçKÆAÉÑ­ymhK;zø…‘?0jü¦*-U"ø8÷>ÅGèÞ¯y—W-ër@G ± -ÀëSž¯¡ÊHgŽ pœ»% ¤ã:[¢9tôïc›ó ÙÇ)¼s3̦ªdêznÙI/ûâcQú±“Ce~hÑNNÌòïôüéPl«öuØùóض`m¼Ä`¬˜vÚ¤CÉ«õ½;d}kÃ<¢KËO À󻂾ž^J/¢éã€GôÚ~—f9‘ä@WGlAöó!¹*N_Ê%4›^¸JÍ´,Ñüï©v‡/“<~[DŠÆÝÙ}9tEÄã§Œxî|qèÿ—%ñùçÈtŠqÜ…(?ʧU˜1â>Æñ1ô¢­Ï ì? Ô/òñCZßè!VG³ äW#{)îl 9\VùTHïYBžžŠóé$ž$(зUYŸþâàŽN;ÒWÊ(m3Êöµd\u¹»¨×¤áñR*š¯)E<0+21œ¦FAÀùQˆÑQhìf¾:üÍ"Iáz’Ÿ]O8Ë´WrdÁ?,¼,endstream -endobj -680 0 obj << -/Type /Page -/Contents 681 0 R -/Resources 679 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 678 0 R ->> endobj -682 0 obj << -/D [680 0 R /XYZ 117.8281 740.0018 null] ->> endobj -78 0 obj << -/D [680 0 R /XYZ 117.8281 506.9559 null] ->> endobj -82 0 obj << -/D [680 0 R /XYZ 117.8281 344.5706 null] ->> endobj -679 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F41 605 0 R /F38 467 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -685 0 obj << -/Length 1735 -/Filter /FlateDecode ->> -stream -xÚ•XKoã6¾çW9ÉØ˜+¾ô°‡Ø]´‡Z=lsPl%VW‘\Ii6-úß;R–l&ñ"@DQCrß|œ±\Äð'R¦"S™\¤&q,³Åæá"^ÜÃÇÏÒ i›‰ÄZ| |]™4&Ój±šnòãúâý'Á "·V-Öw“Ãb#¤Nôb½ýéåJF©lô+¾•›¶Ãç¶_®tj£¢Ùò _ÊhÀ/]…ÿ›û~y³þùý'i2yœK<'^¬T&lbR:`½+—+˨®X_âÊ6Ñ?4pØ6,3,U=ï—+•F´LEí>ã¨`‰ /*ïÛî™gªžŸ+£ó©2*ŽE–Å)h…Êtd˜KÇiEÇÁ£ Ù’€§¬ÒnõôT ;Ö‰,(»–çYS=´]Òe¥+b­òÅJjaM®h×?biÊzô¥V"NuçãÔÞ‚,ÓäÌ®lÐk;ò ŒzÁ(õ¨¯öuÙüÖù˜€c¶Ó-`wÉ"·ì&z²×‰ÝaÜ:¿[”°p±ò6ÍœðùiÁ¡‹ëà€K¡S,™ˆØÆ³9ɆQz5§lðãò®m/ KÈSä îʺn/ùåÝ;7ùÔvõöò;°øûÎmLÌ¿ÑU%&l–"›âcžýÀçV˜4Sž>èÊMª¦•%: JΘ-Ã;ÈCû.t¶E»’ÐG‰Ú/À<ö9pÖ69*¡Üp_±sš« ø5Ü¿Jzˆ`nºû“£‹†ÝÑBæÚ$úst÷ÀßOÝ•†î-2m“9xÎÌD¸½3¸H«4*¦rüè]¤6UQ³4ß³}ÉßIO˜vÁ›M?è\z·îVp)&,¦‚b ‚¡mBÊZPžïÞGâƒ+§^o-zç w@Í›ûƒ.$T~ºŽhO9JX¤Â™«<}œ°c’;RúÁH€†®OùÄT8NæÅP}6J­¦bÌ#3ðJŸ¡|å\už¬Å&1oì¥N>B DOÆq>?¸ò9™ÌdãשÀÈØÃî:”¡‰H’$gýñž„A-”HUê˲ý ¬eßuhRÅ+»¦‘Y®Ou‘/ërÿ¦IÄ™ZA2“Ù‘lèj §xfù¦ék®djEgùüòp%» -²øœ3¸äëeÞûp-N˜·îÊ¢®ŸÝ1Î%&Ö§€ÆÌ qN,…¶¹wüÐ~Åb¾ÄFªÕš‡– ]ÛDäÚLëzÝ‚ôãÀ㇖jÝaÚƒ(.=¼¢ÈETÁøF¥)=ÿdBŸ”ùº dÌÌÚRÍînê€,ä‘óžYvØQaý•߈ÂàY ü¤SJÇ„R†ª!)ÇeýÐ1öW<±-›v r^ny-K’íÈz±-LÕÕàµìˆ•ûP1S5LœÈ«íã-Q93ê_ÈëpškIÜÚiMøK;T'Mˆ(†+8ÐH¤Bz^7Vp`‚µæ°-êÕ×\SÈbú+Ÿ@æpýK{q Æ‹äÓl½/·ü½p #®4,‹»’ÑWÔBIå"©ß.”µ2›~_ÁN{ÿäTfp^|Â&ã -±JSÜ “ ýàˆ<Bœ£ß[HÂöí§h¸#ÇñSU×<ûM0WàtC0r¨LÛ}õKI“ØçLÕ¤)ö×35 MQ?÷%¢ŸÂmÈNßp—[¾§Þ¢?#‚ÿ?èÃŽ:cØÖ¦1¢¤ ´Þ®y7¥ûâï%¨+™A(¡?êSñך•Qúr‚uRˆƒ}ÙîëòòL€^9úðáŒnåhö:žr»žÓÕ˜ ‡’ÏÆnOGý˜Jð6þ,¡ñè‡ãîÑA¸é]àÖ>bŽz õÆ®¨ã̵e0@Òj耴>3@Sñ×4ÊQ€nÎw%îhÁ„O½cÛ=xÊŸøÅ§6zoÉ?® x±öÍ¥Hæ¶*߃P üTð5å¸Ú äñãÏœ§þ )ó³endstream -endobj -684 0 obj << -/Type /Page -/Contents 685 0 R -/Resources 683 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 678 0 R ->> endobj -686 0 obj << -/D [684 0 R /XYZ 117.8281 740.0018 null] ->> endobj -86 0 obj << -/D [684 0 R /XYZ 117.8281 715.0952 null] ->> endobj -683 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F39 472 0 R /F47 632 0 R /F41 605 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -689 0 obj << -/Length 1377 -/Filter /FlateDecode ->> -stream -xÚ­Ënã6ðž¯ðQb.Ÿz¤Hn›ÛktmŠ-ÛÚ¥¬%71Šþ{g†¤,)´CÀ"‡Ã™á¼'bÂáOL„HX*S1I4gœ‹t²Ø^ñɾI™”ÅÆà6p:ÓIÌtªädÖ'ò~~õî^¥ÀeÆÈÉ|ÕcÆ5*V“ùòHMg"b1ü -i¢ªéL%&Êšv‡'ù¢µæPM•ŒZ¾ LGn^¦Øâê鱘þ5ÿåݽ0ÁYÆ3|ùd&SfbÃù4UQ bå<…]ÑັðvSàBƒSŠÄAihi‘P"™F-Iûze¹Ÿwf´Ì@ 侪ë%[¬Brj͸˱¬,ÕÜ~þäB?‚Eˆè]%‰v7ï‘Å:Ì ”qã¯-éç©L¢Â¯á}øÒ²uhñÏøS#EÐeDÀ&3¡àe™$Z_A^-QŠTAß/{® 2OaÕÕÜ «»yçBcÄh'dA?ë°f}4ò3-Wà^¸a‡‡‚“WŒUÆbë Œ=ÖkÆCí -m˜à<2¾§wo¬FÈò–, «u½;؃Ò:šRMŠB3€ŸÂr‰j¤›ÅÒb? †»™‡Ý޳4I½Û-€eÀ$ ¢,Ng,’ÌÊÀNÛŠÇŒ+©.Ùª‡vÖVï²­Î2>ÚjÌø”­úŒ¶’šG;TäØÀRÁÌ -l,BÙ¸¯3XMCká¹·®ÃÖ‚Ëe,|’ØW!k‰Œ¥\ë3溶<žËÖ=¾äiøŠäÓ‚V5:ÙÖÉJá-0â£ð^‘3n­z¢¸®jàœEmá£d?:öÙ½~ãî!êþ±ø—„\¦â‰1“4é›9àg{ÖG·~6T°Ì˜Le,¾Šª Uµó¦]ÝÚÏ?¤, ¤ÍT÷# ›6`Œš>Ù‹ßÙχ_ðkY-€ûü±lf à ÷¹:sýÐX7c¶³ïl<ðSŸ+RœoÊæÚžÏ7y; |„§Ôg€ØÇã›3ò¼¦ÛWW€îç²*œ?nŠ¢ñ›û²Ùœ8Hç÷bw¸,^ÀT#:÷ÐClœ ŸóÝöÚk.æ•Ûݽ<USþí…ý©x,e½÷ê~_ïÊj}Zœ±“ôø7”4ލJ1hC¨¿Õm¹(|8»ÅÞ÷:Å0n †1_ï(ôsP§+V&rùd·-Û–Â~=Nлmrê)ªu¿=Ѓ„ð³e‘@©'©w®ÚQ/„‚ì±›…”ßÐÕo{_XmV²¤¿`®A‘×t´í!ÐÓ®O&!% Ë$—oLB}ôsI¨Ãó e¯“‡0ÐßÞÞºÕ‰+xos ´*ä1]{ÓØÂú{¢nÄA±a©z‚ªpf@…»v/Xî øÂ;ÒóåîbsÒœ6œÔ)ËñVÃõÑÏ®ÃóbÛ`?&¢³¹g+ÎÉŒP;Mâ2)þ&ê¥tú6ïš{g¢ŽcYìÞ0( ƒ?·Âpm1õÇ^¤týÆŠæ9rf%TÙx ̈Ì5}/>i h‹ÒÎݨ5š ÀsUæ5rHÝöK[ Z¤”6p~ì/p×øä֡Ѐ†8Mӛ傱a˜ÒÜw÷®ßCÖ.> endobj -690 0 obj << -/D [688 0 R /XYZ 117.8281 740.0018 null] ->> endobj -90 0 obj << -/D [688 0 R /XYZ 117.8281 715.0952 null] ->> endobj -687 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F47 632 0 R /F41 605 0 R /F39 472 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -693 0 obj << -/Length 1427 -/Filter /FlateDecode ->> -stream -xÚXMÛ6½ï¯0ö$#1#~H¢REÓî› ‡`æÐö hi›ˆ-m%y?Zä¿w†CÉÒ®,'E€˜"‡ï g†äãòYÿøŒó„i¡ù,Q! C®gùî,œ­aðÝ÷F2Ò,Ž"ü]¨$fJK1[ôAÞ.Ï^]J ,"1[®zd¡b\Ær¶¼ù#óXÿs¿Ì2‰‚¼ÄÞ"¯Lƒ C½õc1—"p]Ùö)âÁC6çÁ[·[3ÿkùþÕ%f77~¬ @ìñÀª˜Ža¹¡ã¹,˶^y¤$“JÅÞÐÖˆšk¤¼CJçJA\Ù•J˜Lµö[[ä°„"™°˜'ÊÛU{ Øš—D—ðåd0&I“ ì‹|ˆ»8bBDélÁ%‹T*VcKpPJéUcSÁ -È}?2êzÍ8M®ù-B¦¹ºÍˆã>ìÎn³ŠHêMYAW³¡õxO²Û9ÖãwÄ÷RNÇR—(ñ¨ Tö¥nª, ©J™ê wXJÃyX»jÆIgËn@i3™Èxcª$ío¤gª³^ôÍ݆zâ²H™Ð¢‹å¥Û7P@l(,Á‹bMåêÐI­7ôó¯Ë3î’„…©VOj -w1¬X óý’&_5fç›lq㛟öÙÖ6Cšš~_ÓÏuS}£ÖOTgÍ7Žûpå-ø@­¿'xߌ™ïzñ‚~Ïm}>ìñ@¬øù—ë¾ÂÒ§HÏ›Í3 -œs -2ð½øYóÃøŸ>t°ƒÀbë‚󣄟ma&—qçS¿nŒ©§1rg2‰riëÍ$Æ - &~7Õãw—ÜùXÿŸ»¬Ì)GÑbÒÓÏYµ›Ž9L"\5à*œ®S ÞfçâáÖµ½›NŸi­&±~3[›Ûr_ObÝ´V“XoËʶ‡ä /ÎäüÈÕûFw†LûgõÁTJ¦ùx´ª/°Üb«v]c×NÄ"™rïà]G€ÐܪØn6„&ã˜DM‰÷aÞÂ;žÆ£–Be:jì2y"xõt ^"cN)ÂÅCvuIà;µÐ%ëw¤±Hvá-IfÞ™ì ¸×j )˜–xûõcê/ã…ißuø†«·]ÛŸ!Wx½£FÃ[Ð/ñÀLó`ªÜÖ­¤„!¼&(*sGu…#dí‚Ø x( FŸi‘NGÂÚnoDôº Ó8RgvEj¤Ë(’Ã}_Žî±žn0aKêìëAh9Ãrç§•-0l|_ÑÆåžÆV(QŠe[ý³¯Ñ@gA-r-HHH†“µWæ ÂÚo]Pj’噫?h`ü·†jø´w‰Á¾öSà ´ÜPâã>UДdTQÊ5.Êþã3ˆ0ûæHÚF†âF³Z‡Ðnå4â®Óú^©9»%¶}JÐÖY•uC_vG©-«&룗…MrV™×Ï ûp­`g¥£­Egµè›‘òãÃw¼ RÇÃr“gÄ2e±ŠÕ âÖê9ñ0‡!†éøºÄÒªr_x.ìmñÕ¯©ú>zŒ‹­¡¾"kë÷Åø)2x't'ÞøKjðPxCÀ=ÜN@ž£‰9ƒ©8•‘žÙdFZ»Ó™$>dä)ñ±Œô‰—s ožjïç. †r¡zo=ÛdÆÖíáDÏjÜd[w®â í‚râ‰'àX ãPR—æ.†mÓ=—uÃÚ§§b:ÑÉðÞ¼r[Žo÷îs@&ûëHñÄØÔí=G'™þÐ÷ÕsO=,uCoJG -åø.O9‹¥> endobj -694 0 obj << -/D [692 0 R /XYZ 117.8281 740.0018 null] ->> endobj -94 0 obj << -/D [692 0 R /XYZ 117.8281 715.0952 null] ->> endobj -98 0 obj << -/D [692 0 R /XYZ 117.8281 279.6048 null] ->> endobj -691 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F47 632 0 R /F39 472 0 R /F41 605 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -697 0 obj << -/Length 2071 -/Filter /FlateDecode ->> -stream -xÚXYã6~Ÿ_aÌ“ ´ñ’ÄI0 ¦“ÝyȦ}ØÍƒÚ’ÝÂèèHrz‹ý暑”d·ÚNæ¡"«XõÕAÊU?¹’2©Jå*1‘ˆ"™®võ›hu€ÞHO¤m*bkq¸ðu«c#däbèY‘áœêµ”JèDuÁ:k$ÿáîÍW·&YÉH¸ÈÉÕÝ~%•*Uñj¤»Ëÿ³þn³µÊ®KnnÛ6ßÄa¿ùõî'`°•ZXãÑn™h×ÖeU6‡i ,Bl¶Ò&výÔµCÁßöeUœPíx$cnë¾Øý5N,ÝŸ`Æ„žŸŠNù}u+í\7 Ea¬1 r-”U†¤¸{€ý4,ûp‹­Y?ví¡ÛÈuVó|Þn¶*]=›vàNÛQõÌ\ûÀªœw¶ÿ¤A‚E:5—}È$MA5(Ë©eÎå·‰P‰’žö†·¿‡½ó̪Ehèò‚AºŽì°UIšˆÜ©=PÒ*Pâi5Æî¯õºôm^<²Jš|3R‚:èãÖÓúáðPN4;ÒP_Ü,éB¦RH+ã™.^Qz‹¬'þLJ -e@=[èXéù·›Dë6[c"o ÝDà:rÁýΉ=/±1’%€Â /¿a‚lQþX‰Øñ – ²«D$2Øp¦qdVö¼ýmF£eC袾ÝáøaZ ð…sýÈ÷0ßv5,$ÝH m“ssÛèÛ·€/®õ Û¶A°µª·@(™Ä–Á ·õL¥¥—XK NMÉ‹·LØî¹)%AúOá%¬OÐ$ZJÏCÓ2ÂóPtžmË-Z£c;k¿_öâ0Ù»¡e9ât¾‚§ôQðÌ¿G§ñ;Ì]ÄÄx…Ó6ɺöFw¬Šž ʲ¼ ve>w0 yÙ̽”–Ðq¡=öÅÒñèdN­‹/e?îK°´±H!G]‡¥L“ä%.µÓä?ȉ‚öP4€ÒÍxr„ëÛ†´½{DÇ3÷+VSûyT!LR|6è°ô1“ˆà/!º’S-\š¤g†.ë`::švó£E§áý—IÍÀ¢d[àÔR¤±Âj7*ã©dÀÐ{ÈŠ!R‹À¢Eߟñà€5šF"oAòt:, …Ö*!ÄTiˆ8{2°Í˜aψ£4•óÔ0 -Q|2äD)Oõy·Iõº{|ã8®÷¬¤‹Î»ð˜¦/t¯l(‰5ækäöæýÝXÑŒ%”Ic!0^*’FªíœŒËy¢6 ÕŽƒBl¤ó0N^0Ö£´¹Â8P½d|j ‘dÒÆÿ*h{Ì' -T±§fDÐz4¿wYž¸ 1À( -‡®ßåÜÃÈM!ÁiŽTdô¼6ë¦}>£$Å£ßÅ[pÆl!´ÔdÔº  è -Qh³SzÝ>3Á¢@˳]QµYÎGÄü!^€„ŠR{ 3²‹t×p‘ñ€sƯ`ÎøÝ~˜skò p†#éÿ€sf´¶Š© -&{Õ.…(íSãœw÷¢~ž—¢‚Æ`gÕÊm´´›ÁbÉ„½ËM‘@¹9m#oXê§“”g£8SY׿<×JH‹PBJPuR»k¨˜‘]DE »ŽŠ‹Œ'Tœ3~ sÆg¨0 ì3eAìgØ@RSáŽ3¬cB–„øµl¡a'±þ{×duÏ9Ì3†wÇKIØø6Ï‹œ»=g4ª1­\°hdÜFÌ5‹ÎÈ.Z4Ð]·èEÆ“EÏ¿fÑ9ãS‹bà#‹r`Çd˜ñ¬÷,GÑ’S*]ôs# ÄqëÅO -² -mbÅw^§ÐÓBVè(a¹ÍŸâõ§c5PYZÑ?Bê× mR&ñnÂXƒÕ\磃ësgàÏMÏ+(ëû¢cA^È2„PJO7o…u_†·Eå|iýûÆÆˆ5L ÙÁÓPÜŠ¾x̺lÃ(.ºï‡.Û <ÚwI±7•?»Pîq¡í·ìŸ™šå Où›vù:ˆû´Íkyrâl´÷ÃÍp¼CÁÎ=¥ü‚$Âo˜­ËG®ЗðËS9àµê´ÚßĨ†ä½.œ…xãà™ Å"ŒwÜïÝœ¨Šzé0ÌþEÉÇ—­Çpæ= ž}qðâ~_ñsÇv,²¥²\)b—„8To z8††Ç a7øñA3d·„-)°øðuú(Kv.9½|¢Z Ù0— ¶vgŒzž$C*—N†ÄY¼–ññ߸ù ß -*N“Þ)Ðz~»þ8&OX˜ùY„ažT…ÂYð÷²—,vÄj/QüTV£„o¼Ø~äux¶’çTÍ®+40b> endobj -698 0 obj << -/D [696 0 R /XYZ 117.8281 740.0018 null] ->> endobj -102 0 obj << -/D [696 0 R /XYZ 117.8281 386.4967 null] ->> endobj -106 0 obj << -/D [696 0 R /XYZ 117.8281 237.6282 null] ->> endobj -695 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F41 605 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -701 0 obj << -/Length 1286 -/Filter /FlateDecode ->> -stream -xÚ­WÝoÛ6Ï_aäe2³¢(YÒ†î¡[¤{æ-¶=0¶,“ÄT’“x[ÿ÷ݥʉª¤Ã`À$ûä‘’3~r&e,’ ‘³8ô…ïËd¶)ÏüYÌË3é„T”ˆeár„»ã¥ÌC·ë³×«0žI_¤~*gëÝL;Vñ,öC!ÕRÍÖÛß¼«f¾ˆ‚È3mVòìÃA¦=òâ 7'KŽôêç¿ûA0ÇYv~Êq€¢ùÈëoæ¬ßƒí ©D¦Ù±Þø§©¶SÊÏ?²¦µ”à®ç4èöåŠâË5üøC|Äçô1òÚµ©²IGîLeϧ¾ÛgY3±³u©óÜL­L³Ÿ„¹ÍšM6 ñKV_\‚ç¥-žÁ‹‚¶ª³gLÝÄfÚÝk]—“]l§!®Z0VW“(†e¦Þ=ÜfUcî²g ª§a¾Ï -³1öÐLÂlAê/c›i¬·¶6U> TÙ§(‹ €n•$0‰…Ÿ&!}DÞë•J‡Í *)TÒÇ`.=€ôj˜l Î"Ñ^ ÷†‘ˆTŠ ·Šù"”w=OB¯6°§Í¢<€!–­ænVgÌ–G Wó ñZýÀd»c›o ÂXvJWÖnÇL¿C_†N -ŽÛÐØ•9ŶÝgŽQè*?€ :'çS'ʳS .O3toŠb¾Rß»…íµ½Ñ70G¦º¼å5ª¸åé=²(L{&äµ.KÝŠŽ.(¦Úغî³i™j-ª<¸åéÝ H[ŠöWm§0ˆ=‹0ÐFj _ îVJ]h]ƒ‹Ò©!õíÃ3^I‘LÕÿQI¡ò®v<’nÈ-ö˜$ôäÎY„ÄûNiÛ¬-?OáJ¶lâ0<-›0ð.{?¨|4†õ‚UÿtßGf‹4{Çà½jXra%BXuTR2ñáÙ©ÓD„Ÿ /0ú|’ z”˜JŽ@˜Uë -õ¢ä¡V$g{}àôqÊL/”ÊûºìƒÂƒj¡½÷tÁãlc«¦­Ý‘mÞ¾±e6VA\:pdLÊOêö‚¹h1Mn{²®Ñ:hš‡ÂÃ0ƒN@ò-&ß6.œÄé}h˜@"ÚíÛè -ùÖ-¹¾ÝÎ}VàA„8c ªû1§1ãS@.a8ê:ãf…ÇôÈL„»y´ô´)¸ ¸m;Ü¡óÒE=H½–äµKXu‡*׬H£(èÚóR$´cBüIhö?7t9¨xI1‹#(OÈÚ¡h©·ô@ƒ†B´‚NƒC©ë±C€9Ñ2Lø~-9PÔ:œáà´è7Ë„œê©Óàˆ¡þîKÆʤ.ÎåÊQ9ŸM×mE‘9{·îßêà½P±Z΂D‰P…ËáƒþÉþ—^ ÅÇöA*‚$À¢ÿߺ·:Ø9ÞU¹ÈwcÅòT^'Nöq˜Á.FÐlN.à5^9õ‘C‘gUVÃɤ(0©²î¯?ètÒ_¦/ É@|2$ÜÀMH4ÿðPŒE„?X ó’^ž<åG Ï?}ÿtIüvëЇOšÏBÃ/õ7.aãG»ûVÚõ¯îŽrÓ/ÌõmªÛ‚º+ì̘Ëhß“©Eæ]ç 6AãšÒH~Ýn*ÅR©Ñ/Ø^fñIˆrúè’nìË -¢Ç -ûÏá§ -ÿ_wºÄendstream -endobj -700 0 obj << -/Type /Page -/Contents 701 0 R -/Resources 699 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 703 0 R ->> endobj -702 0 obj << -/D [700 0 R /XYZ 117.8281 740.0018 null] ->> endobj -110 0 obj << -/D [700 0 R /XYZ 117.8281 363.1852 null] ->> endobj -699 0 obj << -/Font << /F47 632 0 R /F39 472 0 R /F15 459 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -706 0 obj << -/Length 1507 -/Filter /FlateDecode ->> -stream -xÚ½XmoÛ6þî_aô“ Ô,_DJ*ÐëÐí·aÆ€¡-Åfla²”Jr³ûñ»J–%Ë`¾ÝÉãsϬæþÔ\©D¤:Uó$–BJ•Î×û™œoañýL!cSá¬ÅáÄêÒ¸X(™9èY‘‚àXêž´RZ˜Ä€t"AÏ8ƒâoW³Wq2WRd2SóÕõ\éLèT»ù ·Ú|Š~Z,­¶Ñ 7Ë2¯¶o.êzó®ÚòÔ‹nW´Ü]ï¼o=÷û¹o¾¹ãÞÆ—ź¨í ÿÍMynùC—/¾¬>Âé—ÊgšòõàÛ®fáëºÙçÛm†Ÿ¥Ö 섽÷uÙKâ¦ß‹º­Ñä« eÇ7ßˆØÆ18Òˆ8‰-môÞW¾É;°¥cå¬h²±¢5"M’Žˆ -û…ÑÑî¡¢® ¦¨¶‡z:É¢®ñþ*¯þœ:€RNdƨ`è%oY/úÍ©iѦïp`¢ú[Evq¾åéÛ¢Û……/Vìš¼Z(Ö/¡“wE]µäÝ¥J¤H•LO½\T p†‰6 ]|–ÊÐ Œ¨S-tu,R’m¸èÖÓ¯ÑîìÝj€Þ€<W–iöD˜Ž¤Ci/6é¶ Xªû+ß¼Ñ'@C‡]ö/èÒ‰Y“…m%+W»¼ãÑ/h˜SÇÕß@¿­xhZÆkYþg¼VuÖs{ÝpªÇÃìŠNõãw¼h|»{æ…®ÁÆúnqÝïý´H]í< ŸBD‘Ø$ A…¼2e<“&i/P·90Zl(pÏ».zÁS·»bÐßñpx¯þÔk<²Ê·w!ù_ÁTÍó‡> -ƒ\±ÀX¢î ÆeÓ⛑J^m¸S’Ð’£Õ*áŒËNéó¦øN1 |aâ8z{‡­¥è¥x½Fㇲƒæ%/KÐöûK£*>Î \C [Ÿë9¦ì–Åþy.ª›ÎoXt‹t‘ïq}Ÿ7áh«EjØVöðSø¸%|'Ϭ´<™7ž;ÄS6cSëÏFa<ˆ‹£W#`d¸ŠCÓd fé9Éi/YûЙ£¼ /¿§cÿm¦xv©ˆÈî;ƉPVÅóhCiùëìÓ9ß=~œIa²ÔÎoa …ÊÀÖ~à‡ìßËÙo³_GÚ[\ŽMNq¨•Âø[ã)ëΉoBÚŸÌ›.‰v6„Îüo²Ùç©Ä?Œù¹q}‚.¾ì¯0,~hͯZÈ‹ë@C¯9i*ÇõÖuµæH?×{ b=¨ -+·ƒ¶´™yCYõdþûƒbêÀéx‡Ô O"„,Ÿç)( °÷p‡©Óðâ¹+ –»^%€´zÐc`Mñ­±oÖ;Úø ±LD’+•‰,qé³á>X\ŽMN'çi¨‘Ž[Ÿ>lÀúz?åy ^ð{ö¯XשVjóD¬ÅÃú 7Â:;øòxpþOØ?°å³`oRp©È¬Õg°jK5‡|,fî´X2*ñq»À:wI…nHÑ  IÍ·-Ö*˜t'Þë¤TXo@uÒ5§©ŽB¤jKJ±!Mr"Ç4RLÞaÜPÂàùP(£ö6Çl -Õ: v<Ÿ³bЩöM¾çô2¸aqr-îñ ÿùªðaÇ©œJ'BVÀØv†äà@¡-ºÐ†Ë9;ˆÔœÝCñOÚù((º2«tˆüðèýv1FZ; ßS uÚs‰`°¸›œˆ*#Sèk}ÜÏÊà8å‚®}8ï¹pGÁúÜŸÁ8ÃIÿÉ0¿œ;â„*:m3‘JéNߊX\Ût >Ï3WÇ—èÐ=+ =é$Q^–Ü!¾GÓo4²K¨%é&A½ež½¸à…ŸYŽðÛMf€,ϘxðÌ„ó ÀLÒû®ó;¨r$r¾Œvêü[ᘂN¾ds IÈTÁÝÔ°»Å}–¿ºdXF›É_U™åQˆ0töÙ«‰Tƒ)<¨v÷²]âDœ=±á?^e[¬endstream -endobj -705 0 obj << -/Type /Page -/Contents 706 0 R -/Resources 704 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 703 0 R ->> endobj -707 0 obj << -/D [705 0 R /XYZ 117.8281 740.0018 null] ->> endobj -114 0 obj << -/D [705 0 R /XYZ 117.8281 228.1654 null] ->> endobj -704 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -710 0 obj << -/Length 1277 -/Filter /FlateDecode ->> -stream -xÚ½WKoÛ8¾ûW貈 Ä Ÿ–tØhŠía¢A[,d™±…ê‘HtýõáCVlåXøÀ!9üf8Î7f…‹KHÊS%’JYõŒF[Øü4c^I¨”,•ÂéÄîB,%a4[‚¤H -Šc­mÆ8‰í„Â9±¨þ×jvq)“ˆQ’ÑŒE«ëˆñŒð”/£Aoµù˜/W±éç?VŸqÁB³TÚMÓåM4v¹qÒîtŸwµ“ŠÖ½vrÙ»qÝve³ ¸L%3nqo÷ºªZ§uÝvu¾Ý–~Z·•ñb‘W/~§œÏQð&š¶lûv -ú½n>w}p¹ŽÝ•Í©·¥É«2ožqx¤¸ÑUùë9÷ÿ'3fnˆÒßÙ‡¬lŽÂtPDä¢l÷¯¦ ™2ý/.E -o…dJqÌMÈb"•”˜üDd™²ª’Ì,–sÌq¯æ™ˆ;\ sWV4%-¸-üJå/‡ÏÔ8÷ÑÉ”¨%¼^Ùëó4‹Ã˜»¡G°²¾Ax¸?Ïh\AHX¼Ýç[ít4ê<Àš: -{ª÷ ¬Ø$DåŠÂ†$ö*ùtL[‡xˆ¼ª@|t¶¾ÛÉ7¨Æ×¸1†ÛˆLÆõL¢©Ê”Zià•ÛÛZ@ëAwÄ-®vÚ 6½Ñ5Î8ÓèÌ÷nš»¡×Æ íµ;f1›óË«¸[ð46º)´>ŸòyƒÚmý<â×YBHw! µ[°—Qeðéµ[«¬qû¡Îݺb…ÁvºÀxü<ÂDyßëî̯ÛÏmý¸ÇS>øf‹fï†Uï@Ùkxo³ÓÝÔõFi„ÁV)ä3`x':ÙÖ.!Pqã²ø¸‚Ã+að8èá©U?ý =û¸:0 å$’GRfD¦ÂrÂíìÛm€B>Ï(¼²TE÷0¡„eàd=Dõ„y5û:û2"¥€¸CNÐŒ ð‚º<˜vu ¦- -z:¹z§JAàÂ_°ÎÁî]Ð\áB ÃŽcî†~¿îwÀ*6ö .É2pìÉ7°i*Düé"LŽc6©¤ ‘àýiw¬þízcÚ=|Âÿ!ºlÛÍG ¤a¥yªÖþ«+H_§C݇ËÙq5Ê»ðð'+²}õŽã‚¡è·Põ=!ì´Çyl÷NØåwþঠlÈ·ÒyïEFݨòú¦Òý” ÷%<ÇçåÆ?ÜÐï ¨#ýäU®‚oE ²²1ºëö7&t1'w]{ZÓ¨Y†°çÞ‹¶éËÞ -˜L#ÅMk%+zFÎ``d’ ê½.ûÝÓpÛFå•®àF÷…žf×0Mr®Ý¿ÒÓQûZ´‡`ìe§§:¨Ð9¼âùQ§÷öžÎ»ÿO{4ÍiSö&t°Þ›w:;´aÁzNþrûušúáFC¦ÁÓš¨‡> Ú™f®¸^ÍScæ Å\æ Å¡›€hZ)°·_wC5ð­qmu„ ãX|¨¸÷RÏãk3ÄeåÞòwàJ¡„¥lã6Kê=ùN™ô N!òÓj°aýÞ;³çn¶žó ›&!¤ë½´“‹Öw7Ïó©`ð²7ð)T{Ådj)Xqš½ŸOâb 9ŧLA›ÌøÁ´FªcàÓê”Ïü_ÑŒ‘¥£ë ó:‹ƒ’õáiÚqØM( Ðž”É ŸOü ´WÄ[endstream -endobj -709 0 obj << -/Type /Page -/Contents 710 0 R -/Resources 708 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 703 0 R ->> endobj -711 0 obj << -/D [709 0 R /XYZ 117.8281 740.0018 null] ->> endobj -118 0 obj << -/D [709 0 R /XYZ 117.8281 540.6135 null] ->> endobj -708 0 obj << -/Font << /F47 632 0 R /F38 467 0 R /F15 459 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -714 0 obj << -/Length 1432 -/Filter /FlateDecode ->> -stream -xÚ•WYoÛF~÷¯ü´J¢ ÷à•"}(`i A ô¡-‚µ´’ˆR¤CRµÔÿ½s,)Q–SÌÝÙÙ™Ù™o©Ij¢T*3©Ij#E*›Ì7gÑd‡Wg*0™8“IãöÈéÌ$Vª(O`Ë ÷¹žp+¥¥I p§Ü3‰Aö_®Ï^_Út¢"™G¹š\/'JçRg:™ |׋?ÄÏÓY¬cÑ5®jK×uõ¹,ÚŽ©³j»¹ñÍ[óþ²®Õj·y×9ÞüËŸ»¦èüçeQú}±²»ï¦]ÿúúRÅûíÒÆÖÂC•Ôyš“E×kÏÌcóµ–V[ F&6ì˜P“Ê<ç1ߟ‘ŠlŒ«âŸ©Î„oqkE·ž*áy]áÁö›©NÅÍtÿáH‰†¯ÖKþ¶Dî\ta©Ä½Ô•¯|ã:¿lœÉ&ÊJcM/N"xÐfV<"EF‚w!б¸"nƒŸCÕi,ð‹:Œë¢#UónKD¿S¡dǤ"oj™ê(cÙ9UÐp›ûÎW‹‚¬_üYè?â]®3'6b53Y$65ø, ôah-Êy-:¿a2ù2ÍÅÕe¸êþÂ’)QÀ…ŽOn)5]o‹›2Ä+C%êðú|„@’µYÂïé­Çb•Œ2ÕÃıÂUrGþÏEQñÙŽŠ%ü›¡8pCªel¢PldlsM‚–¾ñ&x ZÜ!žZÉ$ò™Î3Ñ>0§»çt ~Éè2‘·EØ×5²ßò åued[Öè§’yñ%èP 4‰¦ø»Ím“Á¨ß§™eÇVÒõŽ=€bBåï˜ £¸2·—@ {vq=”Ö¡²Æ^*NN­Ãûìß«Ã!ð¦…b9…÷}Ýø%z’vow—W/^ð÷l¨¢ûaç=øœ×ÀPÊO 補KðÓóbÞµ,á ÞQŽSãmåãÖ•E÷pH|ªýtН_ÝHöoEµ™ ý Ñ!e”g–î=žÞf> <%|YúÒÀ&¢«Ã—r»°àŽ+—wÿЉCº¶¼'P9ÌRS+ÉDvƒÕ±(ƒ°%ÀšxèB=à±á\VÔažj¥£öͳ`5±‘©â)à°î³¬«®æïü¬Ãd€9ú]œ'¹,ªÀrPòm ÌO]óøÿXM'`½@þeÜŠÃö¼hÏyõòåîºlÇ´ H¶§¥Ä3ºn‘ãüñx–ì‹zü±alf°sÀ$exú l"5ájmbá×s®dbÌÑ_ÇÏlÇDë`Þ„Ó4Rƒ(4Eg‡ -mšH›}Dá Ó¹endstream -endobj -713 0 obj << -/Type /Page -/Contents 714 0 R -/Resources 712 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 703 0 R ->> endobj -715 0 obj << -/D [713 0 R /XYZ 117.8281 740.0018 null] ->> endobj -122 0 obj << -/D [713 0 R /XYZ 117.8281 654.6199 null] ->> endobj -126 0 obj << -/D [713 0 R /XYZ 117.8281 620.0353 null] ->> endobj -130 0 obj << -/D [713 0 R /XYZ 117.8281 199.1018 null] ->> endobj -712 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F38 467 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -719 0 obj << -/Length 1536 -/Filter /FlateDecode ->> -stream -xÚ•WYÛ6~÷¯ð£¬ž™¢Òc¤(ТFó…lkmamÉ‘äu6Eÿ{gHJ–lYÞÀ&‡Ã9>Î%6¥ðcSÆb¢¹fÓXRB)ÓÓånB§k8|7ažI(M"¥p;p:‘$ŒšVŠh`ìr]p3ƉˆpÇî‰H ûóÉë{O%†6?L7„kM[¾ùêc,ªºL–u8S\÷å!óËïÝß¿á§ù{p‹H%%hDIÃíÕeryë;ËNûŒ‡Ü¾Ýï·é[ÿž&Ë[¾¹"f6¨ö¿F 5Z¸ñÛ¡Ú”E±ûfOúÇù)Ý{WÞ®“2[ö|4âÎë{¦ºoubÂÈqÎ7és8œ‚½`ƒ`&Hê´<†\I¹ -YP¹óE8Rê™Á -Yž®ÜÅ,ÇKuáv‹ ×k¸À‚Ò‘Öe²Û%e+¸ŸÝÉ¡Êòµ3Z˜®ÑÝâ‘ÄÐÜ](xpØ¢Ì:ÛÛÿÔáÐ2ö€ÈòMZb°ÜcÁ²½qŽNÄðá™× „2’·²n| µ]åð¾@ÔÀ¨âÁ1Zjú:¬ÐuP½ugÖkKéq2À0ÁÃz“:B•ìüªÎvVÆ4xò˼MÐ6?‹Óæ¥ÙÜeËæ–o ›‹boø˜öSÉw”» -ÙW¯nf fÂÕC+ù×,‡xãŒÒ³·¤ÙŽæ¸®&\c׉m0Ç®Iû–¬ãÖZ÷²î­M”p&!ôëM‘ !!öàC˜F@¾sÇÏÈZÜæˆIlWŽâî¸HÛ`¨í+w°Í} ¢hLJ¤®ýÿ"Y¢¨GoBá,ïG‡Žb"û”Àr*¦ÔB{®$·†wIW²·!_é²)åYê~€Â2¨/Ž>[m {J†¨à.éä¢GÈf~™8`†–È´ð".³üqH³à„Ç\6¥¨°qe_Ê„+^#×(°ÏV\)I$”Ç¡ýêØÞTm!&¦ -þÊpW”Cb ZöÕR Â-Ø‚ak*èòÏ@Vâî°¬åÕ²†-MI§úƈ¯`ð0Q'¼$@OíÓÅ®d–͵¤Æjt0wk[»,±­¸«ž]GH¾¤•?Ïýí"w%œW©çÇjUù²Lët(sû2…Šƒ<µ–­1T<åÐ[˜¥tÄ;Aí«Ùx*ÆïöÕ"Vº]·¤[‚…«8õ‡fQ{kmŸ¾´9]o|1ÀÓw@¸wË&¾f¾â(E˜‚ í¡qØ6^WT2Šƒy¨† ®+DFFÚ>ljŽîÞ++ݲ…ÍçI¾:EHÓ/+'ek¥ QÅ£»¼EÛ^‡%+êÆ°Ø±‡‰´±!l×4$ê] =ÝY$­_o׺>¡=3ýÒ®ßeëú-j÷¯ùçÄKçJ›è8µcÍÚNBˆ–æc¶õC‘ïz{·Ã(ñË,¿,æ©ë#Ií…3¯Ml³€´ƒ<#ŠÑ ¹C6œ"²º„Úr1 ÕÓÀgÕÐGUË5ë²9ˆYb_G>ÜZ>4ëoÊâ ÅÂHB Ž+n¸.÷߆I¨”š¾b ×SUÈM¦Ò÷±£»º -4, îm³øÙlõSk¿ ŽàE„‹ø&޶Q¾Û8Ž*>áx®øŽ]ÅÕçCâ;c¢>£Óãxj ýžÚsƒ%Ž£XJAtlnAyâEÒ³ÝrLë Ç3­×`ìh]l]Pá<:Û¤É*m¦¸²t¹Ç83DÒ~Þ}Ú ƒ†Ó›¨uØFakønã6ªøܹâkÈu7ðáã£è[ óEù2$aèšYrÛU'ùaQö’¿àmRã$PäWá7 aqüÓNcÊZQè?7ç -%ô0øá -ÿí£{àendstream -endobj -718 0 obj << -/Type /Page -/Contents 719 0 R -/Resources 717 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 703 0 R ->> endobj -720 0 obj << -/D [718 0 R /XYZ 117.8281 740.0018 null] ->> endobj -134 0 obj << -/D [718 0 R /XYZ 117.8281 398.1295 null] ->> endobj -717 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F38 467 0 R /F41 605 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -723 0 obj << -/Length 1603 -/Filter /FlateDecode ->> -stream -xÚ¥XÝoÛ6÷_¡¾É@ÍòCÔÇ€¶Ø°%[°=u†¶›±µZ–+ÉñRìß”©D. BñtwäýîS‡? ‘±\æ"ÊÎ8y´ªg<ÚÀËë™pLJç,Õ·oîu´yÁ -žJ䊾Fž“Ü×™J9‘R퉯~«Uôs3{7‹Þ5º[Éh¡5\«Ð)òþ´œ½º:N)D´¼‹F-s¦³TEËõÇøæ8q7_ˆ¸Ÿ/¤”qÙáªâ~ /ÌüóòæÕU’…Š´dªHàt”¿¯ºc¹«¾YÎÙ/Ëáb ‹%:Qçã¬]?óh ¸ÜÌ8hÉut‚ g¢(dTÏKTšøýnö~X:h\„*­¥ã J©Y^ðlliß3Q¿¦å¾'ëÆ0iÅŠ´μUS#6u¹_/ ¢~kè¡9ÀšÇfOÛ®9¶+ãàk`Íâfçà¼F8´ØÌ Oÿ¥’q%RxRL'`6ž‹ç-”’ñu[€;‡sî«oHLâ²µ¾±Ï{cÖfÍÈ•ƒ›Y¡µDS8Ä[ʲ¢°*5ÃÃø'Àø÷]o¬i &Ó`¨ÝXkáðn -Ї€¦€6*\Îsƒ˜*T¼n,«c `ÀCOä|Th·Ák—Ðö刅6u‰»Úœæ`ªëÝiˆH[Þl"EÇ8ÈìÇæ$KZ>q‘ìH½ŠŽàc¶¼ÁAd"gd ;ì7SxÉŒ©,ËWp&ªí·%Ü=áE¼"ÌiskÃÆñTûÕî¸ö÷\Gå8½Ä¯Ë?~§§À Ȇqï¬øsž'fܬ¼,HØ „ª$Ï‹i!«$ÞË9´¤ ÊÒHpXÃ"â É ŽçÀ1À8Ö’XP5°ì& ( ú¤ö¹ÉÖÍdË” ¾@Q&áI[äÞ]£ÈAf¬-]µßxæŠ ô—¢aÒŒ‹L¡:U=Z¥¾W6ÅR[ܬĥ»s– 1ÓP«)Õ?qÍr×6µ?Ìk4¥6p/Bö‰Z,dÁ éjѲ7T5­‹dsoÚ×k„¥ýKËéŽÖ«¦YCÑøbzïöÇët¾ ™H÷³sJ‡¥½yòêB2ƒÉØ}°X`ÁÖT­xïÊ  gh®ŽÎmÖ"͇§PÊ|[ý3%‚¥‘§6÷@êhœŽ;°5m®¯ˆiHL  ½|È@ Gw[³ÛM–;+¶*]C£ð²´‡¸µôf7Ø™ûÅdSe™Ì¤Ï[Ò¾ôÁÛú¼ìŽ»ÞV‘ qõBùvÐW³-©§=Q«=5Í!/lŠ›ûªqÈ ÍŠš•ïÄU³g”Ú *Å–‚iQ¨ÀÁ‰MS @>¤™2âùÉD$ -Л‘„:¦”þÿ‘W¸4NÎCg5ŒW¬ìj4A6N¸.uÑN†Ùvh ‘fc3I⻦¥0}n{OØ@bCÄ%QE۞ǠÛP;b“ì«^ø!)eBçÙ8h70yB\ÚÉ¢tùÓ#AÂ,po+_;€,´M£¦­Ë¾£îoš;8m«ÞbK[ë‘Ü”ÿ¥†è‘iæpzTÑ&pÍS9øŽøÿÆpk±‚oŒLèGca·mðr'àLÔ¹¹âsMl}¤ö 4Ø? ®Ï½OüÕuŒ˜??'ožÀ|D—…"r¸0ï¤yæ vvÔÛÒk7'Ÿ·vøBsnË-QB÷ anØ¥î E8—òQØ¡‘<]íÊÛa°ûáb“0#ÀgXþ̲¯Ç |A?²`ùu¡mÙ|è<‹ù’+¦»ÕûKÞ•L)ií€L5e»àË÷6Z =Ñ'PGÌekèm¿m:C´!„Ë[ƒH¥j`y±eáŠU¹:øA—"é¶Ö¢Œéh&ö<HtØ—27.C_¢úïJ|8êMÕjÅDøéýí3Ö¥8¾˜HŸG!û÷âhà |¾1{Ó–½ù ¿c»ÑŒôÖJ«§÷t¿XØ¢Õä/ÏâÌ4ñë„·ƒ*¼™âL2˜½s%'üÒKuendstream -endobj -722 0 obj << -/Type /Page -/Contents 723 0 R -/Resources 721 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 703 0 R ->> endobj -716 0 obj << -/Type /XObject -/Subtype /Image -/Width 360 -/Height 165 -/BitsPerComponent 1 -/ColorSpace [/Indexed /DeviceRGB 1 725 0 R] -/Length 1150 -/Filter /FlateDecode ->> -stream -xÚíXÏkG„4‡Rò'„R‹‡"˜KRµ°ýŠ7Ïm‰R$„€i.ƒHK¡=´å·»07aèóÕžÝ_>þÞê -më_ -:Ôvô×7û®ÎG0`´K)¦”„wŽËPl¶†S°¥ãäÊ|ÐRÚ`WçTßЋÈoªÑQ‰*å`”V1r¡¡¯¶/ä±øð%’ Mù@rùò¥¤#a«4íå+ûEiÇÕ1È—'Ð×<Î[a —»œØòmu‚D#uQÍí2/Òoš ¸á•%ÎÁ2Õ§’ëdîOžPîÉCRð”Éò”‚/+À{ý*º20 Þ¼ÔËÎoú MI»o…RºòE|ËÎô£­ØLW¢†jÐ';_^‹“V †L±ø…hÁ¯“kÍ\É -O´ŒG¥´àL)b0—¸§Älé)Ÿ¦«4HÊ¸É ºœW(&çÆÃ´R. âÈÜÈU×ÒoØQêV8˽9qq8ŽkýdõøÆ@”—`gðÛ¥þëìðéñv®Åà‘Ÿ'g£„yü}{ãñ³Øm<4¾ô(ï.Þ=óê(ßNÁÓü ü?ùn–#ËØ=?9ƒLÿV}F€H€ï\XZ‹ÀŸÌ.}zæ•Åó¼K…e 8ÏÛ€CÅú¤­ Šò>ÊÝ‘T~êVx‰üúL+ýìnç—(½Ô;™¶‘nÐÍ0´+L8 -¤`/½~PÇF¨ÎSMv^¡{V7?sLÀIîü"}$àŠ“Œc]¢}Ðx:aY"Ëš´Ú¶ÕæÜ3è‡Qì-#Ž}+Õy?¡JÛŠ>À¡]GF»ÐJ«¼S¤B'‡&ÊuÞ;¥’ìcãµÚu ìiûaS?,P[ȇHç—àþ-J³è{ŽÚD¹vÚÉ9ðźø´ˆ({È Õ†`$æË…h¤Ûa·!ñcL6ø†f`™_Ë´ß l åÃ’Õe2G¶Œ”¡@HŸggµEp?±¦2ŸÛÙoBq]Ízišlå@¾5þ¦ÙûZî 8œÆÙ>°Ù}MÑ‚A œ->6$®WNr‘]$cÈíœ\Nn^‹Ûæ@»(ÀâΫƒ ší$Êê@8Øö¨_᣻ÿ¥ÆÓLÛ Ì¥6t*‡ü’6†öÖ¯ Œjó+> -stream -xÚc``øÿÿ?þendstream -endobj -724 0 obj << -/D [722 0 R /XYZ 117.8281 740.0018 null] ->> endobj -138 0 obj << -/D [722 0 R /XYZ 117.8281 498.0247 null] ->> endobj -721 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F38 467 0 R >> -/XObject << /Im3 716 0 R >> -/ProcSet [ /PDF /Text /ImageC /ImageI ] ->> endobj -728 0 obj << -/Length 2399 -/Filter /FlateDecode ->> -stream -xÚ•YÝã¶¿¿ÂÈ“ ¬Y’¢¾Üiѽ4/REë×ÖÚêY–!ÉÙ]ùß;$-Ùt6½NüÎ ‡3¿Òj!áO-”*D©Kµ(ŒRªr±i?ÈÅ&?PŽ(ÍJ‘gv#³+S䔩^¬¦Lþºþð—Ç´\(#R“ëÅúy"L¡Ò<]¬·¿$ùr¥”ΓŸê¡;÷ÐI6õr•YÒvðÕÉö|ÀÑzXþgý#óT¢Ê2â)@" --ËÀ,ŠXfÉ{{Çm‡ŽXmë#õŽ5÷:l?sûy©’óq3âPCG{à©)Ù¿Þ¶øi¢Ø±†*[()*Y)§¡.E–›‚4üŠN³dCLÚ“íAR3t4œ'#ô:×Ü/Q5b ‹',•LE¦AŒ$–bó¬¥(NÑs‡‚H[‹BÞ’"ÍTáeìþo´ÍlF—I÷&Ù['íÇT¿.Æ ¨ä‰— µÓÑap‹âÁ”R‹,+ŠÅJ L¥Ið¶níqË"t!Aꈭ¼beH­š§6(jo{»ëÞ‘£à¾ô ¬GR 5Lôó²L“îŒd„ì¼ú¸ì”}÷ÿÛ§Ã/AͺcÍqß ^,{£}Éù~¼Ò¬rŽrbZ•¬°‹B쀭±^ñÉf(¨A×}ãµm=î/3<ø‚̰C‘ìq¤LP!œ±ÜÝtìÔä“ÐARË -ÐÚ‹éýæ»fËS½?ÙÛÒŽ ‡Åõ_hYÿUøI­D¦*Æ„:œ%¹õÜ7`¦„mïë¾æ&*oJÊc·íü­9Ô;pà0ò ‰µÈøÍqâ€c³í˜R&}}"óÑ>€rÇ”^y¯ ÇqÒ©c;Þ¸C\±«Þ$¬—xdÔƒñÉÉ ž[ï]¤¦Õ Œ\­J…»î@gÀàjnuÏø|CT#¸êpCj8|Bãv;À3:û&Že« j¶³ÁÔ…¸#@üÃú_‡<Ð?Ó) ™F“I ZMÉ(™5Ût -9¤‚\èP“/R7‚ÓJä&7ïöT·‚ç6P&JÊj.øe_g® -†ñ‚~ræèfɦs=[ |æðÌ7GáüNbTä¸Ð~Ç|>0S@3ïa6æœÏgX€žÁ‰(MüŽ£Ÿed.„.48@*…1¯þ8Ãð- ÜxùÄ Çyœê,³Ä %Ga=±MTJ}½å…¼dtÄäÂ0ºmÀ”i€Ð`™‘é~¡1Σuš8ÏÏíLz,V1¬wþt6Uˆ,‹CÍH'‰Ë²‚ÒÊKÛïÎ-Ä%T4ã .H¸*—žÜq‡Ô‹øRèR掔²€ô˜Î"ls´Êø<Îl± -Á/—9áК€ ´Ù+G\ú¼@çBæ…™[í@™zw¶»Ú[A”ÚgÂ9qÒ×qª•Á› iÒŒã§ú£ùi±~5]‰Ø[Æ”cìð5Äëáp£)DaªìJ›+ÔTïêpÃÎ2¥0ô©i6ãô‰5Ðà-ÿtpimìø;@ã†Z´ëÜÀr^ù`ÒÚ\ò‰yi è<•®D¥•¹ -Sl'ˆÐˆL ­K’PÙ¡ª‘zî©ó©²Èºɿ¹îqËÑ‘î×e… ¸wÈE! 5¹hwøç‰î¨Ú¤”çB~[$7ìúœ‡?,áù’ñù̧ Ÿ|±òPÙýXBšS„}w_ð ë 3h°’XsìFn',&Iê‘¿#^l°ÁèzjfG¹×Q܃7û4ŒXƒr—~ÞAí+Žir¹›–?ÃÛ<±´<Œ ŒL¢»w¾ÈLFï1U5_î!ÓGÄúP¨Ry°^êE>9nHɃϣ›d—$mì9$Y¦¾V–ês{pئr‘WÅUCâ¶¡€¸ÈäÑ‹Ì-ø«4ç-ƒB›PQ«¯ÇÚ[«Wû*XÆš®tDînØyòe:ž‡;µ7ž(öÑå ÷Ñ*]ßr‡Îxý÷±ÝÕ-{)óÀSÔ"_ÄUŒ¨oT¹ölc箕)¾ð‘v§º^.sa*39xÉÆ2"^Dá_à¢1–lµÐJ•WN…ðØ \ê»2†\"E¸)Êkx$—h£;ÌD´¹ãר²*ªÉÝ™ J‡žƒý:ÁR: Ø,Ts|Ð¥Á”Ž£?L "$o¦ZžšPEýjÛwÒÀÝ:TïNþ6ŒÏ®Šúö¶ª‡£,Ò|¡K@È¢œ¥ÉHuï¨WSr®îçÈùH—zÂ68 -ÔçY‚y¿ßòç_£_}âïo7ó¿së#¾Àõá5¾ÄQ¼ºßÅïAJ˜Ì˜y¼¦c3›î’©¤6î&Oæ5eÀŠXu'!•áéÅžN‡ÆID Ñîˆéj²¬“Iõ*ž®H.ÿøCD[n|†±Gn¾xtã’(v×ÌdæuƒRûtëh„I‘û˜d" -K(€æt"Çl6öê -B*wÎ5Ùm¹8œ=|¹xÄ`ðQÔÀÝÅ7õÃ}‡Uøiª?ë°ò?tXOGcçSß> endobj -730 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [212.4502 448.9261 248.7458 460.6156] -/Subtype/Link/A<> ->> endobj -729 0 obj << -/D [727 0 R /XYZ 117.8281 740.0018 null] ->> endobj -142 0 obj << -/D [727 0 R /XYZ 117.8281 715.0952 null] ->> endobj -146 0 obj << -/D [727 0 R /XYZ 117.8281 693.3333 null] ->> endobj -150 0 obj << -/D [727 0 R /XYZ 117.8281 421.5838 null] ->> endobj -726 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F47 632 0 R /F39 472 0 R /F41 605 0 R /F40 642 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -734 0 obj << -/Length 1594 -/Filter /FlateDecode ->> -stream -xÚXIoÛF¾ûW>Qˆ4á,ÜZ´@SÄmÚCZ@u4EGK¤BRµÔ"ÿ½oR¤D)F€ÌðÍ›·Í[>YN|ø''RF"V±œDƾ/ãI¶¹ñ'Ÿáð—é˜t‹0ðsätn¢P˜X«É¼/äÝâæíŽAƒH‚@MO=e¾R‡z²Xþå…Ó¹ô„†ÿ¥ -¼~­òé\G÷ µ©×åŽ6YŽ4>Ý ¡„½ô–»5±ñA3ÒaK'ùôïÅooïd0‘¾HüD¢!þd®b„&" >«Šð¶ôª©ôÒ¦¬ð²ö–SÉä_ض±°”EçÆËÒ‚[ HE–"[ïºÛK¤+Ï:æ”—¬,²*oÜ¥úPLUì5é^0÷;¼¹ ³7«üàîW9oвA÷ЩE`EþTyº^#oì{dog¦´X’@Ù¦ètc³Ý:­˜Tç ³”OÒÄ[ƒíNNZ¡Èië¢Á—*4vM<µ`Ò‚mF‰ô®È½[/Yf•‚KNa¿oj’˜£ ¾×ü :é?¨Žî|ç~Mzª,¯Ç^?€ä‹Mà¸wuú¸fß´6üF g“Òsø‹Ÿ -íhެäÒßÚ=\NANÌ)TiR2á\‡x°Ey=‹¸«Cu´ŸŒµÝ‡´ ãÞ4/Û¸‚}hu—ÐH¢$5:8&)Rwu¾drSòºM³)œ?OƒÐK? -qgÚ@—[x¾#Uí"j¹–9¦O‰kÍ@¨U‚Ú)^*!`¾>MåÞû˜$¡úäÃŽ Û8"ï×¼"ÞØ³5¯äâ -|N­cÛ¥ëŒÏ_l³â]Ê1_ÓËø‰bÌT¬ d*ûm#ÅİÔÇyu’ÊTµB¡æQƒÎØâsíÒ¼Xò¦ó7+«eM¹uó~Ñ5_è™BG:œ@V(Ø~ƒ>kÔó¼ÇM}úä•U"T¬ŽBY9 Mß7û€¾àå?òZ¾ ŒúÞ&Ëøéý= øŽ—Åa›׃sPÿ•wß¶Œ3nÞÌt„ûp)û!G«Ïqì¯i˲¡¶ûqe×”ÏCžÖ?ð÷Â}¼yÃëAÔ@—W,ÚVù“Ý¿.WÌÚÎö—ÍÚÚŸ5W -R*އ¶}ëó.)´&‚挬œ:N‹¸k|TJXüH$šÇ1å¾É©„`_6«¶ˆ*¦s¹/­7¾fÌg´fåXëtãv/Ø*ÓvD¦³ŠÈÆæ`Bn Æ aX?Ƨm›{$Ð;§¿ë_ í°•.™í, }5d=rQ£!†*c/L[¬¸s=d؆eØQïØÞ’äÖ¶?Fq¦`ûzDYvÝ6³cÜ_ÅAWEÓ‡‰ÇAzŠ!Áö2V ƒGœÆGrZV€Þ„#$ˆˆ°r1%è1º0]OpáOHÜGo6hæc1Ò9D{d`F±P: _7Ùý81££3Á¡btŸ>#…:¼ŽÆñLbEG°ºda„ÈyËÕê H‚Ï\€-¶ªmELù'ŠÓÙ…ál }`šPÂ`þÁ\éEaÍ÷éf»Îgüõ²Ê[Fn?A@Èó y]¾‘3¾ƒˆ½9=òN¡Ò˜öE[{J×0aØPŽÙê:; Û@°¿Eþ•ý½ZUÛÒ¡é Å¡DD­©we¹|u;–£O‰ß"öË H< Ö¯DA}ök0¨ãä=M:4Z¡Õô…·¥¦)€Ÿb8Ù¢œ°áO™Ø.øÕ•¥ÍÔ4ãËš|ã¶¿Ûbé¶ŸvéÚ6‡!í”wº“z¢õ²ÊXPÉ»/#jZHtä"ÈЃ%·¶¾Üÿ¤Y¬¬Óü<Ð4Ù¬:©ÏWeAP¿-+m^!ë|Àöe4ÃÃQQÚbz[¸uû'·Wnþ¼ÊóúÂ݌ήݾ³õjüîœôo‹Îý1ZA8,¹^©9žù‘‰ -íä÷"œF¾ìD¡QZ*ìþÌt®ðNè‡ûendstream -endobj -733 0 obj << -/Type /Page -/Contents 734 0 R -/Resources 732 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 731 0 R ->> endobj -735 0 obj << -/D [733 0 R /XYZ 117.8281 740.0018 null] ->> endobj -154 0 obj << -/D [733 0 R /XYZ 117.8281 715.0952 null] ->> endobj -158 0 obj << -/D [733 0 R /XYZ 117.8281 407.1267 null] ->> endobj -732 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F39 472 0 R /F47 632 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -738 0 obj << -/Length 1717 -/Filter /FlateDecode ->> -stream -xÚ­XÝÛ6 ¿¿"蓜Uëö´bÖµ×u{Ðl{Øöà&NbÔ¶séØÿ>R”;ÑeW`8à,‹")òG:|–ÀŸqž3-4Ÿå*aIÂõly“Ì6@|ÓL5ËÒ_ÔXåSZŠY[¬gȹÌgy¢—™œ-VF¿—íã,zÊ5É}QWÅ.,ìˆ×äß}Ù—»®z(ÃJO¾¦ãmYW˪9ta+O¾¦ãMÓV»MXÁ'K›HÇœ3•*5‹EΣ•UòÒ^ÞI3¾ê«̨ó -}Ê.Ó™ÉÌv&k0¤Î­ZÌ)À`§¥Y“Áë(Ø-ñB;FÆý°#Rù…’¨G fÓW`Úr£¦E`3©Â¬jxö°·-iÎj› 7ïîÁ•0™Ë 5a™”è¼É;³‡@R&´©E#ëÊ¡Íb[¹ -ýü4jöÀôbÂõ*Ýp‘·Õï‹ÞËh‰ÑD¬“RDŸ¨–(.®rúrGœ6îMëꬨ­¹¥Ï•Îjýød0¥VÐ#ôsƒ9f¿Ìï‰`þG¿!| L¥ò评«¶ëéeݸ’QJÛ$ÃÍqAa{G˜DÒJìæÂDý¡ê1ˆ®<‘‚0†"ǶêOüŸ°@ú["¹íGlø’E{°³ï0ÜÍ*Ô(,•­ª¡’…DðÁ:Ã*&p½%¾á d:ú˯k¢Rý·¾,«¢/‰Rõ-žL]ÙQ× Mȱ¢uY—›ÂºÊ©[Èhë­o0çNÕÍ2=inŸS8ë¾;¤òþÁ^foO¤:úŒg7èè‘×R‹0jÁRnŒÃ±å¡Ås+Ä^ê)Är"·dб¸"Óè [¶¥u‹ÂíK÷¨Y®2s60*Ø‘SÌ£ne) †Õª,ÆP™~"Šã&\ˆÀ<£fšM§?S_â;Bï3fòD8Žx_Ë’Y#é@—q†NÊ¢S9‰•O/¬ClåÊ™èìvnpw 8i†Í7†gÔnèÔ#ºÜt~è-s¼ûúp?ßIŠ]0LÐ"}0âp÷c‰Z(§³ã¡»¹à¨±}Œ˜[¼*ê§VdŠÁ(ÀŸ‰´cökH;ðÙ†½/ÛKdýŽ{G‹_»á÷o@ߥÍ£G¹`Lt  Àä”°['ò öÎólnQÈòõ[›ä¸Â„?•WG»Eh‚–,O}á£Ë_gà§ã©l õ\ÆvJ p |‹%Yâ¦!¢Ž5™ÚKh‰Äú:¤-–0„ð<áÓ‚µ¡turØm&–´°¡ÂùßÍãä…/ÒÍЙˢŨµ…íKN¸î"ëÀ<@]ïƒíç¡øf`»¯5*Ì‘A™C‰=© òzë9 ¨vßΠÀÖy¬„a)÷Ã’“í-ºö~ë Ek0¿’Ç‘lΆjð?ÈOlÞ)Nè†ïE»9ø±»t9bÐ"d˜œŒVf_Ä/ÕnŒVΤPø¸m°zð ðíàÑv¢ š¢Ÿ0š›NsÊÓg$”£LS– Ð6‰£> endobj -739 0 obj << -/D [737 0 R /XYZ 117.8281 740.0018 null] ->> endobj -162 0 obj << -/D [737 0 R /XYZ 117.8281 545.4918 null] ->> endobj -736 0 obj << -/Font << /F47 632 0 R /F39 472 0 R /F15 459 0 R /F38 467 0 R /F46 625 0 R /F40 642 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -742 0 obj << -/Length 2126 -/Filter /FlateDecode ->> -stream -xÚ•ÛŽã¶õÝ_aìKed̈7]R´E;Á‚b§OiPh$ÙfG–\IÞÙi‘ï¹’ìU¶[ 0&ÏýFÉm r+e*2•ÉmjbÇ2Û–çM¼=Âá÷é‘´ÍDb-nWN÷&M„É´Úî—Dþô´ùöQgÀAäÖªíÓaÁ,6BêDoŸªŸ£d·—‘ÀÿRÙèi—ë¨Fºö¸Ûë4‰úzèpíËš!gØkUצƃa÷ËÓß>J»•±Èã\"»x»W™°‰I‰ÏÓ.Ó^‹m4Ö^yWðmÀ[Ü6VØØd@/£Ä}…É…4©õ˜(™Ê@²ŒP8'‘ƒu[Õ8I#¸HU·;À›·]f¢–å AÝ•7çà#¡¥´îÌtº>üï«O^=¸rò¼ÿK Û⸦ä>7àY¥·{©…5¹"ö}=®]ÕœÇA×TŸPÁ…=1 =›†¥WY}ÿˆ¿&;FZr¹K*ÅqÄlºKݯ £Ë4`U5¨jаnt];ó%ë{¹N,‚Ï$à¹ëßöûp^óâ:\‹y‚e²LHË[=ϾDš*ÿyC˜€á“h §ù­ú=‡7òÖbÌÆ#8ÿ[M¬I)/•Ê‘˜M¼V®m8á]HŽãjôI¡rL\%²ÑQÑV¼þ%‡k(ã©ï0£^[It­(ó²ÚüåiªhPˆ@el“Ø -P-_–½ÏÊß„½_¢Sù»ê\¨L-È¢Üí-Ô=Ç?!õhóaì¡þa!އ5{oa¬1Pèr‘¥Zr¡£ ¶ypò¹ j³€i •;ø—ëXß›Cñ8·éÖ¦VÈ4¥òþ¯ÍÏ¿ÄÛ -ÌñÃ&:Ïìö6±9„Èy£…щ ûfóaó×ÙdÅý’äŠÉ”VÂj%gÖ,g[‚j¶Òø§,×,”¦B¥` IÁõWjh¥¢åH€MƱó zn&ºÀD³ AÏ|“ó$‡F—fw¥´[ÔüžêÐ›Ã¶g–JüM‡‘r­¤0†?R/óÈõ§â|i…‡ßŒf«¥H­µ_ÍKô/Eó„·ˆfIÿ¸õÔ¥¯î¯ß¹ö¯°x ƒ‡UEuí%76¾5è8ÅýòÈÓønJž›ø˜~óÍ=³PéVˆþê‹×Í 3£êD$’ç‹D ùS?Çü™êÙGÇÓ‰Œh¡¤SÑ0sÀµ‰¨ðÐN´ŒüóÃÌߎŒ4b¹=ÄÖy ·‹NAqQ1¶o†ˆÐ‡#mBˆÕ|¦Ì*ótþ·àŸWŒ~_F €]¿ (þH³Œóœûåü3:–0ê5?—^€Zào½Ç,L![«jÑûø' ü­[0¤ïK0g¢ x§­_ùüÅaÊ!¨;ð/¥sGrÁ,‰ Ú1_à†/„[¡;ý,ÆUaA¨)x"èØ}÷ê`I7JGG*¾,÷ {í‘ìýn  rª24áÄQ_ŸhÐìg”âQ¹±x¸at%C«àth3HÁÓE5N±&|CV8^‹#’Îhë-/ÎÅ {vÀÚ¡<¹^Zn»ÐýÃ%V®ñ~ -÷úÅ<žø²/½맨Ä;ë­ˆz;}\á…’ÂÚ H&Í`:šêñÀ®mÞmʬñÀ‰ QhT¢÷Åø¢‡½ÙUŽ#:‘[«ú37*üYçïŸ}^¹¾† ‡lŒK|°Áþ-ÁœèxÅÓ’g*&RX™ó ì=gB'…V×4ì?dz@³ˆ­Vκ°mI6tf~‚;†¡†#öïÙ_®áí€g7qËï²<¡V85½X3?:Ávƒ¶;öÅyJzP&6ôÕrxßÖ¾FÎŦˆ™ºe<é\¸N9—ïư:PÍd®©M#^Ó0Uhî+bßI[÷¾hï\$[Þ¡^ÎSÃà5LŽùÝÈ»†™Œöe(qYÐ/ûEÃv¹N¥mt¡ ŒÑ˜`=X†gEYì×tY¼Ld=£+Q( \‡—¬¤zqf”EˆßP<÷\ŒkïhºðÞ_tžrÑàw„ÜÛ©û£PŠøÊÐñ»]Hœ©x«êxC㋦ጸú’JrêËèŸu4‚tGޤõÙæp­ù€þ¼øhw›©è\û÷k„ž€ræüòzðøüá"÷Í A<:ŽeAÔý#¹¶l®ôý¤bäõ0œÂ##U~öìºê7žQŸ}Ô@¢>@ÐÙχ`!³4½kŽîebVÇn™x¿kõ•c÷ýKc÷„‡BPmÁ™öýXÀPàßP½k?S‘ÂEUCÖºî:üŸïIA7õÆWÜ«ˆŠUAy^mHJ9O(ašÂ3 -Œš×SÉ¥]áóÁh_šx!7÷åù60„¦¤EÍ…f¤9{V™+iÿì`øòð‘“,ÍÁžÉ,Yƒ| ¦UÑúWÀLä2V‹o!™CêbÉä´í†©ËhŸ€0×s´œoò> endobj -743 0 obj << -/D [741 0 R /XYZ 117.8281 740.0018 null] ->> endobj -166 0 obj << -/D [741 0 R /XYZ 117.8281 715.0952 null] ->> endobj -170 0 obj << -/D [741 0 R /XYZ 117.8281 475.4997 null] ->> endobj -174 0 obj << -/D [741 0 R /XYZ 117.8281 264.4695 null] ->> endobj -740 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F47 632 0 R /F39 472 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -746 0 obj << -/Length 2137 -/Filter /FlateDecode ->> -stream -xÚµY[ã¶~ß_aì“ ÄŒHJ¢” yh»[´Eƒ Mh[c«±­©$ïÌäòßsn¤$f6y(°Dò<×ѫþôJk§JSê•ËR•¦º\íÎïÒÕÿòN ‘ÍKUä9V7™+TVZ³ÚLùãÝ»/?ê|¥SU¥•^ÝÝO.K3¥maWwû'wÇz½±6KšµN.kS&C×®7Æ%ûënhÚ ®Ú¤½Ç§INW ëü‰§ïÛ†çõF'=Ït5þ³××긖%ÿˆ?-Çæ4‡‰¾Zÿçîoï>ÜEÑ"Ã…Ë”ÉY”?Rm¦d$¦gò[»õD:”ÿûT»ÛJY‘}æâ@õòâÅg¹ÒiZÍ/ޤ¸ú˶šÑ—Ê•®‚[®¹‹y½PGhÚ1¿!·ªªŒ–l+› jÛëE ã/{~ù„¨»í:Ú¥#÷Í倿=ùn¶gjöWm”UÁaŸ³Ñ„ìMºÏÛèÍ‹GÝ^üš¦¿a£JiW¢qèêú\_Ö ªaÉ@EªœKÍÔ@EŽßX—ŽVá•–Ÿý&ò<ùo½Cók Ù»°±„P„Ƚö=.2SO¯ì=.ÉèQ©*«JÔ™Ê³Š”áJ!çn (¢ƒƒô!E"Ã!ôwoœ2ÎÀñ¦Re™ññnÀ´¶fÌ€»@,<¦dOô‡?Êy÷ÈH”&÷\x ÉÒÕŒa¼Ö‘7×´½’¸pQ#ƒr.¸»c{âây™â3?®Ë,i;|mHÂt®¹~ð—íþb½ÉÒ"ùëàO¿ð€$éñ.;üµ¼2¹:H‚DŒÎôz¨MÍ€›¾Oóôì{ò¹¹ÔLü‰£\'Š)ïëss!®i?lÔ²ò/”«^…ÛGn »'>맇ãQ ^uÝ!å‘)úð°Õ®Á”3÷µL‚eqM“™%»ã*â®’—á Ú¢;Ö‚ð0ÈzÿÌÜú§EyŽÍI¢Áï@8Ùq&’Du 'žÙ¿BÆð"¿í‡ÎïÁN¤~fOñO*Ük´Êu%©v]ZÊ|y9†üö$oƒ,£åÕŸN²†w7ý\BZë9“Ð<Ƹ¦È ×V¬ä䚸–;÷| y¢—#.-ìý’nÚO ¿a îi] -ߌ³”[Vø&ˆ3ÓûÎKÞ¤´iõÒžeæD—®€"¡ò_`˜¸Þ0­3Tr=fÛ**•:ÈàìÄÖPc¦*Ñ¡6A?„Ç¢•¥²…)^Ô ×3ªhËHÞMÑ$HÕ§¦+lDÀÚ J)Æ’4‚ö½g6¼ÎÊ2“Í-8aÜ:Ô°J)‡^T¤FYg‹•…ÆN™† •©Po¦ä\™ºYÁu `Å䨍d(xÀ¾½ž·¨|ÿ?þyàçÏüøîÄϯ—Ôœ¨,ϲP éyʰŠTÅB%D"8gØAÉ­aŠíù÷¼qáZÂ¸Ì -Õ2pKý‹dæ¾¢Ù<–Òl™Ž^4“ïú®ùчb+Oöµ”TÍ £°@sjËêÆpO–¾UŽÀØLsµRó{W?œüN\£Â ¡àœ8{žX¡³ÞÄ@cÓ*hô~Ié9Ú0ŠžÍý•8ÃÐ-Š={•†-‡%A«Qİ~l†#3ìE,8-Ð-2>±ª–ÊÛ¨ÔWóD6imn<}Ö~öËÙ¨@pªOÒ\6cWé—0*³ªˆ*ŒÀ¸t‡MÁƒÔì,blÊ Ór­,b÷˜Õëð`Jh Kã~#©ÙÀ*?¨LùT<uÖÈq¼ÇKN$ÆH&|‘¡k:ª>o -•ůŸÖXŸ®¨èÖ‰³† -HqÍ ­ùØ,Â,äÜ!´F¸Ø‘ç¢1²× B?ê‘> ó…5*¿N'®€¹Vƒei_€•YKƒú ±hîyS¾=ìÐÇ%a¥Dè©_Çeírå0~.OÉßÂåH'¸Ì¡ø§c]÷õ",ËpàæœVH¨ˆ¹SÑB¥€ûýŽ~?ï[m„jðfKÿ~‰ø‰”¥»§bñÓl¥Uaíg>ÌŽD _G ¬ºTÇ£ðZ›ß^ÿñòÂ_IÊèxendstream -endobj -745 0 obj << -/Type /Page -/Contents 746 0 R -/Resources 744 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 731 0 R ->> endobj -747 0 obj << -/D [745 0 R /XYZ 117.8281 740.0018 null] ->> endobj -178 0 obj << -/D [745 0 R /XYZ 117.8281 468.3441 null] ->> endobj -744 0 obj << -/Font << /F15 459 0 R /F41 605 0 R /F39 472 0 R /F38 467 0 R /F47 632 0 R /F40 642 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -750 0 obj << -/Length 2334 -/Filter /FlateDecode ->> -stream -xÚµYKã6¾÷¯pæ$cÛŠø’Ä &@˜ 6‡Ac`Ij[m+cI½’Üóß·$-y؃\ ´HªH‹U_}%‹Ub%D‘–²«Bgi–‰rµko²Õ^þ|#œ2ešƒÝÈÛ.òT—J®6óEþ¹½ùþƒ0+‘¥6³bµ½Ÿm–éT¨\­¶ûß’í±^oTn’©º;­EB½<ÙõÝØŒÓȽþ~ýÇö—ï?(»XÖ1 -´Àuî˜\­7"é ±[+‘y9‘Œ<{©Ž.ÓÌÚÂM¿e%žÂœÁ©UÅv†¹J奛ûPMS=tÑMtš[éû×ÔÉäÏ|¢­îaωà K‰júµ,“'^]óÕ7R¸«V¡R£­¤mÞ9Ùl.kÒBÒ)òcLW!S!…·gƒ¦W:©Æ±9tõ{*n\¥fº‰kп:áÁÎdÌÈVJ¤e®ÌÜ,°øäŒÛÍḖ6™Rœçí¬ÔàoR¤FØ™óH û=<ÀÜS³«¦—“V‘-ñY±ÈÅ¿¤oë/*rŸµ®á2ym€Ï=¼ë;·Õ^Ç ÏÆkŠDæEj á¯}¬OõnÂ¥Q·ˆ9L–*asoŽX¼p^ˆZMý½}%ÊTZ¡—·ÿ]t‡ùí§lîëŒ4p§ºqªºí{‹‹Ü¼ß†0Gû«Bå«\Ê4ÓZαà+LÒ›¹8aÂò B€ [^–Eñª@ #Mò×§7ÞýÈÏ7»c]õîýÀ_OQ¡ñÍîÄ"¶Ù.‰R€²J¥ºÐæâÿãîÍ÷ˆiÍWIo¦c5qkדÿ 'ž§ÚÍo:ôœÑó@ðrh?®M±r®c÷+ÞJ“[wkáLÑû… ÐÚÎ.ôÙý!@³ ÆÉ…¾mFŽ,i¿µ^tåƒ÷ýÐ"h‘ûˆE´W°¢LÈ2Õ¸,“cãaú;‹}ré£á-o:Ô€–ƒ®7¢E0âeäUÆËÀÎ\ô÷Lh\eä[tÇŠ“ùèð&‡1à «<ûÑœ ,ä0,œlt¬†Î¶®½#5„,[‡Ã¹­Ù]\ˆnØ;¯F£‘€46/ÿf4ÎÅ¿Aîÿ â2y½ûjZÌÕâAûþ9¤o¼Ï†“ÿ+Ir§QVÌbÆÈä_?+~`,õcÓŸG Å—»°6AH@²æØÁ ìŸñëÅÒ' 7Ü¢¤Ïà&F¹øëÉ[Æ&0#xƒl¢qäÍW$§õ'Z´ëÏ„í ›Ý*LfÎpìÑ©ûx  v“%—·xÖ»‘%hvÕ±i€'ö²(ÑpH`sì[„#£dw@}ªƒcf$âOA\”¦Å?w„œ°úSs—ŽA2Äì ½‘áØõÈÈbF2`l¨GOSND5a¬êö,Ø´D)HM–n›@[õ”_âb´*YàÀ@/ª¶ö`Ázг‘“íkD+<~C MË*; 51æ á˜òØ0©ƒ&ŽÒrË¥¢ž%«XζL!î}P€ú󰋇MMé)N‹tªLödÊú–÷{:6T¥=ÃÕbÇ;g! ÔÆäW¾;Õ© ƒ™¡}13çÆYhκdÜ:gŽ‘Ãh_PŽœêk¨•ˆIž™•–yZPµvþ÷æ·?²Õ ö—àn¶4«'èd©° y{ ‹÷ýÓͧ›_à8¬¸™/cà©©¶@‚ëÙí†zz ÒJQÒ8KÈ©5FrÍ A»´Û(„PiI¶HÑZrÉ -‚ïr¬ÝD(JIª0 ÑXL#÷Ù¡.¾'ÑCûjÍ..ážs8'núÓ 2úä=]" â‘ûä}ÛúqŒ€àìâ@jÀQ,ѰA.@ -3ª!QÁM˜‰I´Åÿw3ZsËoÛÞûö¨hÐÂE[ݸêÆhDt,nŸpÂØðaºpõ4ÏÖG -h ðª5È) 1FnöwÄÖ.¼`¢þз~5ŸJH ¨§jà—wX6½p»Ú#Ú‡™+R{¶ofLLç‹2 h¥ÈµGƒx d-ËçŽe ,•pÉ Ã0•@ñÌgÄ-ìøAL'²Åž«@£½ Ý -¼‹–ŸBÉ´,”´s ç}1Æ–5²e_énÜþüpéïÍÊÓ‡üÓ‰,z`…Ž>ýÌÑéÊ!סò‹”E -Tôªh ~À ¸zåŠ›àŒ¼ª|>\ålj½9r^%C¡§óÈY„öÏð)=ÛhB–“Ž•À󱩟<·‘Ì^pÌûæÐò—¬¯d–rî<=ºð\)CÁ$C¾S#·«„I¥ 4Íåã¶Š~V°ÀÙC½¹8#”7WÎXFLYŸ1Oó5¢b-1ò›¨>p,]úRz߄¾^øÁ=¡_JDI¸™ 1s>ÜÊQ.ÜKª(ÆðžXI¢Ky?ܹ0áÂPœbF÷áëW3Ô{_Õ@¨d×ß‹–Tf@.ÐZ'¿’¹h: ãÔH?œïa›0i¤s¾ñÝ…«à ‚'>}fÆ6W@Ý躨/‰/Dý*æ@JÊL;“ÝŸ£Qð‚ÒþbþÄàÝêÖáúõ6dÊa8 ÞÒ1îÆi¨v³´ñ…§VÏØ—Ô&ZÃ勸Ï5CEŒ G:ž†Ú“\vÌR‚·MÜ`AØe˜-ް¾¸õ¤?#|µ‡7ï7#m‹î$KÇÄ#fÅ ÂØðÕ©¢f5øu ÿ–YSÞh‹C>IBºï*O!/Œ…éDe8uez‡À€+1°‚Ä@¯/ùÇ\}ÃwZ(׫ª}‰U3l½ÐŽ·¯VØÂ)¤@õ7+ì¹x¬Â–6•¥œ-lO5ïP>"É¡Î[~|šÜË+Œÿï?žÛ;?ß×Î0ÇÛïøñ»Púùj2PC ÁWéh\Ìx}Îõ§gÿM â©×_œì?\áÏ%ÿõ¤/þKpdó/³Í–×è~s€XÏ•Šþ€d6¡ÈÏE&ÂR¸­Ê¯7 ¿†|½áÿÃ9endstream -endobj -749 0 obj << -/Type /Page -/Contents 750 0 R -/Resources 748 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 731 0 R ->> endobj -751 0 obj << -/D [749 0 R /XYZ 117.8281 740.0018 null] ->> endobj -182 0 obj << -/D [749 0 R /XYZ 117.8281 409.087 null] ->> endobj -748 0 obj << -/Font << /F15 459 0 R /F39 472 0 R /F47 632 0 R /F40 642 0 R /F38 467 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -754 0 obj << -/Length 1919 -/Filter /FlateDecode ->> -stream -xÚ­XKÛ6¾ï¯p÷$£+F|ˆ’R´‡›"ZÈ=4=he­,D–’œì¢ÈïX$‡ä ç›™”«~r%e"R•ÊUb"E2]»«hUÁàoWÒ é86ޱ¹0šÄ -“jµ -ç‹üzwõêŒW2Y”ÉÕÝÃl³È©­^Ýmþ î¶åúß»ß_½ÑÙ\X)‘Ã(T5ûzÊ ­Xöxaˆ$5ÒÉvëP%A‰òýZùØõ<Ë$óYƈXfÚÍúqiáL¤©JœÄX6Ͱu*ƒq›î 6è{ÀGܲ=©k R¤ ÷Õ-þG°ˆ›÷qÛ ïëü„šrIW™Y‘ÄYêTyº¨¬—ÈÛß…TùU¨•I¢ÀSR‹ØdŠDËvS¯G{¼±Ž…Ž´?Úëázig‰TN;÷h–ÖÁ'ï€zË–ûÆ®¢ãàcë}'þ›à:»~Ç®õzŸ"C"#«¼[ºk­ÀŠEdDBíU¼ßÝv­Ò`?Üpó¡szÔ¸åàÕËÛ‚T½Áu¯nï&ÀK©„N´]Y+Eda£YTœEÇ$ÎÅ):N\¬2¡R5[U~ÅQ_Vv{8ÁXÅÁu±-Ë¡¼†)îûÿþj@_Â0üåXš[?ºNðâ\>¤wðñ‘ƒÂÄÆ¬BP2–)ëvûäÑ^.(@‡ƒ×Ž=abëLÎ=aƒ·pøb¬Ñ÷ÏØ™EN>(nR¸€ì§m] ì–›ãv9P 8ü>þè–Ò"±Ê£è1§T±©«¯¿PÂn^‹¶¹?|Ä(uºRàpp)eaíÄ×-bªjêaëЖ·. àvM¹£äcàî¡ÛѸ Í8q›¸ãG.9NfŠÓ±‰%ÿE žäl÷=§ƒ·¤!DÉÊÎ ÈùTË7ÿÕnà<žÙ7¹k°Aý=ÇŠÖ.aÜRfjj™˜ÍM ½žßÓÒ(KÏL„î™ u0x*Ëѹ$£Ý!õA«ÉÛjòœî}ƺ=7¶9¶œË i“¥s ];Ô›²/7S2£ÿ2ï›ÚgÚòépøQåhRHn"‹cå@£­ˆ­ä ’z-þ^gš| J!„,žDû¶é˜AîâR›|Ì]×ý0ÒÜ|^rÂ6 ÄQƒwÝ®¼„ -èV†F»ë½á^úÞ“É@ œ(䘥ìÆë°ëöÃ"P@)«§ã¶™êÞÐ9À–=!ƒÁRŽ9ÀWíþ Gù‡õ”l4ÛásÙÁ™ä -ÕŠP…’Ïsʉeì˜fä÷Ôí0R*¦4 £Ýº&£ØMå ˆϼe¶GÌ©wãÝ¿ÛlÏÊ`äÃ9ð<§¦£i=††„cXÎ[s@&³ 5r­—ñ“ÅÂdžB>à.µÝàh›ÑŒË÷‘4-•‚ΈŽ½‘< ¬öìr >q,T”dnÇK•©m”¦øàF¾.à7Ä®ÊÀ:.Aèƒ}átÈ]±I´°À§ÏsÀØï‹Ñ'Ùs* úB´È­$AÛŸÙ'dVäžC§Æùò™Ë(Æê^•“Ø|}‘U¨£R©ø+YÕ\ü%V5Éñ3"r¡Ý‡µzÍïF7æIÔYÇaÊÏü÷^jótó|,õ¹jbNsG G³ÇüXÿ—漫Ü$·üÿýD3N™à\öyIè³Ë%K›}ž-~êáÐã÷ˆ zRí¹?ÃKy‘»R´ñùã 3xy*™H%æâ/`’C›Ú9ñÊósÌQqMeàÚ7êÂ/Î Sž.c-…’£#£¾ÖÒ™ø‹–z¹c¸]%^¼'™‹ŸšÇëËÓéå¯.߀/Z{v7+sGq¨d!Øúzœ.ÝxŸÜ–žÒb:NY,á®ÚŽlÒ02ÅG¢LƆ®$©fvtàÐfz¶ ú]Qb¥*¾ã*?«ŠUÝ–Söu -"[ç+?Jâ~¸Û#1x€þõ˜r‰ nüI gÞÁqO˜ÄBzó¡V |¸úTÕ03«”KòïøÑ3)ìpz_P§dšÒQ9Ùìù‚û‰ž>óLfXTÊ*7î (~ŸVZR^1ùX(§*1ÂZe¿TNc‘Ù8›=|,­ÄN+/äºô``„¶ZOµ™ßM ®[eNª-óZe¡6ÖMß}9æÄ¼•,׊.±èj ;–Âó3ÁA7Š’‰øÙTòÅó0ƒ6¡eŽØÈA´®ZªôûÞà€C Z˜€ÝÄ: ‚DNÙ8Eß"ˆûÁá?¥MeíŒ -ú"|ɤ[+¡§áñÒmæfìfl§ñ×1Á[Ž&ú~$WõùŽIi¡rZ•ýn˜^lNpbÞE0ÁÇÄþU v ‚é¢O}™ó•Üå¡|˜®öK”*‚+•žîøêC7&SHjGäYèK|ÈZd²‰ˆ¬4ÓÕô¬š¸—ÕL -DïÒ3í$„iŒ&‘œ–Âýtrºáôæ{¾áÿos[Þendstream -endobj -753 0 obj << -/Type /Page -/Contents 754 0 R -/Resources 752 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 756 0 R ->> endobj -755 0 obj << -/D [753 0 R /XYZ 117.8281 740.0018 null] ->> endobj -186 0 obj << -/D [753 0 R /XYZ 117.8281 546.7706 null] ->> endobj -752 0 obj << -/Font << /F15 459 0 R /F39 472 0 R /F47 632 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -759 0 obj << -/Length 2045 -/Filter /FlateDecode ->> -stream -xÚ¥Y[oã6~Ÿ_aäÉÆŽYñ¦KÛÅØ ڇŠЇ¶K¶ÕÈRV—IÜ_ßs!)9Q&Æ ˜äáÏ…ç|ÐmÓoþ¸ûù»[iW2Y”IÔ5ZmU*llRò§¾Œõ:/@­¢à·jmh] ÄcÉý-}z¨Vb(ë3Oužt¡Wç“´#-©ØF”&’r ÆL9e3é,-Q¹®<ü?]07$‹¬c|Ï¢ú–çTm‡£×¨Ã%Àð,ƒíYm¥ÖdŠ>ݵÿ±l6*ÅýÑTg½õ…Þ¸-Ú¬‹²'YÝgü äÈc0ùi³U Ó ø=’úMY¼gö}Ûq§Br?äÍŽߣºïþsB"HèDÇ«Xk‘H›ÌãõEÜîíœâöÒÝReB¥j¶,z¤'Ÿo-í÷Üü2tÜÙþÀíÄñ/n~—ÚÜW=º$²Qà;ÝOœñY”ð1Kî6 ÃÑ‹ã9£qH©¶Ù‘Øæ ܇¸Ú•ñºO•—>æÙ#çÁb?Àœ!;¨+Ó?05ø Ö¦S–XHB‹@;2Ž Ñ+‡>Âvî¢}¼?7².Orôc2``íHlÂL…“¦¶ìø.Ún©Ø:™”Å«ªŸ¥¤VÐMÓ ëQò#ФÀr›EÔ®é¡ò"üîª4å#¾"ÇÃf²Þ\-BÍDL‚Jx— -ghíàHÆTšQzé¢0P¥ì·|äa12rÅIÊÑ%¸=9;nÂ)ªD¸ái\©jß¿ŠEÆ*‘}%͸¿„EžíÛ°èü:…Ir8îý%ù›ˆÏåLÏw¿m–‚1Q°:~+!3ë˜Y Œ‘;žÊ…–…çÜpª N¡ýL±„k}Ÿ3ÈKÀ' weߎÝÎYEIÙ’eXàŽu¹dÖ*îØ/ãï0x¹¦®70èˆi–bšá‚¸+¡v.yxÄ86R2¶È œs>†8L´[¿}(›×sÞ#CYðº½3™uȇ%Ö€þIòö>êÔúõw„ÒNq:MК ! {aú§¡w•[ -(GϼZŒ[èFÑ/i§-3J:¹uÞo[ÿzâëokòÚÌŸ³)õJw™»Ûq;%êÍnìºóÍÒ‰ASa|e©YZðæjL¾.é?à¥Fšõ²²™NFÜ™ê/J4Ç‚Yˆ­¿]c¿®>+Ö8Æ£™n/»pj‡ký³›³´hÑ›WiãÊ›bq--dªÌUQ2;Qá á-w)-Ù@¬É©Œð×ðHh¨~.ýü.â fÆœýʯX’ô¹ Y*²)ÏpŠr/Ї%C¬%Ìü2¢fƒÃ›¢k¼À‡©#è?•þ­f†¬9)yæAbá0ß´s 1%TáV)õ2Ñ‚áþ* ”å²<1äCîn¾¨ñ ³åÜð- þÄ„?1ô0=pОªaÅÕô™ÉW3;:–ˆþ@>v%×ÞÊe×󽿴'Ž oÈ…éá ‚²%¸1qîv“B*ùg÷†òúû‰’‰°‰¶WBÖœýKø@fÚ9j8m×Ue± 98¹8³¼6Äõõkû‰·-žªe¢‹Y:÷¤ˆ¤4ù¶$Îß, ¡Zõ¼ø‘ísˆM8•Îè<Ç6g&*pš©b:Ú„“üˆéÖüû.ÅÏ—ôyÁ”¦uS!zñ£ù|ë2uµMáÂÆÏŽÝÊUïêÂzz•)ÎB›­?Þn¨šÇ>øô̽kê,?×À /Ò€'Wt‘ø©UÄoOÒ½{SùD/´ÙK7ÕÅrÞ$©z«‚š) õ@»w/#&ƒ"$‘¯'k(¯íbä$B%*};rŒÐ±öºŠ—)îÞà3)b­ôÏvb¢´~fo†¯{2,…òtú\`øïÀK×$Ó'endstream -endobj -758 0 obj << -/Type /Page -/Contents 759 0 R -/Resources 757 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 756 0 R ->> endobj -760 0 obj << -/D [758 0 R /XYZ 117.8281 740.0018 null] ->> endobj -190 0 obj << -/D [758 0 R /XYZ 117.8281 715.0952 null] ->> endobj -757 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F47 632 0 R /F46 625 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -763 0 obj << -/Length 2135 -/Filter /FlateDecode ->> -stream -xÚ•]ã¶ñÝ¿ÂÝ']3")ê㊠prmòPÜ! ô! -­­µu‘-G’oã´÷ß;$Eû´ö‹]‘ÃáÌpf8\9áGÎ¥ÌD®r9Ï’XıÌç«Ý,žo`ñï3i‘´ÉEj N'V—I–Š$×j¾ ‰|÷8ûæÎƒ(ŒQóÇç€Yœ©S=\ÿe‹¥Œ„¿R™èýB˨VÝ~±Ô™‰v8+‡®mkœì7‹_üæ4s‹".$2ˆçK• “&Qþ×"O¢ -HÈ<Ú.€ÂBeѧ…ʘE=’jyüŒŸ`|¬›giT6 ƒ«?¬T¸«§½u»@Ï,Úgƶ b©XŠLKT -7”OM5u­D\$‰E{n‘åŽ9 Œ]»³BâB¹_á¡¶^,^{Ù¶=…h J7f¾”Z˜¤PDöP°e =Hg³5@”p¼j÷ýPîQ_ƒ]®•¨ ¾kÔԊȬEEõ~êð2+„”&µ§:”]¹{åðYœ9´uõK,Tq=xUËè9é¨ìùû‚¨ÈHz.½Õ¸b®ÐOCMôCW#å ‘°9×Ñw8>¢†pž I»Š‡¥S¶N_¹A÷@ûTD¨¯½£Á.€SƒC÷‚wÿì{K˜?½cMôwewb‘È»Hâˆ'Š/l -É¢Ö²j¬d:ÞàÖÙ÷þþú[™Â­ŒÕä÷8ˉ.x"Ϭ¬á^pÿ-J̾`© ‘&ir•¥Ã¹dyî021BÆq²DM‚î?-Œa‡®K¯ U ïî¾P„­ý›¸^Wì.5zÇ`b-n/àÙ°-÷<:s3‚ˆeIÚ®Àä@ZòŠc0Þ‚›LØ)ˆ»å«æ2i.ryË^Ö5ƒ9´›»ÊÕ›ì’ë+6 ¹Z¿&}©Œ&ZG«²[_Ê¢¤‚|)%àòûìç_ãùdúq ]äfþ“NšÝÍ´H4fçÍì§Ù‡QnOð†ÜJ˜ì\îô"ÃÐ’XrK1óŠ“LH£oÚ1@»jH‡wÛ’W¦¼düš-CÆ%[BÑ@74@ ¦ï^Ù0lŒŽ÷ ¨ÄFLfÈe`(›îú»©*“¹t)ÄRôVª¬yBwëíeµ3H7L¦ŒHŠÄÜ2Y€vÕdï¶É®2MvÉø5“…ŒÁd‰Š)¡×ýÇ#Æž™.—!ÆM5iŸØ€Ú•8ï-Îù±¥HŒ/o>N‘ÉEf2ge!Ä¥`˜_MæÃ¤«@¨ˆeQ¦n2x"&œ\ê(š´{«ÌÓ‰,Â<½”)úT?g±~]»‚æ#VQ£Æ­‹î.Rdw¡2•Ï—ú`%Š5ÉR«[/ øåÁ—}P쪵E±ûÝÍP…áòfY/ÄxÙÖ,ƒÃ X9w%Å]7Ä)ç²c:\*^¦Àðf>qËè ßäpù¼¦e*“´¢"œpl.ïúáB«Î”#S©­ °àn›¦Å /öHº#‰®¤0²àVæ­ÝÖŸ¸ (WhŠAÇ Õ6»,‘Ô¥¾ìK„7c:Ñì¥ïÉé’’eWµ¼E€ªdU÷iNØÝÌ”€r9'Òˆ8ͳ0¦L5‹½ Ñ9¨GU•«€,5ˆuøûþnóý‡F¨èá[þb«ÕWôðð`GÜÑâÞŸ#c4à]Î%ÁÏ÷óÔ­_ºtvÞ‘?@¯gõÝMñZ+g2gÊŸUÙO6r* ¤.Ò]iUƒÅ¸Þo÷̹¶ßg - +Ûþ`ÆDè¡k7c•¹s®Œ„ò¦Í±Ü¸°‘kh¶ÁCÏ Mj?\Ž>Q±þJñ§æHDn뺑 õÆ€½Ä…“";›;! <ÕkX?Ò¬2)“¯ôºýš×y3étãú_²ïùsFàG©È ,¤× ÇOíkÆ[û€Áo ŒKTi4¤,‚n éÐÜhfi´ov ¶ÈkÆØñÚ±ç* -†‡’{SßÂO>”|Õ#ÉØZR–ãÉ5÷O(ÍukžPDìxì? -çrYeQÙ*£¶§¶-n¯[ÙM»¶ÃÈ»m›vsbô¡eüCíbâo_2£Šr³µM—"ƒ~!Ôï€ËÉÜ‚×h©íº´u½Ù †¼ÅOÂaž^ŠN G‰pÁ—ÍÁ.l©VâU÷uØk‡mó–/ù'·€ÚöŽŽxCg³Á/%£òÞO,ÌÉIñ˜ßhÚÞ%\ñzŸ¯ökW›«$«[4Ÿ6¹¤õr_Bt´vö1'á0Iƒ¦Ú± -Þñˆ“€áY> )„½zðfsqHŠ=ªPÑ÷TÚ4¾€Ú2ØØ ºYSZì=yݾçª=î8Ø ê½emÛ åÇmô±ÀÝžÇ'¶=ö͉±zwV[-p6ƪ.à6“eùæ~ºùÇ®7N"_†^Pdž+M<ów|ç0˜ ×@x*ûºŸÞ¤ãÔ»(õc° à‘„ÁS[½Áy ŸQ¨¬¤jv=uHçd—µÜ¨ØæHE§-”ŠºrãOõ2Å:?³i¶)ûa2S¿[,|“¯&'™È"Ù×–D!úµääñP‚®Úü“b=¦—7üù Ze,m%3b<ð‹¨þgÌrttõùŽìà³Uh ì¡ ç¿ü¹ûóÚý6 -aÉ¢‘íð¯vWÕßñ3Îþ6eö»Öiv“r½¯ÏOáxÔ·™üZ¯ìÿÞ’ ÷9à5ùPH‘j}ã`DšzS‚Õ,–ž²ÕÅ%Cÿ/–/þOí endstream -endobj -762 0 obj << -/Type /Page -/Contents 763 0 R -/Resources 761 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 756 0 R ->> endobj -764 0 obj << -/D [762 0 R /XYZ 117.8281 740.0018 null] ->> endobj -194 0 obj << -/D [762 0 R /XYZ 117.8281 715.0952 null] ->> endobj -198 0 obj << -/D [762 0 R /XYZ 117.8281 323.9412 null] ->> endobj -761 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F47 632 0 R /F41 605 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -767 0 obj << -/Length 2087 -/Filter /FlateDecode ->> -stream -xÚ½XKã6¾Ï¯0’‹ ´9")JT Ý $²Ía³¶­¶…‘%C’§Û˜ä¿§¤,©Õ3³—…‹b±X¯Š”«~r%e&¬²r•%±ˆciWÛã›xµ‡ÉßHO¤©1Ø]˜Ý$Y*«Õj3fòÃý›·wÒ¬d,ò8—«ûÇÑfq"¤Nõê~÷ŸèþPvëÊe´[˨Xodôg,h×e_§©¯ÓH*£´*·V6ºø¥GvõZåÑ…G~¼ÃoÌ ŸqE[Ðâ®d†qôØ´G¿¾nznt‡ù>y’øØ¨Ê [÷Ž ûÃ0R¬ÿ{ÿ3èb#µ0I®èX¼„ä‚=´Ö‘k l$Qñ|ª`Εu±ã©²æo`ŠTuàÿÜódG½mòËH„M•FæA—@£L\ëH_{8!¾½K²±)2ÔJ4!.k‹ý¯Í¹f©Í%lžÂ]ì3lÞ‰5}ù5çèYm›vÐÝÖ“NuF¨áªÊóEËŸñŸ¬&xônm“(Ж8»!=l¤'Ì255B×»zK[ßx-¤ãÃi#2•¦þpÇæÜ±¤*Ï/}ŽèÛµÁñõ¤ÀÁXë9¸z·´ŠÁBIâ‰Ð¹»Ãd?´¤þTþÇ5(ÿT‚ÊLsrQ2‰ÊâÁu˜Ãáö¹#}í—ÜAB;S:ˆx|ÿš;èD@ÜjO'˜ó÷U×ðöÞÉ" ‘*ò‰EžP¢¦]ÖS&”µ™gþ€Jo.KR€B•¤`–ç -cÉŒô¡Sð„P¯)¶=ù'"Ulq`âžÕåÏ÷ ®#Æ œ z…ÿÞÓpÝ0YQ^á åÙsW,iZXfÙÕ¢¯jz£U"hìTèûI¬9xB'ŠóGø»,mh¤È¤M¿ Ò‘äFyB´h'pH×óŽÑKü­W[|uùjÑ`€Q6 îµuä¿ï0Ã"LÁ=݉ þÂÃpH/ÉÚ¯6ŠlE´çnS9Œ ™¹ÒfªÁ-rˆôNÑz^{¬N"Ç2:'m Mß·w:r†Å·ÏWß*ù|¯àHb0Îå5® Ê¢Û5‚Q£Ï¦ê5¤`73àÓŽ“<„dÔÁ2ïÖ5üe‹ã†eïGÜ{:=ê&MÀ|”È`¢yä¯CTÜþ°6)¨¶t˜ n«äÔ>‰u p2d‰M%A˜%%Ôûªì‚î×VGÅ-ɉKž0 -i$xbÒ8‘,ŽŽEš¥AîyIuÐLõ@³˜KÀÕRX4Â.wdã¿e0¥Ìÿ7®Ëˆ(VŸepàἜo6mþÅ|Àp¯QZ~R$J9"™aÜÑõÛeé,`™‚d!SPC ø \H+ƒœac•â på>T_€5‚ÁCKAráéG̼õvpÝWò¨ŽóÀ÷·¶ØbwZâÂ&yú¢tÈf:´66S~ýû/àG1 -RCzQ3`¤ )=ö®{ÿ@¹,¹j=4wGßBnçŠ ' YHgšjv£Ìp&«x¤nÈB~ ÕÔ°â–ªó¹“z'ªÅ/ÃRPô¥~¼{`ºI9é–°0F”FÏiw›Ó5­µ¡d ÄÔ¡Úd¦»LËÆâ"£}U½HþB2){oUÇŸ¡t³Qч!Y+9q¾Ûážø ÷:åz¥¯5&zº¤a 9ì -wÃ=”ôL‹U±mç9 ’=µ¸¢_L]ÒÆxsL¾(weqœŽ‹¥§2U´]íªKDnR=;6°RFH›ÌTÐðAðøeµX£&ZHcAQè`ã¹ŽÙ?BÙÑ´xõÃ^Ôç<™ã.«ïqý5œfêËð^‡ŒÞœŒ—°N!¦Ûˆ‰ýÓ¡Ü¢—¸TÕÜ ¥Ó…máî×üLά÷otÝ%ë}ÏÛ\ŠÜ@ɉL Ä¡ˆ•dtÉj!ƒ?©Lô ×ëôph*êí)’¶ ä´ ~ÎíÖƒI(–!ìTdD\³Â¤ŒpçïA:óW„ãû%ÛÍ{6ŒØ$ß‚½Ãb†Û×ÛÐKË![ù9ËePšXõ™¡„NŒ¼–uî¸Xlhõrµ]ÑZ¤ ¥žc+t ¼›sÐ@Š‘Y:ËÖt•â+Õd kX šá¶×q— 9å꺕cøs{ª'SFDºa5Lá M‹6oö—04Ü}À¢‚*¸25œÆ® o”2_kŠgw^– -*VÞÜÞo\2Å÷cWÚÂ8Ö)?„áT»÷4¿žÄúÍx=‰Íác”æ8­÷s9ÔyRCÄOå˜=È T/wŸ_Ëæì†øœœ^‚‹e0«á2iM¦Æ»¾Ø} ÞŒÉ—ήr¸ï«[BÌÍ×ëhßœ ”¾ߜڢ:ï«ALÄ9 7CN×p”ã‚«Ö¨û- ¶jnýæQ§ôƒ‰/Qb’dÊ}¥ëôØe~=0ÒG{ýËoý—ß°âï»ðDµ°IýWö€txÃL[©õ î/§b²ûÇn2?‘ï;/`ßþ=–i¦Oÿ1æ+¼9¾{eàºÄËñ§ÔÉóÍeJõñõCv“Õ½{¨Š—kfµjÐt8ØóìTcÚ`†@{Y"ú{l#3Ÿû¬CéòIÕ-jª›Òl]çO_9¬¥°åI°ÂÔ2Oÿ®žKsK˜0Ðl®DKˆ³\J+<[Ï7^ü_nø1€Ö[endstream -endobj -766 0 obj << -/Type /Page -/Contents 767 0 R -/Resources 765 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 756 0 R -/Annots [ 769 0 R ] ->> endobj -769 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [162.5895 380.8831 216.1269 392.8756] -/Subtype/Link/A<> ->> endobj -768 0 obj << -/D [766 0 R /XYZ 117.8281 740.0018 null] ->> endobj -202 0 obj << -/D [766 0 R /XYZ 117.8281 459.4603 null] ->> endobj -765 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F46 625 0 R /F39 472 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -772 0 obj << -/Length 2033 -/Filter /FlateDecode ->> -stream -xÚ­iÛDô{~E´Ÿ±™z.T ÔrUEøM7qqìÅvv›ÿwŒ¯Ôe‹@‘2Ç{ó®y×X.CøÉ¥”±HT"—± EÊd¹;-Âå€_,¤GÒ6‘µ¸œ®M “hµ\‰|¾YåñôÛ‹ê\ò¼ááçІ~ú‘?•57°+yõtõËækn-µ°&UÌè„u?J9/óv²ÙñÈgòë -ìñ¯…÷dgèý5æµ–RkÌr­b¦‰!”Óo?dõ–ñ>æá»¶æÉúÓ÷l G>ñRImÞÜ^¦Xcé=èÍ•òcIêìð¸(³œ›)ÎÎ5Ï -×Lï¢zÅã$@oÉE?îQƒÿ·GÍRþ/uS} “-þ»¾ú!t?ÔWµâê`OžK;Î Þ­-œÑÂÄ0AÔÍ\@%!È M^€‹"/W2 ˆ ùýJ%AÖðÒ5ŒãxyDÀ¶­üxHìªÓj-ƒ;Ä-²z‚@¢êt,ªR‘PIœ€ê(c“¹Pw+­€ÝZ+M”\‹4sºFR`¢üù2ËöÙ~*ª‹:îÙŒ*•"ÕÑÔŒ®(€›ÍÐHÚ¦AÕ)%ƒšA¤ÒŒƒý`F'l³_ ( N$0—Á¹ð´÷å;¢FS’Ыp!x¾9Žåu¶Cä¶B+]ØÓš e"ld"o»:+ÎûlÖKzÔ‰)rB)¼t­H?¸mYó¼î„ßF‚2#JjEE©—ä‹çOŠ|;';¶öxO™$ÞбíLD2m½ÝqÁp=$Í«ñmõçÁd­K¿O^ìu$årØè}¶#þ€nîVÀú²JLpˇ/¸[}íСÐ:¼ -ÈCFZ3í¬å»•6AFñs<몿–Qá8 õÿ'cOñ1µ4²N<•ñåg›/ç|Ò$Ò.½SiMq Ž€·8¾@XB²"ƒE·-àJ§Ád ‚h)ŠE¥ÀrFÇ ¾‚]ÅΔ€I¨ß7yyrqÜ¹ÚØµØÝ‘ Ô2òowe“Gâà©ÓE¹Ò°ãÞÌé •Gc¥¸‡ü%ų2 -(ãWKKiªÂ°xàuŸ»ê|‡–8ò6û;®P”Ö¯š › d ´}Ö%ç¼Í)ë5ŒH–â]îj´²êTÕ®Ç -ã¤:€e5[öº†nø"Ò$xÈ·àÖ±4 jW\ôàxú~£vtƒl:c¤F©¹kѪ’1}ªj‘ÚÚ(óÖ¡3…Cýgwȼ@Ø †8ÆyF(EÞçTq%T6êà«Ö9‘ã†D‡&ÊUÉH¯Ï+Ÿ½[Þà;Ôsã'ØúáH -ÂMhö¨!)ŒaUï;b‹P2ø•YíŠ[Þ%çìÓßfh7”ß+•úîCúÄ÷Ö‘#¬†ެ/£Ùð¾Ã«1Z^Ë=€ÅG\Qšîs2˜ÔäFƒ–ƒË9 ½àrFŒÖÌ‹ÎÙ#öå£ãÏå}|ª¬Ú9UïzùØÝ&‰ƒËƒöW£ýÕÀ†ãÁÇÁ©òÅÅm›¶v»–‘»°BÞŒò 4:Öª.¼c!•r^HOúìòóÝyKMEqÇéä¾>¿eA3N% y•q{v®³æ–ÓC7f_"ôÓøÐ|öQÔ‹ÄC§j Äê®Ï26&“k' ,_û–hÍfÅ~ºCoïì4u ËÙ±ž¡{@ÀuÞ}±pä~ #¶G×ú¦/_—8@Ñ-Ÿ¼Cÿ¨ñµ5ã'L -ã°4:c 砖Ö+…½,"‘¼zè,—ô9ŸðËNX3Š3žL,¯‡N0'I$zÊ\é§}K‹ Ljeu¦€šóï^sòPLnØ“ËOí\ ±wÍÈ·¡ ;û‹Ä´vËмõáC€ƒvE×ÿF“‚--”1ûŠ}fseš­ŒGò‚ÌÔ ñpäuôbµ<Òë„ìÛøÀ má–È©‰¨ª5¼Œ:¯ ÚÌ€2J6 Ã}¢¹¶€´Ø IÝ[à~¶ýWVÄ:›Àt& †tÝ©mË8[„·SièªîŽ5Y"› ¤ØŠÄv7ˆ ÊÜ_ -%U×CßãÛž½úQêQ -½~wðãëG/¡cxÊK›ˆÚùñ×Ôw¾ªöØë1úÜWU• -•¨Yß©ìœÿæôâåä{ÛÍüº§<”è‹ói›ÕýÃW¤1§þ‘Óš~ŠîcâS{ùoÓ©øÞžûöÜã¬$²ÑUòhÊžÊmä5ÃþCö» ÿøŒYendstream -endobj -771 0 obj << -/Type /Page -/Contents 772 0 R -/Resources 770 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 756 0 R ->> endobj -773 0 obj << -/D [771 0 R /XYZ 117.8281 740.0018 null] ->> endobj -206 0 obj << -/D [771 0 R /XYZ 117.8281 435.3142 null] ->> endobj -210 0 obj << -/D [771 0 R /XYZ 117.8281 307.6271 null] ->> endobj -770 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F38 467 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -776 0 obj << -/Length 1700 -/Filter /FlateDecode ->> -stream -xÚXYÛ6~ß_¡º/21â¥c‹ô¡E¶Hƒ›ÆHš>hmÙV–\IÞ#Aþ{gHŠ:¬ÕAbg†Ã™oF¡Ž¨CiH"Q'>ñ}9ëÃ…ïì`ó j@\F$§»ž""ί/ä·ÕÅ«+*ê“Ø©³Úö”ù‚PpgµùÇý¼Œ„›.=En,Yä>â$t›ý’ºIÓ›T±d±{: ôWÜ´Ò r»üwõç«+Ôr°ŠúX‹úÞ_kÐÈ6AdDcƒÉj-0)4–Ç},“„úB¶ØbŸVi±äÌ[9÷ÝmŠVS÷&Wé”¶($­E/µ²{sE8Ô’zæö¡º}ˆ·ŽÇdH8§ãQN¤ˆ™þ”O Y8ïIüØz.á\¸É¤GÀÃõðÝ2\•%79ØÌáyÀ#1aÂúÿ‹/ý²B…ü … âÖücR%‡´©²u§í4­†ú /N;=”ï ’C{ŒIcœ«=Þ€Çn²³’ÔOñ§^(¦bNÊÒ)39%Q™¤Íìø<ÖIRëaYsó™<Ê)ý$¯”¢ç )­À 4°)~ƒþh´Ô$¯K­S™bô[r…ñ_îT%¹>°iß®±Ô|POoiºž~É.ÑoC¨NŸ÷ORl&Î%~°ÓWûrZ(ƒb Oi„x×ÐwWho!ÒO²Áª‰{Šœ`-SO ¬±´ûŠúbBç¨K×Áíð{”ÓVrsL!T…–†“{½´š¦êùS˧DHYݶ†È3·ø 3f£êÓ­­=†ÓÜȇùgžï£â_Ó11µ&Þ#±”  -äÉCB#+¥A$["ÙI÷’²ËU×êVÒ]—ju]¥ªê¥zs‹S•[j~Ÿ©È2gTSh}¦šÌ(_yB"9Iîªê¤Ï0‡¸dîI_¸ÖÝ+” nÄðŒ$„éECà?Åð¸Uí æïÇ[¼×?0Áñç‚Ñd öü´IϬ€&2¢‚ެÕ‹:×=NZV“n“a}½èqúâô–ïÜ:íè]gÁ?w÷±XÔþWY÷¥aô ’“€‰xþîõÜÝÏŵDAÝ6wMÐtu -&¹"gÃk -ªÃÇ`÷ºôEšj® £A’0¢ab’[Ä"©Š@vâ*Õ3µŸO‡¶zÞϺ§ñŽI³M.¡³„˯ÓËc—iŠ7Bhç# ëR‘SªOÚNCÍ.íê Ç*iן¡è—zÖ¶š¶MÜ7¥Y7Ur¨=èA{û£Žâ£‘üá”äYó8°âãÇ^7~¹w>ÝD›x©ÞŸ7X÷âW#°©¾Ïˆ|Û`zZ$oOë6sBá@~×gŽ\ò´?Þ•™µå¿ ÏÔ…_Oˆwĸ~¸ý”V7z¾Hªta†Y½PCÖYI)†RŒfR#~Æo«=6t¶öm°´)—™HY4€YÌÊPßÏÈHšyØ}õýde\çV`æ…”? ¤œò¡‹ÎÁóÝ>´fú…r‹aÜÚ‡¾JùÌÅ÷gøÂ¨«ÒÝûòd”-àSgöR¿ïÓ±‡Ö -0'âJ5N=‡ÛÞù-ì.ÎÇ“’ ¶‡)¸ÍZÊXÜÁþ¬%@žûÉœZlqkîìç¤:L½‡Å,ÃÀC&Åôa³Ù??¬5¦(ÄP8Ÿì,Æë@S=ì†>µ¢Ð4ÁÆ -íÿö+üÔã×\endstream -endobj -775 0 obj << -/Type /Page -/Contents 776 0 R -/Resources 774 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 756 0 R -/Annots [ 778 0 R 779 0 R ] ->> endobj -778 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [235.7274 478.7539 277.8104 490.7464] -/Subtype/Link/A<> ->> endobj -779 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 .5 .5] -/Rect [301.0838 478.7539 354.6212 490.7464] -/Subtype/Link/A<> ->> endobj -777 0 obj << -/D [775 0 R /XYZ 117.8281 740.0018 null] ->> endobj -214 0 obj << -/D [775 0 R /XYZ 117.8281 532.657 null] ->> endobj -774 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -782 0 obj << -/Length 2005 -/Filter /FlateDecode ->> -stream -xÚ­]“Û¶ñÝ¿BõÕœà—’qf’‰ïÜ>x:õõ©îDò$8©!Á³/­ÿ{÷ H‰wÎCF3¸»Ø]ì«~b%Dæ2«,ŽÂ(ùª8¾ŠV{@Þ½ŽH%y˜& ~.`7q–†q®äj3eòËý«ïoãl%¢pmÅêþa%©l•Eq(TªV÷心·_NUÓ›Çj½Id¼á¡ïy|]yôkü¸þÏýßAîF¨0‰·’xüZÕ¦0íÐ/ó(=ú%¿´iöË v„›­ÞÆI¯62 £m“öTu„±See™Å<¼Ž; §ùæ'?Ø Àûvhæÿö3.ãŠyhd|íë£PqsSÞ—ŒŸW}nÙ’‡ï¾ã±hB‡ÿËL…E;73NÍÉ×™¡UB¬ÈKÀ}«rTw›$ã Ø¨4Ìó$#š<\oD àO·w¿ªNw8k%‚ƒ)Ö•%ÁIwúHhËD ¶kOkœà[UÏBE2 j*ó0Icz€@–© -:XW!7]úY‡<À7‹30«vðÏÆx¦áø¦°¦mtÍ @ºvê)ZVë ûAïè~(Ö2<3RûÕÛû1cãX†"Ä*i˜Å`[JkDu{GóÏi‚{úÍt%øÜ׌Ñ$ïtÿêC6¨ë+m|ù˜kól‘ù†cEK"Š-çåq-³­Ù£Ý)ƒƒF­jJª i-º¤  (>ß{§±÷jtdg,rxbž;°yŽaÿŸQhE»n q6ú¾²f(ÖCŒ!y°˜„4Œ¾ƒé-OuSº¸ßN·¬” ó4‹ÁR¸Y]ïIèÆåcÕG70CYq<±RÎѰëô¥;¿o¤ ßaÐZb2 †Çß,S^N"ÆÍ·âÕÒnåQŸËGfæ°l·–4ëÍ®}y±eÛ½Rh1ë;˰Ú4cµF•Ìï4EC²J@ÓáþëQ‰‘“çË1Ç‚ê1ƒ] ZR³ìCŒ[¯ŸL[îƒÞµçšñ8îyÞàR61Vƒ&FG¨Z8Q/!-ôÑ}¹qÝž¿´[åê’ÜÃq¥Ù}xb…Lö¦¤TÃB(AeÉ©v¢B¨™u-Ð…ý‹¶'…m;´_s™ÕhÞt¬ ×u·|™­ØÌý ¯:¡žd«GSR‘NâË0&t&ý6sJ‹Þ#+^÷еGžµ`¼E½jv]×l€mxh›ú +ê6è*Ú"î¤ë)jùC‹Œw]VMÈØ@ÀöÀ€?.ßÏå¨í“ëV® -ˆ³Ó;'Ï•ƒ5:Rªcr}l1zpzéé>d8”à'GL¶…Iû`½ôq.ƒ¦£ËML Î'@ÅZ8¯.ìƒv?˜±&™ -ô“˹¶§Ä†`/ΠØv™ -°¾%CPÿÔó÷±çòµ ÷kÜЋ,Ø›±m€/Ša«/úxª«þúðyÌbܱ鎿>qhXÇ=(rÑœvIåÔhÀÅ70¥èæt7îÎÇnN¤T…ÇÎ¥ÙܶðÚv9æ‘dètM*@½‚HÌj3Kœƒœ_]” Å Öµnl*„ùÃ÷³TE¾îòg,Y±j'¸öûÊC•oâ¥M”† ¨¸¥weϵ”Zð¶óÎ&ÐXÏÜ qÃX_`dŽ{of-}½“é-9ÌyÙ7¼’ª4ŒeÛœYМÊR4Ì„Ë7®.mr®« Š`ÀÅ*³åqb±XŒ-©£i®RÁ˜‚±ˆÏ©é‡×å')ìû¸ÂŠðýÑŽ¸dèé‚BÜŸÍãyK¶ÐHJSé{Ä;°¼¿0¿qäѬïLÂ\d™#ÿi‰£€ÞTHáH¦Wð?‡#^Çš]¸•ˆ\¤ŽÈ®Ü¸ÂM“â±®9?ª_,Ó¸ì²g¦úÉTuÙ»v6¡ˆÕÅe^»–f¡:Æ“RÈDÔ»*tâØ¬9ÊY!C×ÐeS ØyŠ]ÜùàFªL¥p!ÜåfÏNWw¿‘z3%_z`’ÛPærÂÖàX\ÐÅ?—ŸnA©ÙÄÏÜ«Ï4ºþçpÿ¨_xʘ0ökAÏø_vÎì=”ÂnÂî2DÎOJ -ŽÜµ…§x¼»c^»>‚\ñe¬œ'מR òà{ Å×ѵåâÊrÃPwLjÆDF,&²çƒãèyêÊjz°€µKUáþ\ú0Ÿþ˜¿§ä/ù{¤áÈÌ]µ/¿–ùG¯yH\¾ÂM^ÌÌÅs™Õ»ºúæËÙ^"ÉÎRFŽ‹Ñ5.œÄÍÕJ÷÷Ú¾ô´IQ¬Òì…õú¥õ_¯ÝéÞX¶"L•Z|°i6g¢…ç Ø,#+”«g߈®þ,uendstream -endobj -781 0 obj << -/Type /Page -/Contents 782 0 R -/Resources 780 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 785 0 R -/Annots [ 784 0 R ] ->> endobj -784 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [441.1839 513.6257 477.4795 525.3152] -/Subtype/Link/A<> ->> endobj -783 0 obj << -/D [781 0 R /XYZ 117.8281 740.0018 null] ->> endobj -218 0 obj << -/D [781 0 R /XYZ 117.8281 566.3167 null] ->> endobj -780 0 obj << -/Font << /F47 632 0 R /F38 467 0 R /F15 459 0 R /F39 472 0 R /F40 642 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -788 0 obj << -/Length 1700 -/Filter /FlateDecode ->> -stream -xÚ¥XmoÛ6þî_aô“ŒE ßô¶!²¡.V ÃŠd݇¶+™¶UÈR"ÉMÒmÿ}w -¥­¸ñÞ6½* ÿ¶F‚é@ë±)Ï/6Äóy|È@àOS.8ÿBBÑäŽèó"}qD¿¸xºT1*–D³ùR‚ ãxî«ÅYc†>Ô 4à½Å &¡ð®·UagüŸg§ -tJËÔ®ßcÈç8ÂÔ‰4Vı{JÈ=Ño`çÞîüFzŽî"c„àtTðÕWŒoƒ!%¸æçfKÓî(w„‡ÄÜË÷ÅФák.i¸«([a¥pÆÀ9HBê¶§Èq—¹MÔ{bZ[Ä‚AÓÙ„@#½;™ -Ä" ÒJ 4ŽB›`±M0˜Zã° ÕÊmÊÛÆ-øtM Ô9XG‚©1\nÀ¬²æÚYˆZ‘éÇ™%ˆc-BPµÝU5˜õaVkÀq%¹š2@çøof>ñù -²úÍŒ3•ÄÁü&œ‰®¾›)¦U¨»y1»˜½Ô’N¢?9‘ùšG, -Âèp4ª‰yߘQâîÒ©Ðë&,‘ ÜÈ+Uš!ÀÁäA¥‘PˆPwÈ—:BJëm·~׺õÒ1ô;ZJ¥IºØIÝ#Dwœž×Ý¡[§Žõš»¨+[Špœ -œ²¡î†®ÖM—*‹å®X(Ïöu¯aiCÇ­WeV›Öq5÷]h³'^‡à ‡Ïú!û1 ïùðë5}¯rÀbÖÞ9|üÇù߆îç.4¦b¡Çl%ØŒbéW¬¸áÁ<:Ô}I$Ê-º*EKÜÓâ²µhôl«óʉ1w¦ÎrŠ¢æ„Ö&0+'<(&6‘l¡Hë"t³Sš:mÍ -K7ÀJ:âØE‘ëLªÝÎáÏ8 T-OŽâ€Œ¡±‹ð–Òò»q —èEN†LÀebp2jy³Ï¿1àfÊïqàõîjŒÌò‡µöÞfhôNF†“àÖlªÚÙÓVX¥dl­; ¾‚Õ”ŒÆn±¨áš'Âv˜4äÓ¡-õm”h¦h\ÊAóZNúGbóÝ_âbòž1‘\Ž…VÙÊŒ[hX3«ÆÉ“I­¢˜q)Ÿ›ÔCöcIÝó ’:[Ñ÷õò´È¯NkÓTû:3¾`üt*æÝ¶œ>ëÚ”Ùöô׺6›emØf}dCˆCÔøàâ³÷Ý1žÄÚîøÓ™u–íýªNEú¾µr -ÛxàüdSç2Ʀ„×¹T ÜiÒëkxüe'°ÊÛÚŒzØ÷KDo;ú¥*WØLpÏö‹v §~tBÞÖ¹ùvÄ6¿U'4(+«OÈplWûöY¯ö„YÕÝšŸŠç÷2/foܽ mËæ>»P­éq8„bâ¡Ø6ºk&úK÷ÔýP©É¤zÿÀ4ñs¶½(¼šÖÞ8ݯ[üÖ&–Jendstream -endobj -787 0 obj << -/Type /Page -/Contents 788 0 R -/Resources 786 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 785 0 R ->> endobj -789 0 obj << -/D [787 0 R /XYZ 117.8281 740.0018 null] ->> endobj -222 0 obj << -/D [787 0 R /XYZ 117.8281 589.2535 null] ->> endobj -786 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -792 0 obj << -/Length 2317 -/Filter /FlateDecode ->> -stream -xÚYÝÛ6Ï_áëKe4fE‘ÔG‹; ‡Ë=àŠ]ô¥éƒÖÖÚ -dkO¢7I÷¿ß|‘’½Úm®bRÃáœß ¹z•Â?½ÒºPeVêUaS•¦º\m¯ÒÕß½ÒÂd\©rçðsatc‹\ÙÒd«Í\Èßo_}{cJXAUÎe«ÛûÙb©UÚäfu»û5)×(¿:sÉ?ð«·=¶§µÉOèêäÜŸÇõÆ.‘ñq­eœ~Ï ±Q\ÿvûÏoo´[éTUi¥qéj“•Êå¶ ¥ß¬7Yf“®1§¦Úßkßö'¦úuV&Ÿaä¾Ë¤aêe×<6ÊÙ*£ydiQGiJmVUÉy¤I÷0tîT&5îyÞâ¦÷¤€‘— ñ‡zðHÛ"­kXÎãšÕÀë߯™<ž·ë¬3kÑ»Íçzϲ\™ÊV°_Üæø±õ[˜``^ÿ>ÕfÉVÖ©´*LQ¼ØíA6ÓGˆ6jRïïÔ¥]ƒEP7›¬ÐÊVF_êUjuF¤†•Ã6lN[ø²Yšƒ‰‘å¡«Ý‹ °ßß­7Î%š­g|Ãrœ¨“Fd“32•U9ÜÉNð(;áš-ð@'óí¶#9ß-iÖØR¥¹Ö¢¦»Å&’/ŽÎzoÖŽ–ƒ°¦¸ÁöY+ä`8§£H¸Ð6™VNWÅdkJr³¾ëzR8=R‹äÃyô=ãØ°¶™Ì;°‡#øô2JxÃOp@½vF¦ï3Õ…÷¹\i[drŠ CKQæŒÛFtq©Á˜Þˆ …©—zô­'¬É^À[€–ÊR}z.’V…ã*&Ô#·r¸Gòê½ ±i:9:— :EhB~0î{ÁÁ®L¸†!Ú±¨Sï™òáôíùôá—ñƒ ïÞÞÆЭLaò•sVUࡳ<ñ$_DæÍŒ›ÒÀòL:«TVf“P\â~[Ã~€ãí/Üþ•›ÿŒÜ~ÇÍçã]3Ç߸ýÙ á{nç.&ÃÇ‚MaïÊ:k!À´2y|¡ÖVų¨„]´ò ¨eŒhü®÷ˆEÌ£?Ê 7 ŽI¾@Èy°: Ï¨ö°Æ}ԾٱܻjРYH"®±+lŒ1˜€¡Í8#ô£šã 8Ÿðób (&Š\¡‹ÌÙ_ò‘È'NÂFüihvÁKü#·ý݇E·‘Ï÷ÚXüºôÿ¨„ï/ÜÈø7ßD©!` -úןñ§†ê‡Rr8´§sK• Í,”Å>â[8ŒçFöà34-„sD“ÅÀIs¨Ä€a‘ŒËNÕÆy‹() G@`> š ÏûÔ¥}ìá K†Pßt» æhô® SÜ…-¨Æä½”i åm…3xÎŽr/‹4ÅDJY’©›Xwt0†Z Hq„œPºy&†7¦Ld -’_†±”ÔÒQ8U‚ë'¡e¯îý,ŸµuGјçTS8 …$}Ït.š¨Ðiw<$Õnáz¯0áeSÌô/œ1Іú¸@3¼~öÆEö‹F 7¡{’M,ï±ÿôªiŠ˜TÙO‰{döþ„¦ÿÌûX“Tš´=£gÖ^v0÷h/@dªÉžà¹èd;Z®½áºyèdž»Owl©ì½@$dDEÔ2¿f®3¡Ø¿Ï¡Òx‚p-tef^Æ ë²ÊC!ý¸†’µîÎTÓÀWà 4hëYšëbô,b–N!ë2¤ÅRÞ©"‹×¹ç«<YWþ ©ûœaͦàÁÕæNY…— ûÇIyøºn1>€× ‘›}ÏpE¿;¦µñR%Lò6]ß?lºfº>u² ð¡E¿@·ˆ^%X½Ý2°0¾ì¸B Å%öê #oÃ:Næ$G.‚Í’ÌQêe¦c=tñõ¡¨Wr³»xQ‚½š\•.å÷œRáŒ\ž’nÖ•I8Œ~5z\ç†×ün$ïLüVôsl|{ŒzHé”üŽbÂƒŠ„s -z@rç›áD:oj8LieõÜîšýƒdn&7¡ÞÐx'|^Ø­?)¦ß¬K‹A¿`Òvò¶:JDµZO:»x¦`ç£ãïgM)Ú4yK©±kÇÓ·µ0Ä`D™Í§‡ ¥¢Ml½?°8ñ§¥7vÉCÈîz|Ð è‚È:õñû¤ÚŽ/Ô13WoVÊ¥iyµœ1Í’¯— ÐL¥XÃÇ+ S~8qËWÃý¹…\¹E€h3C!†,>>ðø'} ˆA¢-Ö=8L^‡Žï¥§DØL‡Šì~À')(’0 ‡‹!PXÐÒ—âÞ2ÀCpÚݸÞÉ/¿–Tª,m( -©¤Î[/iðžóä»›Y¾¬%yFïÂL_0I¸žîÖKù3$äñj‘Ã[Lrh€PàÄtŠŠäJ>S…©Ü¥:8I¡vÃu˜°-Ä$}°m§ç^tƒç.ÍÚ"K}á¥yÎþÒ¥9òážlö¿P¬ãmõ1ö–oÉÑ”<øëW»¾‘(à¿úíâ•…O_‡›p¸ãW—ꟺÿÿ¶üæ$ú<†'?ËD` 'o1uxv4FìþDÝò÷‰J«Ü˜Å?vDžÍÄD*¾ªY`´Hu…µîzÁø—“§ þq@=Dendstream -endobj -791 0 obj << -/Type /Page -/Contents 792 0 R -/Resources 790 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 785 0 R ->> endobj -793 0 obj << -/D [791 0 R /XYZ 117.8281 740.0018 null] ->> endobj -226 0 obj << -/D [791 0 R /XYZ 117.8281 715.0952 null] ->> endobj -230 0 obj << -/D [791 0 R /XYZ 117.8281 286.7997 null] ->> endobj -790 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F46 625 0 R /F39 472 0 R /F47 632 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -796 0 obj << -/Length 1860 -/Filter /FlateDecode ->> -stream -xÚ­ÛnÛ6ô=_aôIFcV¤HQʰݰ´º ¶{ØöÀØŠ-T– INšû÷ )É©’eà :$ÏýFËE r!¥™ÊäÂêXıÌëýY¼ØÂá›3é‘“‰Ô\Μ®’T ç)@Fd€8Åú [J%›¶á^’&ˆþõÕÙ«Km2yœËÅÕÍBª\¨L¥‹ïjó[tëÚÒÕ}·\e¢?ÿZþqõÝ«Ki¦7‡ÐFk(ÚjC7×®^ÂF]/W*‹ -^;d´áU!¶‚¡ò†¿Ž?wKe£¦]˜•[ãÖØépGÌ5’+ÚÞ•žÝ  4í^ ¤`‚•’ÂÈœµy‡8FF[¢L«ÎY·S«-R«r tb+蜦¥ÇìvͱòâE6°dX€ üöÚûå=vÕý2K"Áò½ëù¼ôêš„„müv_7{üì‹zÃ$etVCÍWܘ( @"ŒÎ‰µoÈ›#P¨ -$ƒÍ‘ ""±Œú¿S± Õ)¯ÉVm‰wetÎèšDº‚/÷;xŸ·ŒÜÜxá¸Bö×­CÊ÷¼µC&õ—B"§Ã?BzO5¤0Áû¬iCÒ`¸‚ šqËÂÀÑíÒ¤¨2­‘Aß öp’AÆŠÜ…N‰2ƒp@N™@Šv‰)f¢o— "îU þw›²FV6e­‰š|`¹1J«gà #7&…pDfï]‹A«óü?è<‹º£×žVh@Äïw.¿¹ä³ŸÉ#]sD2œBÖ­Û“±À#„ü¾¼¦ÝBT^ŒáÝ›â÷XjΩ¿ìÃ®Þ 1_(¼¡v…4„víö,²°¿Û•k¼¹ã%‰Š…Eû¤¢Â‚'Gä|hݺ/×®â=Ì8@›ÞSéuW0ã©5ï=϶ì‹vN Wc‚ØÌÇŽÍ1¶[ÁàUØó÷ "9‹9«`âìvÉòÓÅÇé3°åj_J,»¿©·ÌÓ[‘79è^û˜;j¬%ZBòW!±,x’ý!MT²DÇmUŽ‚žû[hÈZjrmǵ˜7‚æH 5Gìªðq…y ö¼® -×yp¨*HÁ]SÅâ&§£p›Y_U!F©X9F—à£×¼Ý5•¯Ãµ¿Òð¥NÙñâ€b7×U±?ç ‡ñÛzªšpë:'€+WoÑ$ŽýèIP‚fì­3#÷7/_¢‘“sÊOúŒ6Ï”ï3ÍêÉí’ŠJÕ@É m;WTR%2÷‚Ù°  ÷‘…´Ž½­¢NŽ£G`wìäxÄ]wB§à˜i)r²³©¹ºb‡²"M²-ê×]ènè •0¹ã4²Ï J{!"/AãpsΨœ«€â»å}ZQþÀæaì]è_(ûY³+-…Rú1»£GnÌ>š¸ÛÌ8Õ¶ ´¦äÛØ*ÑtšìÔc„¯TžÀœpÏði¶«\Q Å“PðUÔk:2I’±¦áÒ9G|+$ÁÛTßh¹é€š(M‰IƒìÃõk7DIUÏEù(#Ö=Ì›‰#ˆPæõñũȼEYNgpD=€ZIå ùèzFܹiéU“‰pÇs‚gÈá…û{j_Ýí6èð]±ð¦ä±ã3mUƒå`Ƀ,&ƒpÝQÞ1FÐ:N€{P Ñüpn&,:žàú~H‡qX× û¬ÆNq‡ëÝt†öܸ¿MÅ™1WÓ-ÌX‹uÆ -kKÈå9Ãàù{>í«QjXl[J‹‰E7þv³-€BË«²ž›ïdNm(‰Í­OçGü8K=fàÚyñß‚›9‘!@DlSyª/Õ§ÜÒð’ä) úqðËÁg&¢Ð´8AmÆ` µvƒç¼ôãÙ~Ë÷©&[>§Ïk^jrãMï?Œzº",¦{èÁw½«JšL.ðøìÛ«áÕ9<:¡Ì +•~æuŠþÔuÀ#ŸÐÅø<Ýø/ù3x“¯¤ÄðV=y…‹üù¥÷W_ñŽsmâ@xµâo[l•ó¸5Øl¶£ÿ#õ7ø~ûœ£Vñs8E`Çб.>Š5M%¸Þ2ñÿ"לŒµæ¡Peû?â¹–™øøIžošÕl\ü‹Ÿ;^Ó¸ õ½¹ ÏËP5L8µW”ÈT6‡4é†ë3eJ&Ь 3rF2‹L×úŸ\¸›w÷^¬†Eª;Œ+\[ÏbkKûÜ,ž¢?•ÅŠ[áï7蔟ÊOŸÜ‰‹‡°yqÀ³¼øÄN`&XgBp`ó–ž02“zd³wuã¹\û]"ùQvó¡ú”ßc—ÆÎ(zlöA„˺µ6O)=o…S¯úŸ s Ów2û〳‘È“â Nm,R¨N2Ô6:KÔ Ã¿ðý~endstream -endobj -795 0 obj << -/Type /Page -/Contents 796 0 R -/Resources 794 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 785 0 R ->> endobj -797 0 obj << -/D [795 0 R /XYZ 117.8281 740.0018 null] ->> endobj -234 0 obj << -/D [795 0 R /XYZ 117.8281 604.6578 null] ->> endobj -794 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F38 467 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -800 0 obj << -/Length 1923 -/Filter /FlateDecode ->> -stream -xÚ•XÝÛ6 ¿¿"È“Ó]TKòg‡ X·µë°îáôe]¢$Æû`;— ¶þïã‡ü•øºœd‘"EŠü‘Šœùð'gRÆ"Q‰œÅ/|_&³õáÆŸí€øöF:&&" -Cüœ .ƒ8A¢Õl9òzuóòNf2:ˆÔlµ(ó!u¤g«Íï^ºXJ©"ï}YÁ̳‹¥ŽCo]uƒßÕqMcë·-i±eÂb]Ùf°µ> -½Æ<-þXýüò gÒ©ŸJ<„?[j%´R¬ý]›|¯Ù/¤—Õü±^¨ØÛ›Xj,ë“Þ-ÓN •°&éíÊÁæª<îöð¥°ö”Å‚N 2p;˜Qó.â6 o5•åIQºÜFJ×ô¿&Eœ™!+X ²ž2·h*Ú&µƒT‘m»Ê¦>¤ºW‰wÚ· - -^hÜ2Û×›~‘¸lG¿Ò¾Êæ™m…;Yyl÷—ˆÒLy}lÆêÈ\ àäXÓò½•OtÚ[´=I½S•5zjß)¸qóÇEy¦`¿m˜‘ Â[D¶ K œ˜Ûƒó Ðú Bð–hßq´=¯˜š%VldyÄXîðÒô3Ò‘òV8ï¢X9 -1V붯MÁ“Úlm~æ÷à>ŽI$ü•aD<ðÚ†Qé–§­ûqÎ7M¾³mZ¼‡ª]ØöŒå ãL­»W©‡ºN:¦fïØ“£# #mêàÁ‹/æÙ=:ÙTà7Á©ø"E†ªMm„"Õ‹'$ÁKèý‚gPàÀ³(ò6ö£/ƒ"#äÈHêgC%"Œ‚˜¤¢8<É ´ßÉAS0bxõ£ús–ûÒR@¾ ‰A* -˸&T*)’8–ŽÉ>õÂhõØ2M’uRáÄåц¿.p¤´Â}tU ¸,Z+HCI‘:p;Þ7x/¾ -“ñ½oN´N€7Nª%/¸ ªÁ¯p%æëÊ |HmÒOÐAܦ_ɺd-™½¦š<-§ùF¾KÉzà¥[æ1ÅÆÚ 3(ùÿ•Ùf*¼+‹‰³tÓP>E%ã÷`Á¾dR¹u£Ãqhл`@‚õÎÜ“øÐÖ- Œ,ܳ`òO]"ºÝ[ç°ˆ'ƒPv;eÊ–®ø€¤›W]ù–‘Œä,ÄLR*â¤jçxîÕ¾ã_7PµGúµ`<Tù‡}ù®1WçHCq}Œ‹V£eºÖ=N +a¨úÕ•J @¬£@l¡ÎkÝ-÷rÈ>e¸J…JÔ@,j/ÃC@¢Êî~-!éã¿5ޏü–Çžã>Jq™.jW)yÙ 8;–úxß`Û}~Ȉc÷µôŽûܲ¢fMq-9;ÄEhK´Ãl V–{ „±#r;”ô-ÛœŽÒ1‚,Œ“¨«¦-6v3u¼P |Ç0ã)kö,¼°'V‡•¾-;ù¦-.‚¹Þ,’€šl䤲U7m3Ê€¼TPJéGW5Xzo»Šv0n s“ÆšÇÂ4ÔhrÙ–TÇèjjkyÒT¦+z5±î½‚TžW÷5'µeáêÒRÙ~¤Ö†ÄZÁô²‰¬ÏìîéË|ª Ò±€–N;W¿x1u2~ê'އºbh»Öj1´…Ø×”®ä0(éâ°)ÅGduìzžþÆž«J§"ñ•úÂJ0dÿ\%èøŸ³bmx®>ŒÐø\ÏÀ%Œ‡ëQøpóÓˆ¨ü”èV¶ƒÃ2ÏËÓH8Ô^þ|[æ;[̧µ¹?@kóhÇ€2¾#‡ùœ">–\<Åj)€-V(]¾ñÜðÐu³.ó³ ˜sÿnaFºÖÁ¾!ð’KRàx0EmÞR1D˺í±`%7÷}?—ó&IÈ+k6g^¤w×ä‹§ DãÞ4CÌbŠ­*:£ènHŠP¦|Cß] Ùô¹Œ‰†žŽ%”ú §ÕdÂh¨t˜/ˆŸS˜’ÐÕ˜ -xÃ&Ù`,=ÀÒ‘nµ¹pnƒ¿[€»¬>×öN?’íËçnJE …*Ç-+ȶSÂd,bÈ/öÆžÞëxÞw¿ì¤!×àU¼.œkÁ }I±uë~`2Ý»ÎÞ2‘ -#讀wÅ¡t t‘)‡sŽã–/Ã;Ü»ƒ;>gáÈ&§ßÈèmu' ÿŽÂáv•6t`¢º5ÑîÇÃTŠ*Çäó åYöL¯ÔØ—(> endobj -802 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [142.6198 508.5021 196.1572 520.4946] -/Subtype/Link/A<> ->> endobj -801 0 obj << -/D [799 0 R /XYZ 117.8281 740.0018 null] ->> endobj -238 0 obj << -/D [799 0 R /XYZ 117.8281 715.0952 null] ->> endobj -242 0 obj << -/D [799 0 R /XYZ 117.8281 600.9315 null] ->> endobj -246 0 obj << -/D [799 0 R /XYZ 117.8281 344.8842 null] ->> endobj -798 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F47 632 0 R /F39 472 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -805 0 obj << -/Length 1731 -/Filter /FlateDecode ->> -stream -xÚXÝÛ6 ¿¿"Ψ–d[vÛ; zÅöPEÞ†ap_â6±=´»ýßGŠ”cç|i6p–%š_"$#g>üÉ™”FÄ*–3øÂ÷e<ÛoüÙßÝH&Òa,¢0Ä׉Óe`"ÄZÍ–C&?¯n^ÜËp&}‘ø‰œ­Âü@HéÙjû»÷ëÃüÕo/îƒhDë  H@š‘œ±S¨$`’¼™/µŒ½‰×të¹ôÚ¹Š½Çj¾„GFçå¤8¼1¯SâŒHB2Å‚…Ìt=_†¡÷)Û´$~ZJ‰H†æÇF91'`=4¡k`!½-½}݃¡v£p‹/hvV?§#’´—¼!##¤Ò—¼±Ô¡/¢²”Z„A¢N·`¯ÎþêrP§fM¥'èà~^YÓKŽ7V—V³lA‡)=ÚÒ¢É̢ۜm·p¾¦Mr,Ð]ƒƾ×9!Ù–N/zì$™÷˜wn¹€'À+#“ÑT8Ëël+ÈS:z -È•¡L(Ü)‹¹ÖèR=k¢¢ÀKë7ž˜r| 1.êYÿ z>TÀXzû¯7”Ö’Ð÷ºž'çeAÇø’~΋‘›©`€ì7&Ž/ED­ò]ö¤ ¯w蘣5¥@g²VtM(ð`若n]ªÐˆHWGî=]¥Up<äö&Ñ‹%=SËþ‘^ž:n>0%=¬\Ôn}‚ã~f¬ÞÂKI °Ö[ïb ¸Ä•Í™øBñRV"”"i"P ÿ¤ -s¢½®:XwÙ4 -Á®--ª-UÞ¶³;í\û`±ô*{5SŠaìÅ"Œc~À€+-”l»SD+‡~hØÝ…ó3Rƒjœ- \[‡¢:tÑé¦Í7|ÒíÒšØ< x^2lÊz;”Oö`ÞUPCzNç—hñÍÛU_‰ÀBÍ Ò¢a¹zR¶zêåÜ–-p×(¸¡b5`kAB”ÁµýD!Äè}!Pz···¼úVñ'/™„__qà÷ªSß§Ðçu+ý÷°’>äU[ÜñjBúí’~;’þ¤ -@Œ! †Y­öx•]Ã÷ºçÁèI¹Ž8ZÇŽ6Fø°æDªœa•Z vâ#\ö©™Ö‰Ü§6H–0î.t©M¦¨† -Ÿ@?1‘£çèG›œŒaª¿Ãm]òrʦ­ùÌ×äçÇAN(=ÉI¥2<«Ò:=f-—À§äœ§ø‰ËS»vë˜à­D·YM4©hë7~ñ¦eˆ$ߤÚ³"ÿNŒÁš»¤vpJÿŸwu–• DŽ,m»ºÇŸíÚ±ôf[‹:+6øÝþYpÐI,´¯‚+ÁaH~ z:4´¬Ð—¼ovõ(?¬«l”Zßv#‚wY±us.Žà}w\ŸTcYÝ”¯LqmÚ¾/²1v#îì:«“Ùšˆ$êÛo²kB–V"¤ÙÁ6KiÛ7_XB¸á=µ‰÷ Nº¦C³ENØs²Tó…qRgY1à NBí<ÏÂ~¨LףЧþDÁt#¡Åô[n§ÔÖÐø£¯ð‘2j4É`–\¥s]Δˆ L'?ôŒB¤LÓ ð[wó¾ü%/¾Ø ôd»¬)»@B¼À=¨qKû)í²Ú¶ß±wLÛ :rß;6Ýh°-¹ëæ ÀR•€ìï~mÚ¾e·"—bm €¯zSK{nˆI‘²ÎJüj8.Ø“®Ím'ùÏ$PQ€´9B#•½ÜÝ6/Ï*Nš5·íÖêç :@(1±¹z†ä— §§CÕœ0ºÜgGF‚Û;z¶W#‚½œSÏܦhèv€=Õ?›³Åúö¸ÇÃ[¦õGa -á¥#wSìd ”TòR;ž \¦'$Мôèf‹æù{ÓÐR]}oò‹÷æè¦ïmªðéŸSðïÎþ÷}¯0µ¨ÓÏh˜Äi‹»ŸéøÄ凔r§É’ž£ÎzЊ¡¡Qs7~º*{ £1½ Óäºé–Õ›œÄÝ48ÎÖWt½Ö”Úf=eupf|hUH?»Ÿ`'gT¤rP66dÇÚåA;g|¼¯5žP=aˆmùζÃ-‚ùãÙðYW¶<õL‹Ýᛘų‘(#-|cÂ+#qH~){:úÑ©áåõnQ,*Ž#LxÛ¯X×÷ñ3F jï&¢ïü¢¸?ßþþÔlþÁ.Òzò×Çžfy"šøí1Òø²g…ò‚ø\`ÿSæSÿYò_endstream -endobj -804 0 obj << -/Type /Page -/Contents 805 0 R -/Resources 803 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 785 0 R ->> endobj -806 0 obj << -/D [804 0 R /XYZ 117.8281 740.0018 null] ->> endobj -250 0 obj << -/D [804 0 R /XYZ 117.8281 625.311 null] ->> endobj -254 0 obj << -/D [804 0 R /XYZ 117.8281 488.7529 null] ->> endobj -803 0 obj << -/Font << /F15 459 0 R /F46 625 0 R /F39 472 0 R /F38 467 0 R /F47 632 0 R /F40 642 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -809 0 obj << -/Length 2199 -/Filter /FlateDecode ->> -stream -xÚÅYYãÆ~ß_!ÌiöÅcƒN;N€¼dç-”ÄÑK‰2I͑㿧ŽnRKš  û(VUW¿ªj‰E b!De2‹TÇQ‹l±Þ}ˆO°ùçÂ)“E‰18õì†:M")¹§LþôðáÛU¢Ü¹xxœ‹u$T¢›ù2Adà¿&ø;ÎʧcÏ¢]†*5A‰“×¥-mw]Õà`ÏÛ‡¢ïi½ÝwË>üõÛ…Yˆ8Êã\ ÜxÊ,2‰NIàÃ2S¼¯tlÊϱÐ{`]âBt}[ÁlÿÄûÍaÊ”h‹vª„ÐÞ›Ýá«=Qlp# €nF€ kË¿ÇÉŽ´½gª'Èc½I[Ë¢còjÏsz£iÑÛ¦†GˆÅ“ K:Yóô¶Ìt€Œ•PR?;n <íæ g*è~»’·[²½5=l°é°Ò–¤)˜~Ï[¸–g۠ͺ¨Ô‡†Ø<ž(éÄxãg -'T>ZLÝ(DMÑåÈðÈà¾ôLªÊ£D'úºTGt.5™IÕ&qœÏ¤8Ì  &”9Œâ¸#Å7–"™S@Ð'–âW_¨‚N"w¾,e”ÖìU{ö(Äc×W8ybÿ5^Áy$…”–ïÁ/y¢ý#ÅXÝ Ü ËrÃÂW¸òæaÒH¦2Î 1H’"½ -²«±àènÃUÁc4œ ¾SÁÞx€¡—X‹üÎot“'rân£w3Ày,­°Q~Í—,YY’¶œ€XÑ“+ANŒƒ BÓa LØ1RuLú96ñ®xåI¿u¤†À •…(ì·ÌâO³µ4¬§\a’DI.ò9~94Z¾dœìXí5e[n@ q1¸LªÑ6êFpMÉ®×@w3¸® ‚ë\pê ®™àð&”Üþ -”ìÈŽeJ› Ð ™b;Â`Î’˜G,Ú0W¹y·àM3Æž•‰bšÞãÜËn5*’Y"n¹uBvÕ­Žî¶[¯ -Ýz&Ø3Á¯0#±óë÷¿çWTÕl†¬ïa¬!ætæ\ûzX&ê½\9K·U¢’åb$@NµÌnE„ìj$8ºÛ‘pUð g‚/DÂT°Ë⢅~ñ™4IÒ¯­&Î €¼Èµ^Õ.h½_œFq¿ß³Ÿz_t=>À칊t¬Í"Tqd3¹¼ÇŒ£µ ¨Œ¥©Ç„¸Öq°$Ö°$|ãLzÝ«kûA¤Í¡obzÃ=l= ípÅØ½´D`Ѻý~‘ꪆš½_‡±ôóTûCF%Ö¼!óà?Øáiˈ×bG‡,Ž@ðb‹ ?UÏn¦â àETúX[ŠG,ås·"~#¸4{Þ Óåû'”Y‘v[^ã3ã‹߉&<18E …ÅfÈN2^**3Ó§:J”q…•·)Ìì$+ßÑyª´ Ô€Ás(w@üìèÜ2=ðäú¥Á=«ç¡FÎmQótß©ab~ܑ٘{èÔd'…J¯Ú 5~ vÚ•:§m™íÕJÊî}Ø—{×ß=µ%¾¸ê¢s¨•‘Jáë_Fyë)ây ×R‡Sr_iÛ2“¶d÷ÍægÐÔ@ãÿ‘Ÿú–áw' àÇgï—9ɺÀÓáÈn ðùo²©€¾Íh=·èÏLñ ?îšæl¢E -r¾›ñrÝ~tÈÂç«b·j_4ÏE`ñ<0ùeú¯“ùëɼ۞,4wTÿ²AüŠ–SMAè¨é±»çѶlß«qq¦À|~<™—FowV“¯5móæÓòÕÃ]§ñÈþ„ šZ„âÆò¬ß.XA¤Ùuue2á³.ZŸÿ:¡ô ¥„q–¹ÔÅ× -?•-¢«P„šø,öÍ4'Ú J‚s¼>BŠ!×Àx‚2Hè‡h侤»3~‚¡íð+‡$[~]"(â`ãXß=ÏÈwxÊÂÒ!¿Ù 3 F]‘†ûÉ}®;×!à;/>/¡ -ÚªXÙ 4ܳ…¬»¤Cº§K¿õÕÔR*èÔµ˜Õ§Ù@'±Ë؆"_¾iAÀœ¢&m9«£FDd•aŠe-ç*p½ÌÌ´šì¸‹p2G7\+t3°þcQ |âPÝÝÖXMkof”&Jåp)Qúk/¹»ƒ1(¸TâÆ¼hmíHÙQé1;*CjÖG<·ÓįŒˆ„î?öoë/%Ým∪7gA¼Ñ4ÆØñ©lCkI“DJAR™×ELÕ. q­}•¦ùQ´¾s§ðI&Âõ?c/&G©ˆ)™¾39Nɯ%ÇŽÊk°bQËÿKz<4¿|9I+³2ž$Ès𢽛`Þ)$ WÏyNæõ÷”rê“”ÒžÌ÷žxÆ»þÍVUÍ©gÄ|Z:åð›€ü§rÇ·.}µ¦/ \«“ìíèÃÓIŽwñ ñ8® ­ êIìþŠªÁæÈe$1CÃ-ûa’r*Ÿ£b¥&¢Ýv)С•÷2J[ßÙˆšT¸O÷ž¥ÐW9lÇÕª;Õ,“ÇĹœó¬W²¸žà -f†Å_d9›Ø¶ÎÖáø\UÜ:Ø\KuÕõ÷æ%‹#(ÿ2þ ¿µqÎgŸ€ÄبÎ~Mb_ˆŒzPMmC]Sk¦yé"Öç/öw,$ÄÞÊfˆ$’¹sëŒÜ«¾¢î}1à©nÜÐÉT¸䊺ƒ`‹ú1Í%/„w©©=òHJsÈ%ÚÅÀó×J eÄs*pÀî}%¸Ì¯'Э‚~Ï“;rÒ‘RPýTtÜ3×µí¨tŽWÍæŒ¨;+ÐÑÅÛ¦\@yë2y$"dŸŸ_Ân‹ŠÖù©ÀáÔsÿˆË–endstream -endobj -808 0 obj << -/Type /Page -/Contents 809 0 R -/Resources 807 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 811 0 R ->> endobj -810 0 obj << -/D [808 0 R /XYZ 117.8281 740.0018 null] ->> endobj -258 0 obj << -/D [808 0 R /XYZ 117.8281 715.0952 null] ->> endobj -807 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F41 605 0 R /F46 625 0 R /F47 632 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -814 0 obj << -/Length 2210 -/Filter /FlateDecode ->> -stream -xÚ¥kÛFî{~…áOrw5ѼôH›Ã%@äŠ -ÔÅáìÅÖÚBmÉä}ôZÜ_/9œ‘%{loQ,°Q4Éá›ä“þø„ó„¥"å“DE,Šx:Yl_E“|üôŠ[$©Sk¯ž¯¡ŒãQÃI³‡X'Øœ & ØI¿“±Dô÷óW¯?ªdÂ#–EŸÌï'\dL¤"žôxóå—àßy·XÏB-tð5ÒÑŽÿ¾pàz Ç[z pwáæ†ž¿œbGânþ/5ä’i• ?×›!×vÄõ‹‡m{ÄÞ÷µÏß ."&®Æb”„òCh9EŒmŠjÕYRíÝíAÆ–ß¶­pínSvï:z)ÝÏ ËÐÏs(êw³Pr_øËÝ%xr½ét¤#Ÿ®!ßìNô}sããk'ÊÝë…;{…‡—_açó­«œÀ(NôUF ûýmÏ…Ã}ƒÐÚø¾n,^]µ]^YÓåÕ’`΢É7VÒ¼ƒ·ªu”/KøtFBÔ÷Óíê…58'â<äM™Û>ÆO×ÿT*bq•µ±²µèE'ûœô‘µ^ì;¿2¬u·.šÇ²…ë - ¬“—›}S í×¹¦/HtLiÑ$‹¸ Žžf<È·pàȃMÑâñ xõaÞgÉ>-kÉYÂSéM¼=V8D£TÊG©TBÍ ¹÷x(Ë׈''ŒeÆb«+Œ–‡ñ8‡+ ¥!ÊÆŒŸF–ÓÑû³O›qÌb©`¶`·™H‚5¨°@¶ô›1s%OáÒô›é®úˆ+Égñ±„|ê!'KUª-ÖÓÈO¦»é­“~w,ýÆ@Y$®w€vѸïºq/2>÷„ñã·™~çÓ¹Öhùw úm߬пŒMc<öÖ26 ¥”ÁWP×ßÒè×feÉÈlÅ©†|á c#h‡EI"#Èç^@AfÜŠÂ0шàóv·q4¶æ5YÐÑWH7tøT4Û¼òIÆ…d<áÂ’ýe»É‘ -Þ¥;#x¯‹ 3pr¸BÞ•uE,éɃǙHƒºY´í -“µZ+ÿ|]P× 8º_š ÓB8§Ê÷^Ñb–è4½(Z/M'+ÑþÌE•ŒäU™œ‡yiD QÌÿ²Dõ t*.ãWKY˜&tš¹„pî†P¢®J'1+÷Ò å'¦¡ÞéAУtÿ¥*¨÷øÂ±ñã(¯yÉÉ÷˜ -³[ç}!gй˜BõT›gÛÃkOB¦9Z—ÿjâ˜Hlž7®ý@HnžQ7+¡BäÎH„Ñ.³`>K¥MÌaR†‚ùL‚85=[óÑâ?® l¦è¥´ÔuÓ¸l¸èìeŽšµ¾@äÕªh}¶ÆDçïfPêoÞ|(°Åâ²±5L ™šðÚ$¶'=C8ƒ‡ƒ/ïš3ŒÀç3™^ŠhnâØÉý>ßo}t þèHªËK´¾‹Ñ÷.œ½ôDÊ"‰«rÅc>K°ö½—VÂ×/͉?·q}†œ` Yvm¬Ó8òøâÚ¤¤Or?î×^‚Љ¬ï6^¢»Á¥‹o/Mž1hFN5:Å,’i-(ïKð •e¸$(äÄÍúy<Ã]ˆ~jŒÛCæžÂeaÔ ¨–¶)Â4I Öµi6.Æ2AÈ€Yu¬RÃèçz[tåÖ•Y|¡ÚÀC -(#2¡e±–%ˆ#‹fܘÀS8›­CCi‘ ˜†eµ"Jµ¥H9ð·žwtº¯M¦:lÛ O迃Š, -Чáè„0à:3wãᇇ«VHº4YlM?GTÐ+jËL΄žc–èÊÅÆ\÷–׈n“ýÜ›t„æ,Ž„‹^׬ù -Vƒ>à ‹sz¸nU€™tCàûCƒâ NhL“X¤—z“PjÉ"È>GÝY×÷Ùf¨Å$/âà?ërüÖôŠ£>ô¦ø’8-ã±Ïõѭ1* /r{0ÅÈœ¾¹Ê€/˼réXcc‰›ŒŽÈ"³½%Ñ¡uŒ¥‹[‚”ÌI õ£òù(SE1µ}]ãÜAèøÌvÈùeD –Á}‰®²dùô‘ž.T”ôÄ­»ÓM ú`uEJ²ü÷‹Ž~L1c)ìG©HE¡ýñ-aZyÆ £‹ïüû(;‡YÉ,#¦Rða`Á»`X`eu:´Úµ­H`’×J¾pÉ;D¿´äíñh|(ìš)oºÏ²véó†?w›²Í®Ô-Z޵bpþ7Íí~á{;’敼¶ëÄ®iÏáGïåÑ{=ýãñ T2CÓñô8_£Õ÷íYó {à(y¡Ž‡è—tÜã™xiÖ­]§‹uQ´xk»… ÿa½jNP}Áè'žïvC[›•â€v5õ£¾x±6_c˜ mÓiߎ>°÷ø£¢1á|Úþ!UÝѯìü+½•X…T†ÉƒmÙí¡ÝÅßWí‚Q ‚îoh1°fœ¶¢'Õ#L¡/Œ%S"rÓ:·×¬jz®ŠÊ,€iÏ8ÆudŒfØ4b:SZãÁë­Ù6d$s Ó²QRnÒð‚>™Ò„ÛªÉ]Þ9j£R´Àç­¼Å~·.¶¦|l‘9¶º*Â⹘¡î-¨ -W ´Zh_õTFIj¸AÉ‚Ï]Ê2öZà±GyÀÔ *UmùÍî\ ¥érÝ£sìέê@¯±¼¶…= ™(<ÊÇð5‰xO -…ÓÑ1C•ÄL¥Rxþ YÎ|˜endstream -endobj -813 0 obj << -/Type /Page -/Contents 814 0 R -/Resources 812 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 811 0 R ->> endobj -815 0 obj << -/D [813 0 R /XYZ 117.8281 740.0018 null] ->> endobj -262 0 obj << -/D [813 0 R /XYZ 117.8281 406.3247 null] ->> endobj -812 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F41 605 0 R /F39 472 0 R /F46 625 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -818 0 obj << -/Length 1827 -/Filter /FlateDecode ->> -stream -xÚXëÛDÿ~E”OŽzÙz~¢©Bp$Ê_âøL;²¦âg»;ç–ê¤óîÎìÎì<~3¹áO.¤LDªR¹HL(ÂP¦‹íá&\”@|s#-“ŽRGNg¨k!Ã,†Q$R`s=ã–R hàNBاcìßÜ߼ܘd!C‘…™\ÜïReB¥*^x¾ûÝA{,ºÕ:RQwÃ]³+ö<{ÅŸ_Kýrõçýwp=a"c@ª‘Éqì -æùg™/yôq+¸¦Žå”›xd…ÁKæí‡®wû‹“?€>˶)–ÿŽÏ ¯Ok쎙Óò«ÃŠ«yu-ìjÞ¬A6 -]G"Q‰žŠ«õr£S4NE -m½6à9™$àÂmÍ;2¸x ’ú, -~êpZ슷¡4M±[o +O+a®‚¢çãe4v%lÅ&¥sßl€Wëà¶å=ŽM0<¼¸oëº]©48W ÐK&aØ9Ù0.P—ïØæM˶JUØa;‘óXí‘a@z¾¥!ÓhµoPâx…êß¼¾÷ñêÃâ_„ŸÛ#îO…¶cC«À5ØCwÍàýªbø®×<¯š¡(‹®¿åi!JÁ£Ð®Dö›-M$#Êl. -½¨MÝæa2J.ÂöHBQ´:’%œ4-¤‘Q¦âOŠ€Œ¬šò"3ÉÉè‰FBpù"d¹´2–û¶õc©ôr.¼Ö>Í5è”$ipO%eÐ>Àþ(ø«`Ï÷vuß# ‚üÿ8¥@HR|ØcæÂL*€! -GNªl¬– -µHtƒiPŸº"ñE—׳I§If¹s«fÕìPš¾cÕ(¶YE«ÛÚÓ_#ŒÒÑÔ%:#SBGÓc­’€Rî=þ#.ðƒ6YðcËšNÃ7ÕÂÒiº?5s×Q0Ì´™é’¹ÕPµ Ÿ¾Ííà1K× -9ŽÝ%×íÏÁ„%´ ¸ä‰OÊí­ª•õ4p¼_÷óVNÛGBE‰•RSû (ÿéHæ Q· ˆ' `ð'‹:7„1*@²î<'‡7…(‡q*åÉû!#ÙØÀ¶Y¥&€à¢ ñ|È|5M>MF‡" -ះMcöO“çs^vù\Ã×»]Wôý¤özÜZõ<õÝÚdãl‰¬«KjN‡Wÿ{"»jÏ%´ŸL™[ØÅ/ÆûD]¦U"Â,5¤ƒ¨ "½€šQH†›¾mÏ¿,3.aœXÈmýl ÛÜýþÃëúž‚‚! "©®(ò®ú;·ù„Á9 `*‚V˜‘Çã2x.É#TÇaWÿ¬Éš9;È,t‡–s·ÌÇ‹uÊÍÚ'˜]ÐßfwUØDñ½‹ÚÄÜ»(™ -hÁtF •àâé7„¶wùµGä¡´+]ß2'L¸³éÛ ¶vµ¤Y~8ЧãÅ'Õ“uæ» ¹¦w¬wà¨Çp3Ô¡ç Ô›`³*Â-/ž-@”sU×8ŒÏßÖsf…‰PûO±Øz–»,Üß±íZ„¥nkm‹ÌewÃ{ÑÂ\‡Ws‰ùR`¯Ê´UOej„v> endobj -819 0 obj << -/D [817 0 R /XYZ 117.8281 740.0018 null] ->> endobj -266 0 obj << -/D [817 0 R /XYZ 117.8281 633.206 null] ->> endobj -270 0 obj << -/D [817 0 R /XYZ 117.8281 337.5642 null] ->> endobj -274 0 obj << -/D [817 0 R /XYZ 117.8281 237.6282 null] ->> endobj -816 0 obj << -/Font << /F47 632 0 R /F38 467 0 R /F15 459 0 R /F39 472 0 R /F41 605 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -822 0 obj << -/Length 1809 -/Filter /FlateDecode ->> -stream -xÚ­YAã&¾Ï¯ÈÑ‘&ÔcƒzÚnwWSUÕjgnÝ<‰'±6±#Ûišþú¾ØÆ± s¨VÚ`øx|<ð†®BøGW”¦DD‚®Ò8$aHÅj{zW{hüò@ ˆqAÎñs¦u§ ‰‹VÛÈ//?}¦|EC"CIW/oYʶzÙý4?Šã1ß­7,Šƒóšuµ¯³Ó)_o ŒÕ,¸b¹€¶ö q™϶ØÚB±P¥ì¨@MY­#\ÊØ*ö96ò zÓ–ÛC®ÑmVïóV—Y‰ÐK¶Ïìø¨«_¡òÒ®ÿzù &¾¡ŒðXFj×Fƒ -Z7Q"ÐjUçm±Å±D‰\ 6f¯ð›Žzµ.*%²º!ùŒ#Ø¢™ƒnÏtý¶:­Á°(3%EUjLtfÀJt˜c‰ÒÕ[4};cÍ %3jÁï¹ÆYªAas^›~×Cõ¨oU­ h£lÚ¬Üæ„P{Åa‚º‘ ZCYé–#ü9(Vü›ë&¥=PS=.ÝGÏMIbA™_±0]EÒõŠ(áTjï{Qëèí-×y‰T­6UëŽÕ[” ¹nÓ{¬Ìöjr®Íj5°‡O/ýæè]> %‘2å³;¨Gml˜ÚA1í GÂëq8‡ï!M'ÄL’$Nbq‡š!NGÄ1'4 å˜øC!ïdŸ§„ -š‚^7¡ÈßCeç]Õé|T«‰Û7‡6º()‘"J=òÙ0—|=Î+Ÿ›¸—oJ9EÚòvÛ_Ú¯yÕªò¥1 58¸¾¨Ú="2uï?Zµ©¯Jåv—cgeÍ1q€ÝQ%e u*ãñÛyéMÁð™×?â ¶Ädˆ‚*EÐfØA=R[@ÿ\çnÌK!EU6ºßÈÊJ^ªgõþ ëÕë~u*Ä`)NßäîŸýxcÒæ%AvV¯¢b«8»…þY7ª²¨Ð\‘‰ Â¤~j†a壱zª.*— ?¡C^[&‹rßäèiÖù. LJ‰¼™›x%Ï·8bp¥­j´q¨ŽÕþ¶)ˆö*¸·A\•œGèU!î,"có0¢¡JsDð?…±èÔFš`£Â–K½55Àö×§9GÅôˆ <‰Skãpz— -Q•Q€ _¼*Ϭo÷á+|=érÑèß]þw±ë¤G¿æ!Š9 J#îò)›æ¬V&ßvy?Ü·[Uî‡&¬üάªJï]nL•ý†ì“N fu‹ÛeYƒ VCÓÅ$‚Š.!d|'~CìãbH¦‚)fEÝ!Ù†¹Bró†d7q’'ÄwQ¶ É#ân±DÍMï”ìüŸ‡Â@ßçc/Q1¬À¹Ûä4Ðk¤-=jCɉ¶tÈ]ñf'S2ÙJmÌ0*ÂÝœ;¼]Tîdˆ ¸È&]ÉÄŽ&q¨âÙ(Ágüã©ÛÒ¦{©Ç¥¢™=¬s,ºÃêùV¢\˜Ø@Xf–°î|ø}öÜ Iœ -a ýÀól‹yуILއ>Ã$’ÈÔ&šwßX“¤÷µ`N÷íp~÷uî{O¼ä¾6qçFQ*­«RÚ7¬}øÂ2†/üÅtË}·…ŠL¦àH®sÍPa[Lœ9ÞtýÎÄ4¦³è}Ò¡Ú«×z—tìgVA0<Àìø¥?½[´«ÎÚH$ª Ý˸÷p¬¬¿×Øg´25Í—«ê§Ö˜ÓÎŽ¥ygXDàEÄo}ÍêlWìOÍœr¸Åð8pø»„c®7ö¦çÁwW·™HÆ$’©‹cMdŽ\nˆ‰w HJo’pÍxa­iH{SÈÇ£{ÂþïgSÂÿfÅ>dendstream -endobj -821 0 obj << -/Type /Page -/Contents 822 0 R -/Resources 820 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 811 0 R ->> endobj -823 0 obj << -/D [821 0 R /XYZ 117.8281 740.0018 null] ->> endobj -278 0 obj << -/D [821 0 R /XYZ 117.8281 278.0657 null] ->> endobj -820 0 obj << -/Font << /F15 459 0 R /F41 605 0 R /F47 632 0 R /F38 467 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -826 0 obj << -/Length 3329 -/Filter /FlateDecode ->> -stream -xÚÕßÛ6Çß÷¯0öÉ Ä “z9`/míC^r¸‡¶ÊÚ›uc[[Û›dÿûEIË¦ä “F¬,SãïŸ!GôÈÿ‰‰ŽyéÅÄiÎ8~r·¾â“ðæ®DÓHϬ1áå‰wgÚY¦½’“6òïwW/f"8+x!&ïîчqÍ„²jònþÛôöf&­žÞ߈éÓ -þYÅ×s8¬àÐOïnfð¼\/ÂÑæÎíË=œXV›ÐXM«ûøwÿ°ˆWß¾ù9žYîâ‰2\õ鯨i¹\•ïÃç4M«ÍlµÜÀ‰æõr“lýñî—«ߥŽ($S…±Éº?Â[ÛM›ÿ¢žéÚÏð'zæØpè™íb®‚ïÛ»F^}êÎlªÇxד¨bÚÈ¢'ñhÈšVcÂŽÍa,|*¸g ³RûÉL(ft!ë7ºñЩۛ™R00OÍÁâK¹Ê랯xßùFfŽõôórµj.Üžã‹Í¢ùy|UÆ?÷[hP~¨­."Í¥÷ñïþ!j0|ú°µ pDød&3¢ˆný #¯D‘.”|ú;z»ÛÇ7j_ÂÇ"_ÂÑîEl¾¸úÊúÞX¶ 'êkÊ­»pæi×|J-¹þäæûjµªBËÏ5šb³»r¿øPm—©ÿBÓ@GµŽ-ésxXÖ1˜æOQ4´xù“vzc]À…¡ýÛç;üÛõ`Õ @PM;Ö'P°Szb¤gÞj ì“h€.mÁºº€hú×ÕoðÉšþrÅ!*¼™|AÆD®¬¯”†é†+ÝžY]½½ú5¡]ŸUÉ÷¬Åx5‹Ía{EÏ Š9]5³R‚\ž¦7ULo²`…‚¾²ÒTàMèŸWqÌj˜û=å-L—¡}²ûZ‹£Ra¾^‡R h?®jL7å>Ì®ý ÐÌ(+ %w&Ç4+g˜ê„ä2(^?®Ç“!|¶‡P.Ð'¹–´úZ"bå÷!–{f¸]—F|"VHf¬+ê>ýß~Ÿ%Ù£"µ/±—3t¤b‰;” ,6w‹q–ÿ+äqr܇™·Ú¤5ÆMë œ3ÿ²<Ød"°‡]ìÀÆ^¿‡éÚµË×_aÖ^ÖNï¯ó”Ói¿(ÊM¡™1FQn -Èc%ëáíüSŽòÆž!¤›¢¼‘ó‘Ouª°}?{ «ú¶ŒÔÏÚ•<~ÿÜå!3š·—¼ÈNç\|Ä»ðç®CžÝOÓÂaõýÌsNèÂeqî9³ÜùQνfÖIÛp~›åÙ£â¼/1Ç9–XÎÿŒˆéÝ~žÕÙrCz˜üBš °w¤ÃËOM* ±nè˜'s1?ìiÇîâërßf2ËÖå sç²@yæ,€–ÌËÂÄäåM69ªè+ÌVØÏ]ÂsÃvÊÚ³h“9Ðö¢C;Ñå%èn¹ “ùz„e:ý—ŲÔÌ‹q”è>Î寳('kT$÷ôå@Æúîªz°×Us[¶©¿vh^üÎ ¯gïp{ÖÌvóÅ~±]/7‹-¼+òŒSy‡t¯#{w½]´ÉJ•Ö¥²ÉTo°)ØÐÞãYŠÐp ãÂø:?I#sTh÷æØÆ -XF›)añhïžÞß@N0ýsq·g»ï¯š7Ò? ;™Ãˆöa;ܱÃ×xSåkѧóá¢&u]XVÈ3fu'½+ç‹ì^9¶Gÿ‘ÄüXbš§ÏMKè”'ŠG¤wcå‘â*YŽ7 1]Ùä&ôà²ö’ntúÖÞ1®|\ßÀü0@q²HqOc†áÝμ=ˆP§‡,ÌT –=hQ>pຩg@–Lçe ½Ê%ª?É!ëƒs¢îÍ_ŸÊMžXd‘ -پȳXdý]·ù–¡Œ$±ÚÛ ‰_õUíË]»Ç½iÖíºÎ$8™¿ˆða‡;ı¿q¶^Ö³õË}·'¸H5¥_ôÆ0î¼…ÞLhPØÌÓYæ£AÒ\™dkLóôcdz·¬ËHšb¯”W‡„úi·Gû…ƒ ™{ñaÿ:ı{×õ‚3À3ÎËâY &Æ«L´6`Ðø¦ì3Çr2F…rO^Žd,¯Ú,f«ò®É;ëïáö0––4›ÝY\©<@´ºÐÁŠ=¸® +Ëíz€W2¡—…«t0âj<çP‚Iíãò–ݾÃÖ¨€í Ì‹æ6ð²”’éF˜ ï8ź¯ÏÛ– ”Kk`«0ª=`™óz´^sÉŒPq»æÿ¡dú¨W=˦4XÅByTÜ$‹»ç¦.þK|½}j ­ëkº |œ¨ú•ÂB/wfٯ̖ýjˆçìDñ:ÎÔe¿® ¸:g¤WLC¾øUýÂR.U¨tÃĪs¥´V…¸Á’àm|a§O›»SE´RÀ,mœ™`Ëߦ¶39¦VJÁ}¨öÝ öüJÈO,k*­ó„r;“cr,P¾`äŽý*Ϭ+ -Êîø¤vîkfŒs€•äÀªøT††HÌ­n¯Ù+ãVÛú㉪ß*2Iê°Ì*–ùöff¤™Îš‰Œ8Öa›ùé_§æ:¡™R4MNxœX'ó±~ä±=Í:öø—ê!¬çÆÇçIʰ‹ôqqcºŸn¸. -|è@TƒšÃrd+´?ûÎ ôCòXâ«ÕóR¡÷D̹‹ˆï¹›á»{’÷]uª!º(Ð!¶\ªQÔ!Ͷ։õãj²D:²HÆú°ÊD;Vùú %í·¤ÖŽû/…Yÿ¡à9ê¿LøàþKá6bÃßO‹mó %¼¨B8 ,t\T¬2ŽUßM¿&¶–²þCñrÔ™xÁý÷)>`éÏû凿`õ´ˆGÝ/= Å -SZ±BX9Sڱ·™ÑíÀ2HRÃ"SH!‘·”KÆí@þOæ/ -#3!€ü ÷ÍY¶éÆä¢ØÅ&Ö~m!•f\)uÜÑ"mB„lÂUêî—'èöžn©w†³ÁBÖ(XŽú/,¸ÿÒz‘Ž#ˆnàé#(¯•”±/ŒËÿB[!#9„Hø˜|…L¹ÚUñ\÷ @û¬ÓÁÿU«Uýk’Ò¡ßÓk‰aöÇŸîöOÛöÁݺp®ÚÎcUÒXýŒ)B ´üæú™ºÅ8í™òÒžQ?£ „“ç ðÀ¿ÿ¡úÉÔæá$LuÜæ*RÂ1À ž…ñ6z¼~ êPn†-£ÚÖä¨ZÁ&Ô¡ØáòáC9”%TÛ™S«¤Ž•Œr‡Ëg”/˜à\ê ìÁìl¾f:ù*^)¯ÆÃ'g7¸:\­dJ»¸³~Ï¢OixüØx™žSf(ÌvgØä) -F®Èa§ŸóJÁ”Ü&‹¥ážlCi\dŠ!*‘(„ú"íé:nÈEN=“ÓÅ•Îï:´S½†5N™ñØ%Ns.šçSï߬~"Y%CsDiË&úØd™G3hb‘è KÃëºÝÉ'Ö;RÉ„_ª -®öÎŽ¢ -i›6RgwôCÊn¼A-¿yžo-ΰɓó¼g\ -(òäÑ)˜ßdÁ4Ò—m0ªLáD¦…Ó‘ÊL8xŠ2•;ÂÂÈÅhìHÎ ×h÷3;mKÂØA&c‹<ñc™)r×d‘3Ò“mäŒhLqC¦ÅÍ‘ÆLÜŒvŠ2•ß!n|ý˜‘ œ°ªF“Gÿÿ„n“bVfÃc"§73$¼í¸“ºYܼ3êø§æ Ñ´BŸø7[н2endstream -endobj -825 0 obj << -/Type /Page -/Contents 826 0 R -/Resources 824 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 811 0 R -/Annots [ 828 0 R ] ->> endobj -828 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [391.3993 701.0189 474.4491 712.7083] -/Subtype/Link/A<> ->> endobj -827 0 obj << -/D [825 0 R /XYZ 117.8281 740.0018 null] ->> endobj -824 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R /F40 642 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -831 0 obj << -/Length 2261 -/Filter /FlateDecode ->> -stream -xÚÕ›ßoã6ÇßóWûd1—¿Eî¡lqÍâz@qŸ‡¶Š­8BmÙ'Ë—÷ÏߌHK´bI,Û«±Øˆ¢¨ñWÃÏGb …,a,%†–¤’J™I–Ûš¬áà§æ eˆV -w/]ÈTiO¡‘oïoÞß1•0J,µ,¹ ~ŒJ„Éýê§ÙÝÜÈÙ®š/„¸#fU^.çÜÌžn]å3îäX–³çb³qµÇƒ¯ªŸæìtøq·ÍÏxž/ج€ÝríÎØgìÕ®åîqþËý÷ïïdJäL%•†+Cmÿ̪lU¬·‡»*wÍϯH’r­|k‚Mn¾»o]Ã$\'£2Ñœš -ú¯ïGE¤’:_ fRlù~¡É -Z~C‰°F%ϰC ³–'Ûna†ÉSÍææóÍ]¿øÚpIP´èÚQ°è‹§3z™´Dhe’…֚ɻŽö¬£z‘ëD§X™jßÑVÏŽå².veßSœqbд·l¿^mkrÚ¼ –3K¨äé¹Úû¹à³—=ÀÂgy_®0’Ø”ET{²8%VXF˜Lí¹Øï~°3ä}»ß¼R+C%£ÊåäÞPÖœûçÆU -VñÖ§çAßáª4±Î£Ÿòr•WØ£a:®²Ã´Syÿ²f3šÄŽÍ¾ÂóѰc³S¸†1ž ¯ Faˆ•©š„Q -Bw“ä6;,›¢Ì‡‰ ÌF#r\jGd(õrä´TF“ÙQÙW9De¨r„Ëx޼..9¨µÖLrɡ׵táý˜o‹rËÀj4,Ç•vX†J'°Œ&³Ã²¯rËPå–ñy]X2F¨µSXÂ;cÚºáò׆‰ F#r\dGd(ògªèò)ÿO4Š«Ù·ù\Wp„¹…H¡¡9 G %ýSÇ_/=Ç0I@óM~Ä>š/:ìû®Â>tÅöñz몰W6%ðä('±§àO –¦°÷£Þ„6G±E"ö»"#ôDj¿z?à[”Š–¦Â(žoÛ0zåÚ¡0 -];F{ÿºÂÈ”ž¼©Q&%œ3íÃèãp£…ѸÈ6ŒÎDúÙ£ú½Ãèã ôÑ<ÑAßwÄôgŽ>^_]ôÚŽ>›‚>„§ÂNCŒý¸ÈúP$BÈ—·ðÿé­£ÇûäGsGG~ßCä‡Þ!?^‡Å'AUZáEcP=•.P~…‰ é‚O9®yâªþ Y ¥.iIÌ -¼Ê䮿q·ñƒ ¬Ýá=.©Vµk2-àŒ!T?[ðÉ=h^Îè¡l‡NN)ƒë¥Ì3–-X0 Á¤ -Ðò‹òBSÂPôGHК›,$\š±rhQ›q¸ªÒD9îU&ó€aÜ&¡á¯ë-Nj…¹GPÁδŽg ¬ ‚Ë4¢ÚÖä”\a!Ø(px&w"_BàmbêôÀié[†‘ÿ#®àˆ©Á|A‹«á¸¢8²¾ÔrXŒÅé„È–Ó@äÅ|AKg4}‘ýyíDg r1Ìc<…×Å£¸ö§&y„†j9‘2h™ ¬ÆbrBhËd(t`e¶Å2šÌ˾Î!,C#\Æ“x]\*TËÌ$— -߃Ðã)ƒËÀh,,'t¶X†:§°Œ&3À²¯sËPç–ñ$^–Bãb›Äž+˜6îaªÌõÈüíLF¿“£P†*§ Œ&3€²¯sÊPç”ñ$^”œãbÔôÎ5®m‰¡ý–ÈÀ^,"'$¶D†qIæs}||óz><ŽPÿfõ½¥>š+êû¾¢>ôÅõñ$^õÔNÍô㸮¥'©ìÅ¢~BbK}(©ÿ¶Ø¬nñÏ›á‡þH™üs%³ÚpŠæã œúN -§ÐÉ#áOâU…“°Ð‡šMÞÙÀ/€ãÕàÊþ þÐ^¤pš’x -§3‰2#lsC´ÐìkVîO Æ»àŽíWW<ÀöÙ³Qâu±mšU~9ɶ‘D¤†O²Ø‹Åö„Ä–íP"Nëc}ûy…›úÍ©+ið]o%¢¹%ˆ€W~Ñ—# ôK㓹â3ïW¬qQzxE:¢úøÁÑ&¬"µÄ²á©¡PŒH¾Äß&´––sïþ¨ó½–µ¹¤…Pjvß|=§¼¸ýÝÑïe—í‚ÂvWíñ‹™Ýf·.–øòÖºlW¶ÂïeÖ[÷Ó͢ĭœ­ŠŸ)y•—˜)óF7MÆm}ÌÖùÏ!®íßv(×3œÈv¸@­A!Üg;ÅÁgèÐh†^>¼ -h¸'xO ¨Ä\×xZìÔx´¾8œX Àjb°ð¡¸Ïê§o²Í¦ÎËC~ø°¯òÍqåcwQåu†—‚;m›÷a -¬›'uvæÿ+Ë¥ÛâÝnSxw—Uù»/:å£?‚è/ºñ%Ø«-€Ï€‰UŠã•ƒ‹ðK#‰”f¸›múOÌуXÌö›F)‘jÌÆI` £³\Λ=]ÂtÃl­´ty¦a²¶áNÌ@êö,ˆöö-@¡©ÈJ¿}8ÔU¶ôÍš_ð;®†¼ì7W]?e¾Al7ůîK±‹vb`öõs·Û­.釧¹TñÓSéÃ|á’ÈlöˆSå·îZ`ïè1ή>sUû ^±Õ„Ç808P†}ºÊë¼Ú%ÞÖ Æ›yÂ+?=•ÅÌÓ}ó²¨Ïe§Þƒ%ߥ!‚iOoú¸§ Ù•+v[7Þ6{eþì ÍÀQÜžw4”üÇw ŽåWVn¯°zÉÎü k_Mòêà¼Á(#)§éåQa»;øô0eŸ•nl!ƒcSpÁ©b_8(„ÍÇF…¶]ãóG ­¦ôÛü÷RÄ.ÁgXÝ[xð³;ñ/nó÷:ßžUü£(Wg?³MQ¿œê^ùÂÏ&Í{Áââ7šÝÔÔ5ºp¯Ú¾‚à[¡X%_ÏÆþƒÏ×?ø?(UBendstream -endobj -830 0 obj << -/Type /Page -/Contents 831 0 R -/Resources 829 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 811 0 R ->> endobj -832 0 obj << -/D [830 0 R /XYZ 117.8281 740.0018 null] ->> endobj -282 0 obj << -/D [830 0 R /XYZ 117.8281 259.6062 null] ->> endobj -829 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R /F40 642 0 R /F46 625 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -835 0 obj << -/Length 1404 -/Filter /FlateDecode ->> -stream -xÚ­X[oÛ6~÷¯²ˆY’%ªE$mÓ¥ -ñÖ‡¦ T‰±‰èâJr–tØß¡HI–-[~(D¼~çÂËùމ…áX„øˆSN,ßÅc­(`k “ï'Ä9Œ#1Õ˜¹¾‡\îPk¶ r¹˜¼¸r}‹`à€X‹{‹ÐQN=ËÇ."ŽçX‹ø‹}¿É¦_Àä2×µfÄAÌ h=y]NgŒ2û¥þ\W"Õ­Ù¯úûi&²zîÞèÏ«÷+Yžëù‹$é¡ÿ.³¸ÔéÄúÔ­xyÄœ}Ünd÷³Ì„±ñÍJˆ²é\Éreš—B¦9—?~„„ÿKÏãV÷q® -ÑÚó9,Òó&h°0ÌLïÝÓZd¥|l|x+É|ÓlÂe^ÈlyØ­y6x:þSs/®Û>e¨CG\n¶]La€ÚWSîÚ…È¢)åöJ[¦ëD¤ @ìL Wa5…Ñ<ÓÓùz:£¾mæ‰]jµ;‡ÛcÈs™ARúnž³*|‚ ™È\¸ÄH†°Wxš> ŒÐ<,ÂX.Óò¢O¡Ô7ÒU® _Ö&WºF3JBèqôcÕ²%Ü7‡sÀ}»Z¿BÁnç›"2½DEè[ÿÃB -³,ÓÒð/1Ò×*ŠÜ³ó"…A5è·˜¸°BÖ]e{ðÄ>×RáP´‡!ßõ¨ À:¬¡³ÑÊõ|%è)DTGK>ª#PŸnËR×EãÙÎY?_)ß–U‰ÔGI뼪—ÄZ¶IØW¤·Œw1 -j„G©tçY{>Ûhzœ2áQ‘ -¿%õºÐì\Ú÷WJhònÑ>àêY¼€[Ìñ¦§žïï“/_±Ãkÿa‚‘pfýŒH@éÄA®ã¹M?™ÜL>u¡EœmCep0lG+§LüãúrÏFFõÙO4ÑŽZwÕ'Äí[8¿Xü6t¾(…&çæ¢=/EŽïxà ¹êiÚʧ{yµ•žm‹Ë«­œÒ>›ýbtu^£—k¸À"«Ô7ÙÄ¢yÑ)øpW?yé£Z§›<Õ{SwòûnP·^› xßMÚmÞ¼óÞsUÏI#óïP"IdÁ“{ÜôþYUG’R—²øÇùé.Sé7åûíÄd\ÌÇóø7Nqdkø÷5éCëö-f8}x“XÓd„ÿèé‡]ßÓ‡&VZÅ[a4V°æœÏªüá8Çh¹Õ-a’ÜÍ H=ÇšÙXÜÏ“Ö3âÙëEpÀ‚f—È$e`Œáºsö(³³S{; 뛼ŔNU[b v‹ Žà®•ä™îÜ‹Tfàܸf¢'¡ßy.…ÁOÃ2Ú$ã -»=Íø\–e>äŽæ_¨ææ>‚ÜÝE|1 {˜öÀÒ†^´qeyÖuþžjŠ£Õèf*F}’–hnâ14CÊO”JVŒÆ·eö'Z)Š1Ķ68 Þêè«¡–‰ÍÓèµÛª5FÀE–mž‡ J%2Ä÷:P¿¡]FÜu8bØiÊŒX(­ˆ¨¬T½¢Š`ÉØÖgW‰ç!F)3‹›ü> Åuu°Û”(eMÀåÒ€:AÏ"ª(uSÎÀåPtU -@ÀìšU‡•Xæ5S­«ƒrH'Áiä]3  ‚ί)‹Âõ:©›ÒÈŒë1¾SÚ×VBu=çqÕ¯­µ(€ý ¸ßÒ9ÀǺžo¨>ï­²PëÙª®7a>Tô¬TFäfi¤Ã¡Ë&%ÓlBßWŠ„½vJ‘Âv¨­½‰÷ÍGœ&„Æ–°Ü'¢ægðЃÃ4ô³N+3ë„jò¹CyaÖǤ…RzÛUØþF´¯ðµ€»endstream -endobj -834 0 obj << -/Type /Page -/Contents 835 0 R -/Resources 833 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 837 0 R ->> endobj -836 0 obj << -/D [834 0 R /XYZ 117.8281 740.0018 null] ->> endobj -833 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -840 0 obj << -/Length 2944 -/Filter /FlateDecode ->> -stream -xÚ½ÙnãÈñ}¾Â˜—P€Åe¼6O3Áx1yȈƒEM€6Õ’¸C‘IÅö|}êèn’2µ~[ `öQ]U]]·FÜ%ðOÜ ‘Ç…,Ä]®“8IDqW>$wØüéƒp@*-â,Mqº²»ÕyëBÉ»íÉçÇ?<ˆôN$q™”âîq?#–èX¨LÝ=îþLjìf+¢×ÍVË"ªpÜõ½_Λ­Ì£®ÝñþØá·Œª®­à ã‹*‰j·¼ïãøÐ›Ó aMÏHÌO5ueƺkaxÏ€ÏGÛ[ãÍ1ôv»ùÏã_áÊ[¡âT—’¸ºK\èD3ãf´‡®¯ó¼ez‹§xPåB" ¥P’„ëµÝ(„¦küV|l)H ïQ(wêG¤§Žö•iøÿ6pIâ+„"::›/{¸ÔÃXW¼t"F ®;nIÂðµ/(¤ž/2Ðõ·"Uq"ôR -ožB)%ø*Ä ¼¼º Bœdщ ‡]{áJ§¢dÕx<:©é|~}©b)´t÷Ç­ÈðdIá`vöWàoX»ç¦›fpø êy©yŸ6Í@³úв{;½ví/¨jâsÈXl)êVƒ¤ÜqصîL.­¿(¾:+:DKTô¤CÚñY¾FØÅïÈ_VtvB8Ÿ€ËÆù_-®]¨8OÂìÚ¥Sˆ$…÷ã1c{ļïØQ$|kÌ|X¥—”qšåž(N -Ou2‡UÊZÆy9‰.¶‚r«´ˆ“žn!Àsýý»Y}Ã<ΤÈ÷ üBšâ}R«âʤn\BÅ*M½=Õ£¡´Ñ¶ÛiHʽz¥\ǹÐY¸Ò -þ ”¼˜Dd{ÐFf ‡Rnt‘b>NÄÞHÁó"O'‰)•ø|d…T‘HŸèï62E* -¨d‘ål¸¶——-¿Ú¬èª—a•2‰UVN.Ùøìò×ʼn z§U¯'3HÓ|ùBìOM=lñ(Là•7"‘Ñ7@€ß¤:®ëpX$^Rg -ègÊUmÏ DèUE²ÿ«HÏ¡T8˜Ú%{¸rœsÄÁ¹â©…ÜÚS´8M””á7x2<Ð9L>¥ÆñÜ“‘ÖúK,“>roäÿ…— „ŒóWìáPêbNäÞ8M—QïêÃÉ×M\Â2 ƒúiƒ© ­ûî0%áñZYyåm¿¼Ì³¼ªf‰ˆŠÆ©*Å,(—:ú {4LJër™NÉ1Œ©¼†‹¬¥?RÆ -T‡ð¡ëvý-ʺPÅ,&mÈWlU5ÏÂ2'È¡\+]øéN!÷A¨äZžÎѦ Œ Aw¢_|&ZT‹ ®Á*ž{ë± €Ü™Þ—»&U a)ɲ™Tod$IšûÇÑp~A ;4¡Á|½»Û‚$†ºyIû ù¹í$ç$Q×Iæ/¨l]Ga¡¹P² ëðM]† =¿F‡P}åVc‘þ„KXzAªób°8ÄQ¹MÀêÃA0>sÙ©³‰VwQ.ãZÉãÊÝ+C=²wß>÷õ8NÁÍ òDJI–M½“aV‹úªÆ†ò¡©©¢çÒg"Y;#yò®Çðú‡èi™På„5=Hm mäR“{Áë÷¯nÜñ÷™z^¤Å%«v¹PíòZµK§Hr¤ûÕ¦u,{ô–gõÞõI»‹ÇšJak»®ý“}"úFs¥g^øêòÓÆ¼ð ú|ãÀ˜fEµr—\ÃèZFJI~8ëãÓ”Ùþ£^Ír”Ð`¤!ùzªû)ÀÞ0i’VW¹„RåÊÝ}<#ƒß‘‹ï¹Èô .Rð'ØšMÞ)qT¬Å,OD„¾ ƒãI¸Ñ4³UT‚,ÅÎzŸÁŸ¥ƒj5ÝøYFæƒ!Z4sépïœ>¤ÚdëK!PZMÑÂPq'D\¦©t¤²Xë‚¡EB!AÃ_¹àÃ"Ë¥­FnJso¥æhØ»¾þGðM„E®óÝÔ98Ö‹€.]«ú‹-"0/ƒöå7=añ7Öž¾€rWÜì@üi:Ó`˜`UTïx Í\cá%ˆ“Áíw™3hnbÁÜð§r—sÇú©Œá}òw¯Ü!C‡µõõ |©ß‹adÚ!‘gŸt8@!ÃóÅ1©(!ö_e°µ(0aF©g]4 Qƒ¼u‡Æ> endobj -841 0 obj << -/D [839 0 R /XYZ 117.8281 740.0018 null] ->> endobj -286 0 obj << -/D [839 0 R /XYZ 117.8281 300.9341 null] ->> endobj -838 0 obj << -/Font << /F15 459 0 R /F39 472 0 R /F47 632 0 R /F46 625 0 R /F38 467 0 R /F41 605 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -844 0 obj << -/Length 2382 -/Filter /FlateDecode ->> -stream -xÚ•YYÛÈ~÷¯Ð#…õ²^ $AldòyYdóÐCQ19 ©õL~}êèæ!õŒ½0`õQ¬ê®þ깉áŸÜH™‰\år“™XıÌ7åùC¼9ÂæçÒé$i’à4°»3Y*L®Õf·dòñáÃÏ÷2ÙÈXq!7‡…°Ø©S½yØÿ'úx·;U$ÑóVF}wìíù\·G\3ÑãVåÑ+ï—Ý3Ív¶Ýén»“ôp4VLUüÛv#³ø¶UYÔõ@8žܺo[ž.@ЖcݵȲqGÂÏèH»íþ÷ÝI-S(:ú¹BÉH#€>K¢O¶Å Í£Š¿õõ$nfùç+UÒák”ã¾Ovt#ûD|þ¦´½cB‡'Ò™ñp‚í=¯?[ºï°¦>â¢=£À3„.ÔeíQMEzýËv§Ó,úu››ˆ®;ÜñŠ¿"Žé¶eEà—Sz œÓkà‚åù×Ç-·L<ž*<åÏ÷&[âHéB¤*Ïàôxè0"ª5Ú”2 GÔõ!Np÷L¥©§y®ú §†¹tTiÏNú©œ:ñFÓ%Q·;KaŒÑk/‘¶32±øIB±Ýtg„s)GÞd"IojÏuæ²S:JJ¹¾} ÀôÝÙ¿2ƒ8„‹É‘°!„/öX9Xýæ_ÎÁ)ã}²çæŽQiŠî}«ÔsA®Ÿ¤àX¨ÝM‰g݆¬åïvxrFOÓ8ôkÅè×xð¡ã•G~b2“žÕˆË$£C7‚³¾bl‘é#ß–ôàöÇŽÙŽÕÙû¾ÆŽ•ãU·¼ûé§Ÿî·¹ŽÚºÞ‘‘ø*tZ=á7žâ1ÕècøJ ‘Ë\9Ô€Ó±çjìëÿ!(5ø „.ˆÜ_ЗP'ÁF3£Õ;Ž,¤HRiB0‡‰/p’DgÑçû;Xþ9,àئµš5œèœ©ò#Â5¸Ú_È•(ò4™CØÅ(t ¹w ̶k+>Ÿe÷UH{§L¼ƒ‚çÃ'¦çÆ':Vʰâ%dœéÙ\QÞ_ÛÐUàù“'WvØŽUþAöàðÒéYȾ R8þxU¢¥¢*qm¨ÁîѲM‘L™>¤Y·Ž ¯3€|wéç0  +óÎ뎙?¢ÅAí~»¶yå‘wRª€ÀY·îÔλ8— UÄÙZ#eϳ…¢¥Ä1†ÍÀŒºPú{!cŒ;æÈQè@OUÝólÏþOF¿ÅÒ éÕ. ‚ ~ECî.˜“S¬¥Éx¢pù4˜VqçJávþ­iÕÒý$…b˜>Õž5”[W>Ùš˜R%ü髲ë÷<¾ÑàõJµ.l‡&Nü·ìß) -Ñœ°5³~¢èx_‰]Ç͘³#ðÓ˜*ÎÇòü† ‡ëÈ„¼gÅŠœ£èNBg„—$tŠ– ®= m9.¿o“£|W €¥ûZ!xåæÖá*…Þˆ–-ÿ\ECTRÕçç¦:»4/aO¤ü -õ†d3òo(.!3ž÷]·#ï1:öNsÛ òiÎê ¿þ|ãàì üT'ú½$“5xò,ìŠèÔÙD?Œ¿ Ó{˜*)•ЙN7&ËE^¨bYžÜ”)õnINeʵ‹*„ÊÕ‚-;̲C½c‘(¬FÚ²Ÿf¨Â/ÍqžÉÑ  á¶]Þ…­Ýe$˜b¥o5 œp2e‘€¦C‡6ØpCE×qt„k—…ôƒ§9¶vDXötÀ·§‹BÄòåÜ’ü=ÀMt³ª ¿xp £mËj3w~r…4OºÆñ -¼?ŽÄÑ©ÖÎùð0%Žì"ßp½.„0`xá6j·À[¸f$µ"Íáx¡ÞÄDµ[’ñÈu%h$žùÌ/Î'»Œµ’Gz_°§ -^?>¤92†:u%Ø=jÈÐ B§ZÏYƒ¿âAÏE{G žkÍÞÛ•´°Ð²obøt0¬f8ƒÊ²ïªyAö®š=Ý÷Õü®àYÍ7‚ßPóR°·ˆPö‹¸˜‚ßµž÷ÝRÌÝðÌ…déF«’aÜø@öR{ÏÛ¹jªæ$õFñeüºÎ¼RöØ{¹ø"’Xn€ÜÖ9¶€ãÎ5 •ÏáßÁS*òÌø*„ò ‡Ã6•–\,ãUYnS½Ôeç&õd¤E<Øp‡ûTZú^®ÁG1Byì1r^Û8o¯b‘á+]-˜`ÄÑç-·4´ÏT×¥ÅPA‰6¬úÒ&Ü­ NîpUßSj7^ðœ¸ZNFƒ! W¦…|£…†J9•paRþöÕP©‡•CU<ú‡h?K¾™o@¸9¯hM -t³Ëë¾ç®äÒ–]†ýG(|? -Ÿ9-³¼é£p-|¾ۧáŽ{„—¿sŸ ©1YÌ-”ƒ8·­ïÊàîep[‹Úë*¸ éãï+CiÂÑX—l)WÏåoäBÇÔsC‹tæ§¹‚v1†÷æð~æå+Ÿ&uÝÂDÇÎ5¡5´¸4ß:™k6(56“ø®òLj8æu„§ý¥™Y0ÄæZ£®fÝk×êyrqìå.[×â>QKKaO–æ¡Dð‚Èù³¹ÁG#L°¬Æ­ gk{ßÞÒØh˜ÜØ­ðé¼]×M§Êî«~ñª‡>-[LÁtK¦¹P’K·–äï¥[ݺ!r›+½‘Àÿ‘”=ùòáš,:Ö¿»d g6ؼI0H9µˆ\VjÙÄ"-’©“}`®5·?É£se©%b2÷’Ú4Á¤?–"ÿýÇš,Çõiì¯Ø²´7ûN¿ÅIÌMlÕ`6”§Wx}æúœþ¯íXM)}½n±%êûº($‘³†chçðW½Ø¹ƒZݽ™óR`0~?㙉òR°›aCÅQá%’›\gú Ú­ÀÿN‚¬endstream -endobj -843 0 obj << -/Type /Page -/Contents 844 0 R -/Resources 842 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 837 0 R ->> endobj -845 0 obj << -/D [843 0 R /XYZ 117.8281 740.0018 null] ->> endobj -842 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R /F41 605 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -848 0 obj << -/Length 1477 -/Filter /FlateDecode ->> -stream -xÚ•XKsÛ6¾ûWhr¢f$„ ’H¦‡$­S·Œ3QOM'ȔŚ"]Šª­öÏw ð%HqÆØ‹}ïÒ|æÃŸq³$Hø,}æû<™­wWþìˆï¯¸ ™°HJÜ:¨K…Œû*‚•d ‡¨4ç±tìÃ= „¿]]½¼ã÷™òŸ­63($A4ëp«ì¯¨ömZ­óùRÒû-º®ëì}ÞоތÎióƒ¡=ä­>«6}‚K ÚߦMšw»}ǧ¨æ®~yyÍåP"…2 AÑ€É8N´Dê¶@yByí6miõ¸sN¹WáôÒŠÅ‚Äk5µí&¥û1È8_±—W{ó÷Ä~뜯çÀ`kÞÜ“cÃ*d‘P -üò“5\úŠÙƒ[X{ÅàÚBAät­`2Tù©‰D’ &5R©¨`Òâ/5{„d žYa†ðK¦Ãõù K÷¥ï½²%aXxl¡é“g1ÓÒt‘­WÏ.:«-ê€!áG½Qa­CG§•/½u½{(óÖÚ­Y¼·)Œ…d7¼PÞw&9Q‰&ÈWé´~‘>`È—GÀw/ì;&@`mdé2DÊ«³®U]%Ižéê!ü’«; -€6¿™ôwc1Þƒ„]7ÚžCï}¯ëLø£®)øu꩟èlcó(«uù¿@kZûóæƒ'•„ªüLó àÍgq¨ÉØÎF|Ò…&, P0,:3 ƒã3äžÉ®áýÎO@ç WTáEWÿï]ŠWéìµÓmèˆ!âlóÐ=)À±Ówð„ÞØ_“T©£‘)ýˆÅBF¦þ®çÛe]Keß!S(¡ÇÊY´ô$f`mdú KñÞlRü›§º×èüÕ:(öÎYÐ!õòÜëÓ„4ÿÐQòV8ÿaÓa–=H'á$óû¼c…’Ëdú`G,ÄïÉÓÿ‘kw†endstream -endobj -847 0 obj << -/Type /Page -/Contents 848 0 R -/Resources 846 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 837 0 R ->> endobj -849 0 obj << -/D [847 0 R /XYZ 117.8281 740.0018 null] ->> endobj -846 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F46 625 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -852 0 obj << -/Length 916 -/Filter /FlateDecode ->> -stream -xÚ­W]OÛ0}çWD<¥5±ç´‡–Û4MH«ÆÃ6!Ó¸`­uX’eÚßuìd M²¢! ߃ЖŽí)Vž6á]ŠEbD"ÒHk -+D¹½æ«5<…ëf¬Ï;Uðg{“íØ¯®k”¬‡ãö™ï·£M-<1CÑ”¿ð–àÀ·n¡)jcàM¹±ø¡–k*Ìø+EÁØÓœ=µÁiËCaP,öšRä‡p—J•…ÛGâÚTæÚІ:ìÈ RÝÞëqÖðY‚UâøÚä”…Øhß&æ™0F"–kpdܪ„;¡DÆ×vnGu9q%_0ƒi1Çî ;\f7êÃKöÎ8z%[UUYèzS•×@ì&FÃø:O­xé­Ø=À|¡«udÕ@ݪF<‚<ê1+V¶Í;Nô:ŽãàߢfUê„°Åæ)²Ç®ßVÔõ"1›×Ó;Q-_憯E¸¸¬çØè Ö1©Œ”ã²ýE` éªÅ¥U•bœæâÞsA0Vs›ð!Í­qfßÌ7WKr/«çŸ^ÀX)Ò‘ñ¯xÆy·Éë<ÿI ëo}ë^ ©GÊõy.Evذ…u”ØUá§û‡cö1F¥÷3ý *¤} DCשtÁ,~=aý+`Â?¼¼endstream -endobj -851 0 obj << -/Type /Page -/Contents 852 0 R -/Resources 850 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 837 0 R ->> endobj -853 0 obj << -/D [851 0 R /XYZ 117.8281 740.0018 null] ->> endobj -290 0 obj << -/D [851 0 R /XYZ 117.8281 525.3718 null] ->> endobj -850 0 obj << -/Font << /F47 632 0 R /F38 467 0 R /F15 459 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -856 0 obj << -/Length 1299 -/Filter /FlateDecode ->> -stream -xÚ­WÝoÛ6Ï_ad/2)")ê#Cº¡î–Û°ùmE¢m"–dHrö¯ïŽGɲ-Û[QEÞ÷ñîÇ3›øðÇ&ŒE^Ìc6‰ßó}O²âÆŸ,øþ†Y&!c/”·#T7ˆB/ˆŸ¸C%ßÍoîgA4a¾—ø ›ÌäHD“È<&B1™ç8ýùsú×ÏSWr鼡¥x¶ûÛ_‘z;بÒîªÐ¥.í¾þ9w\&<$ܨÎVJ5ê¬îÿLqMu{rÒY)Ò&Û®/›YèfuÖÈL7Ùêö’t­@ü푸Ýß.êkò»´.Ί#± ngƒ« UŸž5­ºdE·éZ§åYC†®ÊkΪ—*ýIUÔªmïÞ¨Š\­u¦«msVÅ3U5-p^t穪u¹<«h–ËÒk½ƒe0Á0ì¹Ý!ûòÄã1¨Åœ¸î7Tj.„»zã=lTÙâºÞ檻y~“LV•YmÊ1÷pÏ´©ûÃ"§2Ÿ&Ѩv´¬?úÒÿýµlÓ—y:;@gwcu‚‚?©—ËöÌŠúê~&’ƒÞá¾ãø°wÞ½t÷ŽiüjÌÑH¹Ò“"a¶Þ<ºøï‡o‹ -Ÿ9¹­Ge[s¤Ê%ƒ2ÇTY†‡0ñeoy,>ÁÛË@ÎåÌ“,_)ÀߌôÛ€Ðb¼c%<Æq4ŒeV^ÄÃØ2jÂÐ^ÙÜ‘Õ!žà^—=È¥½  -ë3cÕ%RrʦM -¼òÍc‘ù¦/Ã)6Wè¼Ísm0…"ô6]"ÝôwDXФ”¶˜†-¸…,Æ5 i*ê÷Âü/§‚;-¦I9ßq*°óbO†Iôì Åäëˆ= (jƒCxNøÒ–ĘbùmÖº“§¼I8Ë:-·jâÍ»‚øè³“¬r"<¡âWúîŸTiÒÃéj`Yl{?ͽÕw–œ£j½çiãRíèš×d—¥mm1µÑdÓ–ßã¶±Û¢&%ÕŽ+ó@åÛq"–Êìº.´"OÝsfÞ„Z·­*N!ÚN±GdžÏåhhø,퇚i×ef†ƒ”G¼\è%¯L›ú5ú¦1êXrÓˆ¡!ù“AÖWb!¼ÉPze®‹FºtMdS÷ a‡è¯[;’Òª¶îuf ”š3Â{úãž·KÝùŽÀôpvÊaðk.bIü§œ!ûØ”ÓÕSÏ÷õ¦ŒëK§ù?¦°ó¥SŽL9£-™À(Ä•†Ü3tjä³^úúÇû_ê§ÿÎqÚâendstream -endobj -855 0 obj << -/Type /Page -/Contents 856 0 R -/Resources 854 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 837 0 R ->> endobj -857 0 obj << -/D [855 0 R /XYZ 117.8281 740.0018 null] ->> endobj -294 0 obj << -/D [855 0 R /XYZ 117.8281 377.2397 null] ->> endobj -854 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F38 467 0 R /F41 605 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -860 0 obj << -/Length 1812 -/Filter /FlateDecode ->> -stream -xÚ…Xëã4ÿ~EuŸZéš‹ãp¯§ìâqvâQDy4‹î-L¢dù£~¾iš ÇsŒž '_¹µƒv\¿¾Ôz†Mïxþ‹²jc¶ûvã¿ÿÌݲD"ˆ“8>^}2µþë§#Íû7ûhLmÞòäË9ÙwZÛ‹»›ªï®m>˜ÏŸÕÅÝ´zm{¹Óº½lûß}ßvÍ5÷·?¨êªö{¨+»¿¾>Ùíæo»¾±úÚö'e÷wWÿ­ð«ö{S_b:UU_”Ãë•‚+¾*G?C¬µæQ_”Þ¨L{MÆFW¦4Mß^”±Óö¡1¯s×XSo/{ö¥j{ޤ¬g£û_\{#‹i¦Ž¬2 ò,áfôݳ¯VX|JÃuËõÓ~'A" ,¸K—”Ë”ëXá:£:WÁd 5W3Ã}?ôªŽk‰>©#"’,)œl¬ çLQeQìØº†UPáoöNó¤÷ð2µ+ø¾Pë-Ï\†{HàÜ–cÍ(’$b·i ó ý–YDÍ"¤Ù -Keºü–÷hZÓà uÆ…¿•ºƒAäTgéÒêÇÁÓ4ðeæÄ(ø&sRüsíZYšRûéíaµÆŽÖ:â“é°9¦îâ4Y€sb§²¥ãÛâ…+{e[æ¤>¯Zæ€{í¨Ãz¿w¤Ì‰PLÆhoÝûê‡ãÏ"–ÁÎHÒQ$ÆõløGSlÈÙ³%TÓb‹—I¶Tõ†—Ôz°)UGz‘¶µPC”5j€K/ü¶Ê%…'H(U̓)"¹ÕÜìÙž¹Î‚ó̙猔¨cÃdO¦{ÝD!çû愃եa˜S½¬ò˜àÐïÐŒ–®Ú85ÂnÃ#¹‡D`^¢3vT•W[¬5Z= kfio_$‚D\¾é h3hL3BD{nø{¸–"ØYÔŒIÎ]ÛYUvn šò¶€­Ÿ&R¼àYLwdS|.’ÁCí ŸP=³f€úTsφ(Í‚Hdrö2p­§l ÑÄQi•ðø(à‘2ð9D›)–E8.~E±ç:W|òü~!°8VLÝ¡o‡I  (Ç —ƒN£Xßû¾R:jgûi+éíIw=`3Å¡âç¦c‡åiÖfèà²Û±Ï¥0xÅí¶«n÷|¯»ýªâÑí§Š/¹}ªØ¿ü nUz³wœä´Â¦mÕv¯§éK0ô"¶îŸäXÎ[@0Ó—Þ]µGøÄ-)I‘ÐK”a7Ï=$áäù6Å2m²žÁîò‡ê4ó§/Ó°ÂâÞ'kºn¬6´æ+-Ž÷ZÕŽµqª¼Í}wnÒh¨TR°Ú¹B°ãç÷Oün¸±˜êù‡1.bкÊtº›Ð)|žÂòÞ?v+½w-’Š‹+~øb´ŽÐAw¬ÞÉ¢·îÓë£~HÀ×0_ÚzgCá2Ô[:Í> [ÿFWCK1õyrnuò–›'Gý©7“ô¥ `1v]OÑ)Ûµø^MÑ늇=S|!EORtl±rü%ƒQõèGWÆ\s…çöa¼‘‘‹KÂr­fømez75aˆÞªŠçX6UÍøùâÈ$³ðµ9e»zžïõ ¸ªx¼€SÅ—.`ªx¦F&‚ó0.w`p §}êÀÂP ”e5 ;Úö…IküDã= ‹¯ ÈOØÈã -N³(ãŽ~5T]cW×r¥A*_Ã#ÓŒ·"X ¢Py*N?‹ž+ü}2îendstream -endobj -859 0 obj << -/Type /Page -/Contents 860 0 R -/Resources 858 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 862 0 R ->> endobj -861 0 obj << -/D [859 0 R /XYZ 117.8281 740.0018 null] ->> endobj -298 0 obj << -/D [859 0 R /XYZ 117.8281 422.17 null] ->> endobj -858 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R /F38 467 0 R /F41 605 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -865 0 obj << -/Length 2038 -/Filter /FlateDecode ->> -stream -xÚÕY;“ã6Î÷W(;ªj‡&Hðå‹ì²gË®ºG0ٌđè¥H™¤V;÷ëÝ)>6pr5¡F |ýu£»þÄNˆÔÏÂLìRøA ²Ýáò!Ø óÓ¡•¢8ó“8ÆŸ3½Oº~†9%m(Ü=¥ôE”D¨öãˇïž%,#ðó »—·ˆ ;‡…X½—ã¼ÿ"Ýÿöò뇟_ìœ"ÊýD&rçÎøhØh=ñȰŒ}ùØð­Þ ïX´]¯ê#4Ëú´ -ÃлŸUÏ­+ˆUÛwüKµ6"¯*Aþyf„W½sÒ†5^á“zZ½øŠó´¤Ûuô9òœ§æf¥êÓ ÍHá WD­«™ -UqÁ5î2€@ðc™‡´£;ö¨=¨¿ƒf‡C>(òº¿ÒëÏh¢ga.Þ¹uÁ1·NËqñ°µªA{'=°1cx](+y%Eû†“Ð\ÁZ(5p†¦wlë¡8âVú¦}p½¡m’d~ŠdsÐrÕÖ8gõ69·nØrîÁðçF†? ˆö½*Ž' WófÂOÏü}kÕébN’;¢Œ´4YIH–à-ÆÉv%Š’KuyE$Ò¬Àþ¾eîwÄ(àš¦a!ù2•1-û—ƒ„–Q(V"؆âO[¨#rî g¼¨cÁb³8p3ý& £ê⎠ÉT»ù±§ìt‡‰‚N ŽÅÅF«Ïº¿ÌÆB[üÆË¶ÐwÃÏÙJÑ»DÁ8Ký8ä]µ5 -Z½M -®¶|0¼@Á‘a‡‚¥ ðÈ;7ˆÉý1TÍE•µaè4íÑ¡S«)K¸êDG¼²‰{u¢‘ÜÍx‹Hb?ˆÓlËŽÚªŒÞ¶V ˜^ò€køÁ:I· Âq:#3i2÷¬_]”,zD2æ°É¸8ôÚ‹0Ë"'Œ¶`vÔVa6zÛ0¯`ž^‚Ù5ü¹öªZE åt1"¦_öqì)İR¯ÕèÐ{8«òy¯Ú•TB&éÂŽÚ*ÂFoáUÃÂSÃK»†ÿOO³6}y€µI ‘¡WÓÔº·ÂqÌÑÕ}î¸Ùš¾?° )íOÝáYº™’¬àyÍüˆ~íØ„s÷QWȬŠçÔ2®™¦çÐwr! P“ux:Æ÷‚‚ó>Ì¡¾cIScÁŠ-ÅŸŽ)$yÅ’‰§pÐ?Ò37錎¹*¥Çâøwî³Ñý(Ó¹ÌD„ÌÌž`¥Ð¥kT®ŸmAñ™xÊ%ÓU‘F½±òÜ8d#zôÅã1G{m Å’—ë›5…ÂEÎYå_¸ø b6RÂnÙ«˜¯é7\T˲{[öæ‚¿ 9øÖTCƒ°¿ï©2‚ ½ëþѪÂe7UeÊkT5þãß ‹øp2KçqLú¦[Ÿ©£ó¸>>$/ž¶Ó²Bgš[ud‘u»PËáh¼ˆá·-Í©.ÿ§už“hбNw;àrÎ<§êØ 2q½A!!E–i7\+õÎ{´£Mög><À% Pkέ¡äPfð|º¾—¦N½%4tr™:™ ŠZ_k¸Œ£à”Âû~±R‹5Ñú[>9jk•šÕÛ¬ÔÖ ÛJíÁðB¥62ü…¹ôÚ}?ë=Ð 1qÞÃ̹FIh]23Qâ'‰uZ»‡Ã¿¸ #¿,ßðÂ4÷ÅÖÅcPZƒZkm½fÒÂ<1¹²c²h®ý^Lîˆ6ÅI~”D¨¥€œ(²4ýfÀUÛ—]¿Œt ÚBn½f¸j«h½m¼W ˆO /aî>b­{)k8²f‘NðB'!Ê;sÔNý ˆóoFš¯6¾®Lò/%?ý -}F,ºÀ òlë9ÃU[uÑÛvÁªáÁSÃK.p ÛÜòp§£ò¸7ÏôÂw1ïo¹×/LJcæŠM€ôÍõ¯ÈHWt–ºu³…Ä“H3?à„]_ÎÎsŠSóE‹Ï{eî«¡wjLŠ﨑óbP˜‹JUͼÁIšù¬øá¬[>¡D’úBæù‹\µ9gBÖ ÊŒnWø‹Z7k9´eÖphdV½v}«½s“ß›wZõu -)ýjÑ-(µU(Œ®)\bÕìņY …kvôf>ü/%Ôw¬KSl:o«ú?1ê°|ÔŠ0ôœ([`9j«`=\u´ÖªÙ¬ ³,×lU|-[ÝõTÀÿ‘’¶T"¤LÙšÿz}Ëst…R´E¶Aif!ô¦°Sá&’pjP¦‰/³(œ1ø'@àñendstream -endobj -864 0 obj << -/Type /Page -/Contents 865 0 R -/Resources 863 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 862 0 R ->> endobj -866 0 obj << -/D [864 0 R /XYZ 117.8281 740.0018 null] ->> endobj -867 0 obj << -/D [864 0 R /XYZ 117.8281 183.061 null] ->> endobj -868 0 obj << -/D [864 0 R /XYZ 117.8281 160.5455 null] ->> endobj -869 0 obj << -/D [864 0 R /XYZ 117.8281 140.1511 null] ->> endobj -863 0 obj << -/Font << /F41 605 0 R /F15 459 0 R /F39 472 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -872 0 obj << -/Length 2075 -/Filter /FlateDecode ->> -stream -xÚ­XÝÛ¸Ï_a¤/ò!æ‘õµ‡{ÈI‘âÚ®ûvw(¸¶l«+K†,'»)ú¿w¾(Ë^­‡bÕÎ ‡3¿ÚÌ4ü™™1™Êmnf™ÓJk“Ï–»7z¶Å¿¼1Â'¹J“‡« YFBåHL1‰";[dÚ)§1²ýtÿæû&™­ -]˜Ùýzfb£L -sßýê·È©ù÷}óá~hâB¥.u³±¼—j×Mµ.QFëâ\íú87Q³ìÛn¾ˆã8ªæ õ¾™Û"ê+ßWmëkX œý¶dâwm\wèyPûfƒ"ý¦|qžpin•Óé5/5âºæÄÀ†‡I^÷áUƒ oè ë¬Ë§jüsî=-‘$7¹ißoIl-nX ^„ÁæxÕ‹©Vi–Ütãˆíª*½âÈ«jOž¼¡vpåXíÿ!_wèí°ŒsU¸$¾åÐÛU‡>átG Žïï{@ž™ùöô[6iÚâwaÔwÇ€L=y­…UÃ’³F(D2OZÓáôù¡Hc|±å+E´X¬•,béùïÂ<[‹ü«àñÏ(ÄË-[3Mé»êk€’Ez.  ;¿J.²å‘çzÔwäpÄòĉ|Càa98[”òÿ•‚)$€cd+ Ö·ÄïÉXARó„ -ÈD‚Å´²[ûe©‚ ֨ĜÀ?—xö$ŽŽâQ {ÿ8—ƒ&| ˜<ÔÕfKY?ó%”ÞU'«Œ&¿Û×åì¦{8w¥ÈƳøž?Ðõ×ÕaËã­?0Ñ´ü…È‚f'¸n»©|4©ÊŠÂIžýR}ýê§Ò#SáÂ@q6z8öL°)N.Á þá0ÂùR@ïá¦ñ·h©Dž–ž–Ä*ÍS+:?õ“¹¢øJ³h_M‚œ+]\€ÅöÝ£’!#ØT¾?³V%ŠÀ†ËU¬¡C;sgMmÃp„{4]¾3¼õØL9;-TœbÜß§ìOTµ`ìg ~F bá¢cÙbØ<ñà…7iwŸ|/8ãûrÓvÏ“Áƒtå¬ÿÏ“&Bér‰scëè}ÃÚ ûÏURæ(0=£#{4KT[wY<.I£C[–”Âa¿Å;Ajgl¨(á8̇KÔ³%œÚÈæ³œž.G06'þ¹|úÀåâE=Ï`í`¾CŒÃôdŠÝ̆„†çÔ.!nJÊ•K¡78;üª\ÖPcÌ^ÉÕ¤PY’¥·r5¶ØO„ Ú”XÃ= oÊ/*ñJöÔƒüÝËn̪8ƒ¼w6U:?o‹&º2á^ŒÙ©=º3[(è"FbÑÐv]LbÈm8Ù¿ úhtÇŸ0üaêÈ‹” løLÎ-ÎOPÚH ÅÚbpQ6qÁÒ °p]×µ>w¼ð%À»–Ú#‘L»Ém¡³…ñqÏßq(†N ɨ/ê Oq‘#ƒç‹/`\ºr>@šG_**< { 1Á2÷ ĸé¦w<ëƒñ(i΀ôéÆ{‘ò!Ï`¶¯¨^¥ô*˜8Çç÷"qñõ#]mîøåq豫•8^ŸÞóáA×ÖáqÁ^—>‰â¼å•M¾’’ߣ™Ïs„ÐЭ§o׃–}S¤çšè -ÞcùMBÃÓcÿBÜ -à &)ÜàK6TŒ*%? Šóç‹VÆéDR›Cº öÿè)àt^Âg€L÷¯½ 9ð†"t'æPË _-…’ƒ -mƈ;«üâTmš^¢8¿’œß‹`RE=tRŒÚ`-ÏŽ¡õ¥×î²ܾ“äÂ6ÊŸÄr÷¶,÷=K Ï3 @_áK<‚ÔSyaóok‚Ì©ò¡ž{i,È'1ÀObó p¯$·sé\€hAüT¾À6‡k‹Mú‰&þüF.ÿƒh[R5`úØ—¿ëDË«q,“§@7¬›wS(ƒ¡¼¿°Fæd+Ï}÷Ýë@™j.t¾ãñ/ÐÙ®ªÍî0¸ Îÿpt ò؃ŽÉÀÄa76m÷Š¿{|σ·Ø C#üöd0¯ ó[èGk?\(æ¿ß^Lå'/¼`†¬¥vÅà1·xc2\üÜf¸UïçwŸ¯j©³¼Â ÂèÁËR~=»–0vu”}`Žâ•4"†ßŸ03È#1‹©ˆà¢"á¡[>‘¹>é0'Oõv';4ýx F›íà§å™©t[yÌVTÿyâ(õÈ£xü!Ñk”y¬zf’§ª•'ú$^åJk:< ß¿ùî±ì'osà>;<¾> endobj -873 0 obj << -/D [871 0 R /XYZ 117.8281 740.0018 null] ->> endobj -874 0 obj << -/D [871 0 R /XYZ 117.8281 715.0952 null] ->> endobj -875 0 obj << -/D [871 0 R /XYZ 117.8281 697.9245 null] ->> endobj -876 0 obj << -/D [871 0 R /XYZ 117.8281 676.1942 null] ->> endobj -877 0 obj << -/D [871 0 R /XYZ 117.8281 654.4639 null] ->> endobj -302 0 obj << -/D [871 0 R /XYZ 117.8281 624.0504 null] ->> endobj -870 0 obj << -/Font << /F15 459 0 R /F38 467 0 R /F47 632 0 R /F46 625 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -880 0 obj << -/Length 1922 -/Filter /FlateDecode ->> -stream -xÚX{o7ÿ?ŸB( -T,fß9@qì4‡žëžÕÃM`P»´Äój©ÛåÚUp@¿úÍpÈÕJÞľƒaïp8ä¼~3$íO<øñ'¾Ÿ²,ÈüIyÌóülRl_y“5L~xå[¡0ÎXÇ8™‡IÄ|/O€ŠY‚C©'Ò¾°0 A:õ`]˜„(þnùêõe”N|å^îO–w?ÈYɤ—[–¿OùªÕ /ôlñôR©rË›{aÇoì3K6´“¿_ ^l>Û‰¿uí¦QjK£¹Y¬y#‹Ï³ÏË¿¾¾ôã¡=`9‹â(7C¥QlìYÌÀëlZÌæþTÕ3Ÿ¨„4ßâ`_Ï‚|ªùÄSw¤æÄmô6Jrˆî?ðpĦÄg~æùVv; Òiª6MZôÆÙR##ʺŽ,8Ù–÷H›•|kG&êhð«y]´‘Ä, R BGy`”7Âjïe¡¥ª[F&‡ùÐdo2|û9åóâgƬHµ†5ân³8Ì» ŒÌ£é9šÏ뵋f”²0ó²A0?ˆftëû¨KŒUR8:“U톘œô>"‹Ï‚lº'¾ÞpMS&^D¶Åö.)gºÕÆo^Òòɲ˜idíúçlù´¼%ò·1g ^:gÎ(ka³$ˆNÒÖ'?·iø7Œ;ù0‹“)¯DþW¼¯˜E,Ëý|h 7Ýv­&j5‹ÍÆHÚšd,ŒÜòO^ì)‰Xñ­Û×|Ziц zIrPá3rè·Yaï`åNp[U4»1¹}À?6>ˆmEä -a®pîÑäÕVFz,ñï„8Œ¦wÓ†®dòšÂJ,®?Ò¬VôýäùQ Ȉ]ª7nCLWßw4:•Gsµ+-QŠÒc=ŸåqØb Sh!An,õ=”fù »t2}†>E¦•õvM«0_™ú ÛÓØÆPãß q>\Ò·0’Û­|]¶cyÂα8ˆ¢1±Sþ´4%M…x.@6‚—=]Û©ÉÅ«‹eæPÜiMâ(`i”†t>áL³¶"œPN|>”7Ô±½O¶´ÁANƒ`ÚîÑ@µke{j[$, -“àĸÓ#ÖI=gÓÓí¨˜Ðì¯ï7-¸%â ÛQIüÆ ¦U]ã@%HÎ@·6݂݃kôÖ#°ÊœB+ÓḦ^xZáñ·G:žv($]} ÈŽ7®UІÑüç¥Ýƒ¾1‰(¢W³9¨4v¼kíVÃmûóøÄ/\]ɲx³7nyÇþ ¾0èDˆ}‹~`0àÈí®ض[Š’$¸]Êé£ÕÔÌ+cµ•jôÇ,Os×òÝ…g^¨ºh„=}Ïgç¹6ºnø. g¤¸ÏWŽ¥ît§Ç,И 5–Aúª6§B´0±nI_¸­Gà>d5÷Ì…pxÄÿZc“Rî¢ÚϲȀ2‚S¥®öD]àôº’í†Æõ—DSظÜ–.Óž¥1LTt @|M¹Æ ß=ò0AîhåX⥴r™Bì4ÇÞ_Ùö‹p>f¶Óp³øz_¯äVjÛ˜îd¦ŽÜkpD¨®ßÀ¸ãhÖc_šƒÍ& ¾˜œ{R*¬O´+v'Ä­¹—¢1}µ8µ³¡‚…UN(n*ÅíùÔ^+w/"Hµ„¥3b”Î4yïNWÐBánßœvÈþÁá…pzÙób(þ­çE/‡‘û ½¾ÿpyûÓÇw·×‹åcà°bÒ>v\oÞÂÙ¬EÝŠöÍ®UW -šìÙ¯~ÍOÑ‹zÍÖwÅ7öÝÙ}áŽþöÆÒêÁ‡ßé ‚I[ìÖ"ËÔJ±’ëïÆ4mïíÆxåÚÞŸWÃÑÕõpôÞ½®Pçí/¯5^¢Ž´ß^X´jqÝ[r»(½5· ”4Ò/~d ñü Å£«¨“VD%€uEëʨ2½dÝAg°"G5íßÞp°F°°°Qð¬Įôud†ðf‹"h¿/CæPü[ÈìåžBî€*pmÝ"ž¶ÿ# pá[‹ÇÿT†úY)ÿµWËkÓ‘\ÜÈmgÙ×ת=€dÊ  À;¿:Þ¬Ûµâ(4јIC“®ÔÏMy U°òjËO„ÎÕvw`àh1° >xã–j¥+€á¯}YÙüîfñæÏ™É}34WË{7<}GCe‡­VÍX’.ZÍû}ò‚vѲ°|—¸Rly+y©zñºc[šøìYU²xc÷*1F»±zPûM)Ú¸þÿâ_ö÷ꡎ÷$*µ8Ù³„p1xÎû_:Ñžšæü†X&VnÔn÷¬óï¥hí‚Î.WFÖÍ/ÛD}òÂQïÎ…ÖGÞÉF¸lèƒ9ϳ´ØÚ/ÉßKQIðÅöeƒVIs™2áêºFŽnøòñÒ¤=“±ã†kÿ[™û, ÇŸJ½Ìü 4öxƒÙÔóû­Ðº$:U¥ðœÊÂ`Dá •MHendstream -endobj -879 0 obj << -/Type /Page -/Contents 880 0 R -/Resources 878 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 862 0 R -/Annots [ 882 0 R ] ->> endobj -882 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [243.7577 539.6298 327.4324 551.3193] -/Subtype/Link/A<> ->> endobj -881 0 obj << -/D [879 0 R /XYZ 117.8281 740.0018 null] ->> endobj -306 0 obj << -/D [879 0 R /XYZ 117.8281 593.2299 null] ->> endobj -878 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F46 625 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -886 0 obj << -/Length 1029 -/Filter /FlateDecode ->> -stream -xÚVIoã6¾ûWèRTFŒHŠZz,šLÛS§pQ fz`eZª%#ÉqüïûJ‘c£‡"@D¾÷½}¡eß ¤ÌD®rdI,âXæAÙnâ æÇô mr‘ƒ×;Ü(ÉR‘äZÑZÉ»ÍÓ4ŒE2ØVÆâDHê`·ÿþѶ2ì‡éŸÎN®¹ló$ü°tž‡ÓÑñá÷m$C„ŒxkÛ1½€f[$¶v`Ús#ŠÐN³6à8¦µ= ¹n«€Á|ËŸ}ý5–Ú À/f~¹UYx´h2ÚþµûI-LR(ŠÅ–É€‰R »ì·¨ßƒ@ÝUL%'Ðýåâð¬ÃÁ‘Ós!AÎõ8£Á©C?¼Ét½‡“‰ñ¹±Îÿ9/\öÃàJÒÜèâUzì½8&7´ugˆZçá¹&WzTzLû™o˜÷BÖ8nI…Ó«Të"üøÄ´ñÂɶ¯xÏX†Ÿú!xãœsôÔz®è3æ‰eï¥{å. dòNXï3ñ‚6»¥—¥TBg: RmD¦ mW Óø :Zéñ“ìªñU!T®Vjћ﶑Q&¬nÏñã ™\7ºñ¡±]5ŠêP¶èåûYã"1ID*™)2Rù§O:v-$Es#ô'¾Pß!a.˜ÖIHéè»9¿†´ñžexþG Rí>ÜÑ}®¹:ô&5k 1onš‚“ƒsÝm5T* '2P©‚`Sõ_Õ0˜Ã+*øÌä˜)ß6ZÇBUE«\È<]Ø¿´IðS¿ù´ >­ê«¥(²ê»v€ê«‹»‹MéD¤Ej¨¯s1p,ÊšûIwê™a4´iL¢0dªÐá­=^W©°&úÓPú[5Ø–ú—á»T³±X€ºïFãê¸Vv[¤>â*®šeêŽ4M;)¯‡êÛj°ã<¯ ¬Ë¯±‰ŸiM޾Ê+Çït$PéaãWýp᤼›£D*¥OÊoÇá^æ ÷2—©e)Xûg|F°?É/\tM&èð8ñ}.þÐó÷oàž0òfïóŠÖ1-F^-‘L ‘0ÔWÙh-­¸“Ń/™†brhéÚkØLJ -# ~Ý‹C?´ÉHò°áU(ÃzÆ€e™q&j˯ˆ_skeÓ± £ßòËÆç­Á`àŸýǃڞPŽoÓÑÎûonå :&à -_W[½mصéó!˜½òèa>‡€ó€ö Kc~?1ef£ÔrŽ0éCø?÷3Ïì m,`œ©ù:o«ß«Ý>~Î )R­ïþZ0ÑèÎo!xDËEÆ’š÷—ŸV·ÿé¡W•endstream -endobj -885 0 obj << -/Type /Page -/Contents 886 0 R -/Resources 884 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 862 0 R ->> endobj -883 0 obj << -/Type /XObject -/Subtype /Image -/Width 390 -/Height 392 -/BitsPerComponent 8 -/ColorSpace /DeviceRGB -/Length 51355 -/Filter /FlateDecode ->> -stream -xÚì½UŒ&I–ç{¥‘F­™~™í¾Ý•Z-Ý•®öig¥;÷áÎtWeuqU2D333333333333sÄýÇw2­=¿/2"*++ÊOš"ÍÌÍÌÍÍÍ~vŽîfÿú¯ÿú/¼ðÂËu˧Ÿ~ò/ÿò/ðììl¯®._Å™;¸òŽw¼»«ÎÊÑ­ººòŠ@ø°®¿¿ûÿïÿ"Á?55~p°¿¿½µßß··co·cg·³ß×·¿µ‰C““£#?¿”üËñŽw¼»«îßÊH+«c°|W]]ú?ÿçÿMDšž?ÙÜ<ÊÌ46>ŠŒ<ŠŠ:45=TR:ÊÈ8ÙÚšœC–/¾øDÖ€w¼ûPî5 ÇÈÔÇútìàùAÓšo“ëu•Ò}&­ðÛa§»»#==…‡†úãÎ!ÒäèqIÉ¡ª*þ‚?§''p'ÛÛÇåå‡Ç¤#HŸÊðîÚÝçŠÆ¦~Qi%5ù5M *þˆ”·ñ.ªka.$­€›åž¼‘²½_rae^ucbAÅÏÚ6W<—‚ Ø5­ß£žŸ)s«÷…’)7˜‰ëé驉£†s <Š:g•D²oÕ-ù»|-ôôéãï¾ûFÔ ôp“=xðóŸþô§œœ -ÊÈH}÷Ý·¢Dšêï>ÐÔ;ô¥‚²«jÊNz_VyCCC¿” Z}ñXñߪ˜J˜8Ã)Úx!¹¹ù7Ê&úV^J¥ä"ÆÈÒg§Î*cæòLßî39Äü¨n³?вB q”ïÖýÇ+Í÷#Òù/ÿòœ'==,™™ÉþðDþó?ÿsZZòË—/þáþá¿ý·ÿ!L¤öæ1±“ÑQâÐÉÌÌq}ýq]Ýkר89>üÚj“ÑçÝõ:E[Ÿ…•5{'çÏ‹"©ý‰”Χ/•>‘Ô2ñ½“U87×+—ýƒƒââb'¿Ç:ÖŸ¿R¶ Š[ßÜV·qÿDZï©ãúæ¦WHäôÜüÀèxHBZCsKsÏ ˜¡}Yc;ŠÍÊÊ2³w¾'©ùH×..»(5=£¡¥-*«è'M«ŒÒšöþá'ÚVÞ ÙCc*ÆVŸJiÓI?W0B^??¿O%4XMêØfU6Ö7·FÇ'dW‘4œàÑ´t¬lé„'##˜½'©e–ÔÔÕ—™“×ÜÑí™|_Î0(5ÿèø8*5;*>é¼&ß>¬”ÞHÿãü_JJ -BîÏþ3—HpŠŠò\^PÞÞžçèH­gDZXx­yz¼|y ®~æ÷?ùdR zYmr†¼»^§çvxt¤¤ª~OZÁª–®¶¾!)swS¿hÜ»®îî†Î^¸ø¼2n®4­s«Ö76æ—ûÇ&mƒã@¡öÑì‚âû’šÞñYCCC2J*“Ó3uuu%åÜƒŽŽŽÔ LÌücÎ@'#÷¹¤4¢¿©˜?Ñ0ýAVÓ7.}euõ¡‚Ö #çŽþá–®Þ‰Ùy7÷/Ÿˆß“Õ§“ÂFCÞÉÉÉÆŽªÕWʦŽáÉ+këŠj_¿R´ ˆ&"iºÁ£ª®iœÏsq)œ*ÐÄìBZzÆ ù謢é™Ùïå´ƒÓ -e•T¿SüLJ“ïÖýUZïýˆôÿñÿ‰F~õÕ—BDêïï†jĈdgg}î“í©®¶IÉãææ³'H§§‡ffGÑÑ'SS'++Ç--€Õä`/oµÝ§dç³²¾ieçðIm¬Ï m]²Ú$¥e¾zðœÜýòÜŒ•ÐüQZÕ= tfn~jföÞ3Yǰĉ©)-KG0-,2êóÇâ J^^Þ½g2dOiéèšøœ+.óº¨èì⾡‘Ʀ¦ááaÄ?“”7ÂRóvvweT4þ*¡Å±Ú HGúêç'T¥/žH¦änmmûäå_%µ¥Ì݈Hê~g&§º¦UÀŸ‰K“-¹p£ïÞ+çˆäýýýb0ëò¾üé1]>ï>°Õ&®ù›ÉÅʼn«#ýñÿœqΓíáCGÇCgç“3"™˜<}zhhx~og79:HDú«´.ï®×}¯n‘WÕÐÚÑ)gîò™¼¡–kÉÄ'’¬¶ss}§nmç'MëTMJë[º»»¿xøò;5óáñɿޮ‰éY1)ÙO_*C'‘€2؆D$#ïXIŠjšTÎòúFAaÑ3¥´ì<$x!)£å<9·ÚÚÖ–QPr_æï'Eõ^[mâê,ÒÐ+|~iÅÜÉý+Eãô‚×Drô'"YøÇK+© -ëu Œ–••=Ñ4Ï®lèééùá™XPª€H??á{ÂoáþSBKˆH’’âbb/D……Ù/%’§§ûÿøG€èùó§(– ô§?ý‰~}{‹HScÇýý‡ÆÆ‡..Ç==ÚÚ‡nnGàÒqoïßkã5Ûëv÷äŒ~Ö¶ ŒI¬®o˜êZÚ+ªk¥dåt=ÂfçÎÀr^®GzöŵMu-mm¥Õõš:zŸ?—C¼rŒ œü‚/½üTÖ ¹g0!!á31%Yko”¦ª®!fêZÙÜÑÑÙå™tOÖÀ36½½«»¤ª6)¯tvn^^I¥ ¦)>):šWsg‘“×Ù¯6‚“~®h23¿ØßßßÔÖÑÔÞ ÷7E£/•Í\BãZÚ;ËëC’³Qˆ’/N§ ¬"aî^ÝÒÙÞÙéÓ)ÙúWÔ {qeµ†ŽÞ/äÝc2 ×}ùà)ß>ŽÕöç?ÿù¿ÿ÷ÿSÔýôÓÜdÿþïÿOUU¹ûË_þ“K$%%Å?üá`Q__×À@’’Â?þã?þÓ?ý“ŸŸèûH§ÇÇ'ãã‡îîÊÊû_}Kí@I \:==:b¿µýUJ—w7Á}"©óÙ …/žH~ùDü‹§RŸ½GäYÌS©weùT\ G¿|"ÓI^ÝOÇ-xaqQGW÷S1A±Úg‚ÄÕà¿/¦„Ä‚Œê_<=;ѧgñ:÷_("þó粟?“ùâ™4=Ó‚¤tï½RÅ)>•Ðàž™CŠGUÏ -y&š þìt/¿|*t:unµ‘òÔYJ÷óç2À)ß~ 'ª#]ÑÉÈHCóuƒ‚>Ì™››rƒººÚŽŽv¢VT ÅŹŅÙűᅆº…‚܅¼…†ZÏ"ç&&FùçHwÏ9†'w§¤¥ÿôLŒ,Ã;¸ÿ|ßçHöí+fñðûÛ£—¼»3îûgâj*ªª??ç[ƒwpß>£·ƒn‘xÇ;Þñî#ijj|w¼ãï®ÅABO¶xá…^®I€ !é€^xáåšDHGBp^xáåšD„Hc;ÙÚÚ -çÈàààäädSS tuuíüB™žžnhhعR[[»±±Á‚ ËËËêh”É‚óóóéééÛÛÛáêpkêëëYpii©²²òÒ\kkk¥¥¥B‘uuu³³³ðàÀ“ŸŸ¿Ã /W HˆH[Y]]}þüyÑGOëëëáìììØØØ­_( ™««ëÖ픸¸8Œ5ÌÈÈÈÉÉioo‘>Ô)ÜÜÜdeeY°  àþýûÀàG¸º––233»48¦££#ÙÝÝ \ÃCH0»Å /WQ"­scMII‰333ÓßßOfffLL E¢×A@^¿LÐ3ÑíY(J«ªªB<ôÄzˆimmÅ •Œ%ëéé©®®FWïííE T5v:0aee…UGFFXý;::jjj:;;Y¤PmÁXËÊʦ¦¦.®üð𰯯/ÆUÀÒÒCÉP'(jŽ¢ÐDð£žH‰ÍÍͨÕäÒö® ¡wQS‡††~óÍ7(„5¸¸¸H‰whªh=”Œò©tvC4c¥@.>5JsvvfA”ljj - -y©JtƒÐž8)Z€ÚA]]·›››£4¨'ÝM‰’QepûÄÄÄÐÔcccÜÖ ¶Zç…—õu!"MNŽ­rý#ÂA @bÐÝÝÝá5º(” UoooøW/Øèö,ˆîêãããïïoee…©X¨ -^^^˜£1Ð‰ÞŽÙØØØÛÛ#Ê‚Tˆ¦¦æÄÄ< ( -y­­­éPnn®‡‡Rbh€ŸçÖ6,, iüüü û]\yŒ8˜®¸øS‘‘/<ȈzBuD'-//Ä$$$% I;;»ÕËÙ¡zá/F4² nRRRµµµ¡|GGG$@\úöÛoA04 š…j… Á ¢¢ k‘`Áõ†„„\|jŒNNN,ˆË111ÇÜܧ`­*¡‘QCêhà|Ô j3ªH\)*¶¶652U¦¸¸ø»ï¾CSãZpÀ:*ç6WyáåŒ ÂDZæÆà«W¯‚.ŠL—ò𤥥EFFƒŽÚÚÚbè-_(P!ÐýXÄCF [”†Ñ„ s”3::ŠC@þ"c -ZÆ`II z;bòòò0¨ ½ôj…1ŠéžžæedD ÁOÄ€xT[ŒbŒÄ€(ªÎòe‚ -8¨€FöTj°Z\WW—šš‚@„§§'ê‰ø€€ä©/-•6ÕzþB‘““£Ša£LÄàz©é`P#8I…ƒô\ "##Ch¹@t§‹O 죪,=ÇØØìP,)jZ ƒ šåcF@WÁ5B×E$ë ZZZHÀ­ ó Û$&&âÒФ %²/óÂËò²‘F9‚n ,pc0ïc^†èÀ@†'::ÐÆãâ…‚1‹nÏ‚à¦W¨èÞbRRR¨Xˆ¼¼…z€QæPtu §FoG t€1 °+Ñí©ªªŠòQ¦˜˜ìAÄÀôƒ²« -˜Â°E †'j rk… T/(W¹Œ}hùùùmÀax€©øøx´K öB»ÃÕÁÒ„*îÒ‘Z(.— Ó1 <(š$5´ùÑbh7º^TÖ´²G±bQCàëâS# Psê -EÑ! › å@a¯`âbqQ/^¼€F­ „Õ‘†Ô9x@$ºjiiivOé)ò¢’¸"4‘Ðíàå÷,BDš˜åÆ5f|n 8ø´Œx04`)hkkcRFÏœ½PÐQakH½‘¦¦&LëPr‚‚‚0ÌÉÉ¡b!PxÐoáÁÅXC÷Æ,Ló8æVLú  ¨7H€HäE ¨…C %b0Ê u`BG$´#ª-Ô5Z7*(q¥ˆW,2J†)@YY†”D?h‰h^TwŸª -4QO瑪3Šþð㸠ÐlgyáåABDšºy‚‰¸€ª í+ -°‰z`@¡çOñr“ÔÂÔöòMÁ "LÜ‚àäÂÊÆÂòúôüÒâêæ¹åMβàÚÖîìâÊâê—×·W6vÎüÛû( -žù¥5+k›©¹Å«@¸ðíçHq™%—f™[ZÓÕÓŸ]\]ÛÚ˜ÁI×§Æ%àÔë[{pìZ†.•™]XAƒˆØÙ3`mcgna…rX.4.áÜô¢.·ü­çHI¹—fŸšSRQ‰K8»Aõ•TènªJ•Á­!ÏÙ-ÛÞ?»Òåun9¸¿˜,*kêQÂúöêL7 ÍF@›°ËÜâ7m¸Š /nåòúÚ GÏj{¿®½ïºˆ”žžŽQ¬¥¥åææF1>Ä___Z¨ÍÜÜÜÉÉ G?2‘ 5 ö#RxxxEEEcc£½½=‚ ™™™jjjEEEqqq©©©7Hã ›SËÛpE• _}ýÍ¿½‘{÷ï§åÑ!8¡÷‘'ˆT8¿À⊜œ[Q×Ô†ÇÆÞÉÁÉÍØÌÂÉÕ³gpüìèú^mc›“«‡‘‰yKG/b*j›”TÔlœuô ­mÆg–DË×30&ÿìÒF^Q¹%Švq?‹\ß+,­ŠŒM\XÛihí -‡ïßÿLS[¯£wèÒÊçUýÖV|i–Ù¥Mw¯Àð–ξÅõ]Äô Oºzx롪¸@=}üÇÎê\VÝàæé;½°–‘]`bnéå06½(T`lbJFN§O@uC+Å”U×›Zhéègå_^¸¬Ò·kË.¿4ËàØŒ®¾QGïp|RÚüÊÖüʶ¼¢2â17yxûië”UÕ n¢cgïðÐøŒ¸¤nbck7n·œ¶îA;G—™¥ ¡ò=~Šr ŒMá/­ª³²uÐÔÑ31³Dë!FRZ&2&ÁÈÔÜÀÈÔÊÆÞÂÊg4µ°ê™¬úˆ¿µ ‰d†:$++K1<())š„q  &''ÇÏÏvtW¯^] ‘`n'%% ‘ÄÅŵµµõôôèrº»»­­­¡DþþþÈ222r‰44³>2¿I.§¤ö?þó/D¤ÔÜ'D¤žÑ¹™•‹ƒ‹Ge}Ûßc–·å”á±²uŒIL›˜_¯oëõ AÌÔ⦽³[GÿXiu£‹‡bJªäUj›»Æç×õLÛûFEË×Ñ7êš$?Rú‡D‚“Áá1Yù¥ˆ™\؈MJI‹N蘠dR2ò—V›\vÙÛï#¥_%W×àdHdœž¡IxtjŒúÀÖ˜\ØD­bÓ'7q4·¸b|nÍÕÓSX^‹ê O-¹yùU6´q‹šXØ06³Ÿkê°srÃå 2<:íƒæºâU¤¿ý>RlVÙ¥Yz†§´õ ÏòæUÔ¡Îr -J¢Â¸_ãÆf¦åFÆ%'gä!˜œ‘“‘WÂ-§®µÇÚÞI´ü'Ï^àÂéš»qcÇfW•Õ†§—#!%[ÝØö©¨kQTQkéB;XÛ9U5´•7ö\‘ f˜™™)((üôÓO,€OZZT#x"##óòò>æc(Q"!ʪAD‚¶VSS388866†   -¥ÎÁÁz”¥¥%ínv‰Ô3±Ò?½Î\viý÷?>ˆMÍãFÂù½M¤öÁ™ñ…­‹]`XL|Z ¶öŽiëÃcníPÑÐÏÈ캖ž!<Ã3«PÏÄ%eàœÜ}“_Vgïâ16¿ ¿ž‘YcçhùZº†m}ãäÏ*¬üñ§Ò²/Ä$ÒrK(²½R^I55»xtnƒb$¥å.­6¹Œ’.‘ÂS‹®˜ÕÔ5lba“WZ n…Ç*©iþøóÃðØ­iéµqt+®jòð ê[ˆŒO{ð艄´Ü³—¯Jk[¹åÄ$g>~ú—’•’U(­iAdÇÀ¤£›·¶¾QecçU*“RX+ôÎö¥YÚû'4u àéžJHo씑WBðå+ÉW’Ò¨ª¦îÙ-뙃ÇÁÕ3»¨ÒÖÑM][¿o|[NCÇ ntçÐ4QsS [ºt[ÏÒ´¶î(ÿÓ{÷ÑÜTÛÚklnM~×’êæâº®ë"ì5˜?´ßëÂÂ7#Rqq1ô%mhhxöìÙµ‰že…††‘Z[[¡&''ÓÓ0&ggçààà›ùd»ct¹{bíR'D¤¦þéÁÙ‹]UKŸ™CIm{ÿÔjkÿ¤‡hPd"âM­ìÃâR{'–³‹k¢’2Ó?µæìé_Z×>0³Ny³Kjm=ɯc`ZÛ>(Z¾†ŽAc÷ù+›{½›{ÇÙÑžñ%wß°Ø”Àˆø–¾IŠÄènš½´æp©Eõ\"…&^š¥or%5·´ch¶ktÁÁÕ;³¨:«¸FÏȼ±gÌÍ78 ;÷Q“f`n—YÖ|qökw±¹5\"$ä_šÅ7±y·ñ*ÂÒ+¸DòO(¸½w$¡¨™'’‘ÌÜÃ\#2ï’3swÈt̺Ôy†%q‰”]7XÚ5{‡]XF—HÞ1¹·ñ*‚ÓʹDò/¸½w$¶ ‰'’ÌÌÎýnÝœà#>’üòZŸÈÔ;¶À¯ðz¿áÉÝlUÛéY¯ð[¹ 1ªÝ78ò†«S·ô*È9ò«Úò /7Eø•ÿyá…žH¼ð /W'’S@LBVïn[X\Äm-(¯ã›‚w·ÑùG§K$8Gÿ§€XÞÝ|çà‘œ;·ðú#_ïðd3×`¾Yó¶ðŒ¼!ÎÚ;ê7½X¯ˆ ˆ´½³{ÊËmÜ©ÆöxVWW‰HÑ©|³Ü ™^ÙÉk¾!®~pñ7½Øöw¬jËévÉÖöNUc;O$žH<‘x¹ ²º¾™’Wþa‰499¹··÷KsÍÏÏollÜêÆÂßããã‘‘‘ß迨mß"RËTDvíoš°ÌêRŠ*ú Ϫ¹Dòòñ…TUU¡ÑÓÊÊÊ.jºéé––\ZZª©©ù¥UÚßß÷HpppSSÓÁÁÁÔÔ·X^>‘ÆÆÆ~i®ÈÈÈÚÚZ¡È………ººº£££œœœ›ß˜¹¹¹ø‹¯¡¡ñÂÖÖPz"å¶L9øÇþD -L.‘PÐRÒ¢àã—R7HOž>ëêêjoo'(8ÖÖÖ”ÖØØÊ‚ƒƒƒnnnðìììP ðrxxx‰²µ%''‡óGžžž===BÅòò› ºÁöö6n™#¦ Ü åõc«ímÜJÄ Ò  Ólnn" E®¯¯cFÃ_:2îîî"7ïÙ>;»»ÈàŒÔaàG2Ò(¨¬&ø»+dÁ_: -?õ1œ‚*IµE’½ÞÐçM.ø‘Õ@uWF$eBÃÔœ‡„.–uc'''\ò±@¸§ã —@Ùéz©máG +jba]ËÔ!®¨5«aLȨ~C§IøÓk‡rš'…¸‘Ó<‘V3˜V=@‡2ëG²ÇÒk3ëGÙñÈNé“+z’Š£ó›¸DB|VÃØÍ!’¸„%«¬¬LLL‘ÌÍÍûûûKKK{{{é¾www£m+**Ï%Àòüù󂂨LöööÎÎΘ.¹uhnnº•:::䯮®F±@bgg'Î š†rAw‚Άô<‘>‘0p+]\\¼¼¼dee‰HkkkÑÑÑ&&&¤<@^½z…mjjjaaÑÚÚ*D$WWWKKKCCCÖp‘ROO/--ti)))œÂÏÏ›ÆÃÃymll(/Îhff6’r†¨¯¯ŸŸŸO}]ê4ê†xoooTÉÀÀ}G1¯¥¤¤à¼(W„¾‡*PØp]HŒ r£KÿøãJJJIIIȨ¨¨Èˆ–"Ó1HæÔ××£»»»Ã8Eš˜˜­¬¬PTzîµ~þùç¸d¤„õ‡‹ET–K$” ?’ÑÜ yùò%Š266&vAªë?ýìËç’ -ö~1@ÄÓW²„#DEßRI×Ì+:;»i‚Ë [ïHI%­Wrj1g„‘QÕÕ6s”S×Ù@Ä$•w}ÿ𙦉†±‚.!Ér¯äTµÌ‘À4ïH§ àëF @G***BGzøð!zQrr²££#n%ŽâvÀ[?77w.‘€äB ¸5èв„L?ê¢D„ÞÖÖ†b%$$‚‚‚ÐÓÐWé1…‚‚0•ššzÛŸZÜ("a¼`€///£ "x‚»€b1ð)™˜˜†nð!D$˜{(s½ŠŠ -EbþÂÇ”¤¥¥EDÂíCÿaƒŽÜèèè€Ú€Ûʈ„Ò€DV˜ E Ô""aäÎÎ΂ìyyy8)úªª* ¨Áy1—ijj‚H†S ÕÕ"ˆ.ÔÐÐ€Ä éo\"¡×…„„`2¥IŽŠŠBeÒÓÓKJJˆH® j»X¦M)++““5.§—Ð’\"a†%- Âhëâš°Ú$5‰$ŒH©Õ†¶žñ%)U}¦Nþ±…-\"ɨêyFe1’€HnaiÙca™ÕHLDúù©Xdn¥A<©[ÌXûþÁSc+°Ü·°ë%Ò½ûŸ¡UqÓ³³³¡F¢Uµµµq7ÑÚè·èGbV›èã).‘x}p"áVB/E!˜M@!"n4"î¬Íÿ\"±'Û,ô°ý0ç]$Ñy`à` -)33“=e’——GRPÎ{ <åmÁÊÊJÄ#Èžp­6¨RPÎ{zzpv4À£UDB˼‹Hèöô  6&ê ì>.‘ ìàhpiiiz%Ú±A$ …~bcDJ«0²÷Ž+nK®ì…ÚWÔ*ô( 6—‚–qhz%É#23»iÜ7.ß54å ‘´Yb  ßø‚äò(NÙãdµÅ—´ë[»ù'Ý4«íêDB##î,nÚwu$ $ÈÉÉAeHIX§â‰tíDvhsLÜGhD$ +X+ºººds½‘`­@! Äß ~"R<<<  ZŒBD‚ØÙÙ¡T¦¿÷&m4Ý'‚ÚO³§““Stt´‘¨Û#$D¿EßF üÐÈ ÝGõõõaT¢ž¸(h‰ b¸D‚õ¡®®¢c£‘ßE$¿ø|M#kÏpÎs¤© ”REmÄûÄåå¼ýIÇÂù©¸¬²ŽYbYIÃØVZYÛÄÉ/³~D”H–î!Ï$ä SMæ®AìÉvRy·‰£oPjÙ !’½ƒ#71P@· ’••Eok J)Kƒ>Œ›NÝ·’éNhp€ }68n=·XtBnS$ò -™ô$“žm‚u¢¹x"}À_ÿOÞ7†~3bAî!ѼB‡(;·XQ“íìG¥‰ Ü}¤„"A²Ï­Æ¹åˆVéÜJŠV‰{Qï*óÜ:¼ëb…RŠÖ\(ñ¥-C¿þA¤«p5)äñ“ÜçHPx„ e¤ô¢gJÆ¿!ÉËÇ'Òu ”L4ÉÉÉsssümåé×8Y5}zŽÄ¿³Í O¤« ´_(ÞÃÃÃìÇ5^ GÇ;¿ÆMNÏ®nîþÊBÈmïòDâåwB$^x¹˜Hƒ“ FÁÅ¢nÿàˆo:žH¼ðò‘‰ÔÔ7©ìUÓ#pɽÎÁIg.(Å"Æ=<-§ùlåmœË32žì¦ñÀä+÷$K­êGLzí’™9$ßR"­oí›úÕKZ”J™—IX”(ÚUð(¸cDI U___zU”À𬨨 5L¼¼¼ìíí1Nq6??Ü}ÚCÑÑÑ%%%ÚÚÚ´ûLHHü(yff +++óóó£W/ŠŠŠ444€$PWWwuuEÉ mËAß(¹¸¸œ ->’——G•À -$ '{¸jœÖVxxøÁÁH‚*ÆÆÆB߉‹‹;99¡V(–> `‘¡XÄÓ^!¸d€'EoÙŽ8iiiihhhll,—H %6WÄç_}+¤,GVa¶ž`í3ëž§¨mLK¤¸¢6ðÊÎ'J×Ò…Vìø\BIÛÔÎ7ñd¦UÙy1Ê7滟Ÿ€Wˆ|.©@à¦V÷¿’S#UÍÐÖuÓ0¶³÷‹AŒGd¦Ž¹“[XZdNým!’’²ª¢¢‚¢¢’¢à?u5kïhïk¯(kï¨~ÊÊIHH`›2œ -¶ƒ9÷7wÌžæææªªªèìçõsS3·Xô¢[±qüí%Òðð°••†3†mðZWWggg×ÞÞN¿ `B—x=÷÷¡ð@'Á*GGG‡Œ;‡‰½±vrrJ@éÂý  "átôš: ,œ -^»¥ÍÖi›-(E´_Û©`C%"<ЗH‡9¬'011C(¾ bš¡•p. ÆÝÝÌÀ¹¹9èfÒZ ®‹®æ‰Vš‚F~r÷°‘\B’Á"ZBÿÑ I!"½RtO‡—Wg‹íûÅ盹 -íÒȈdhçiæà“ûL\Šb½”˜SqÅm²júˆ ͨÔ2spRy Ãw G˺ &ÚyÁ!Æ7._AËØ/¡Xw+ˆ´µ½»»tæÎÜÒÊzHHhhÈÙ¿ÐàG²r¸oHž¾ùÒ½Ž6‘TWW3WOO%z÷-¦ssm§EaF*–Þ&â‰ô¡ˆ]ãD" CP¨¤ˆ¹Dj¼½½¡í<~üX¨hMD¶CˆDcœãããhkkëïïOD‚ -DGÕÔÔè\  Ê ´)Té"yzz¬8Ô9dyùò¥‘Øã ¤§½­Á.\ŠH‘è9Øh``À͈ Ba"”G¶[éÁ3q!"Á£cá¬oíN:í$ ½%£nø]Ï‘€EmSd1°ñ n°Òâψ¤wF¤ôJB;†ˆ)¶°…ˆ”\Ñ£ib] #"¡’PÛ”tÌœ‚o‘vN¸îDðÖ6íæ¢ ¨p1‘е¾ùæô"ômx`ûGFF⨵µ5:9ì\ÁœÅºåD¬GÅbN¤bé‹]žH¿žH`í©rHQÁ„`! SB“ ݆††ÁÁA)))îºq†<ø&J$($@ l%èE0ÐpŠ‹‰;]j Ô¨^˜’`‹MNN¢2"uttà(ö¬9t \@¦¦&[ê]DBÅ€$Äpù`)ŠÅ¡ùùyØ}¨7#ú-ʺq]Ð'www‘"sŒí}b š­ ˆC(,,F¦¦¦@z6u*؃’öÝÞÞ¦áP$Æ)ÐÍÐg@ (0PÛvvvPìèè(eœžž†öP úÔh2Ðy¸;¿Ÿ -¶ücýh £¶èK€JdÐëPmÐ5deSFÔ ÝõA^\ëÕôd_ÝÐÚÚ3 £ž8Ôò@²õ‰’Qш$ -ä`îq™à™šQEþô -Em¤!ޱÒR*ûÀ=òÇ´h›;¢X0'V°¹-¸¤¤cªj`”ZfæìO­,ÝCå5œƒõ,]J:`¯¡XP‘v™¼DZXÛj^9s#+¯='&%Ë%¸Yè¥ï"Ò©à“t*(KlÃsE¨Xô„ììlžH¿)‘>ˆàNA™¡Å!Ï]üêîÉu½! ž@¡‚“RÕ§oãëìÿú?»¼‘Û:#âfnæù+iV¦Ì•¤ð€6Ðmªªª@$ƒæ;0„žK@  c–„Ê ¼p—VÆ”'¤ü£XL^Üba5€H¬XÌb¬XžH7‡H©©©zzz&&&¸_¢‹_ÝI98:®î[øø®¨yÄÎÍOAEMÏÄ2>¯ºªgîW84»qc‰4³´žÓ2ó.÷ŒC$Z˜‘>•g03Bo_XX€z€~±…æþI ¤g*÷©àûYúåE¨X(öT,ð%T,Tk”ÆtóDâ¿"áåVËÅD’SP~üRꜘ>>øKv: -=]ZZz*د –xxx8½üC¯OÄ×þ5¼ðD%RÏäÚÖÞ!ßb·ˆHðçää °p¡Ì# Imm-µ¹¹YRR†TTT@·£à:hI=(W555@Vnn.TØËõõõiiiééé[[[еP&üÀ4ØÑííí‚K°²Q ú0 "EhppA ˆ^!âP‚´8Þìì,‚‘‘‘܇мðDúàDªïš¯l­l®l™ZØâ[ûã[mP“ ü°—–„1ÅÞ“d ±E;[ZZ¤o1 ]]]Òµd£ÍÏÏÓg_§‚ÍbP,©@§‚wP2 B§‚yÈ‚ÀToo/ q Š¢ŸáðšÎ.º/<‘>‘J§älÊ¥ÌË$-J$,Jòk'øÖþøDâ…—;I¤ýƒ£ª®ÙÞ±ÕÍsÖ¢ÙÛÛSxýM®À))ÙyØù%Ùú%Úù%ª;ÆÄü}§Zmmmnv¡à»¦æYèö:::VVVôЏ··÷¥ª>KKK555ww÷_ººO$^x¹iD:99)lRw©µ)‹Ìí\ßþnllÌÁÁáàðxïàp÷àhïžã‚Â"o_ooCƒhΧgB+_]qwþþ~ÚÕˆ¾Ô¦ïM®òζ®®.l -ä‚]Àýá‰'/¼ÜF"«8–Çæ6v/ÈÛ–µ ,Ÿ;üøKD::>æ~“+ø—vœ<©~³}íD044TRR"¹ ™šš²u­…>î&%-¡Ã“ööö_ºÒ O$^x¹±D‚‚žÕWÞ<­h_žQ3Ö2²Lnd~ó ‘×¶æ×öàÖ÷ž×ÁµÝœ¢²¨¨È‹‰øtuu±÷[ª««srr ÛØØØÐ#ªªªÜ·_ÞE$ZÝ‚+(ÄÞÞ¾­­í®r‰'/¿+«­¼eTÓµBΦ,¾°{sgï\«mhn³edEÄ­âoDJA$GG¢Un˜ÐhЈ,,,rssé+6WWW[[Ûï¿ÿž~‘²è—勉t®loo×ÔÔXZZJ<‘xáåV‰Ô¤°Ì^m÷šÝýs~n#©yd%¯uö\ç•͵Ú`F!Ëññ™a755Pœ -y2C¦Y|||II ÔZçT°œEbbâÎ΂`½è"J$ÑW‘éqº´´4'/7PN*zæïª«\ü°D‚DçèzÔž[éHMCËïú&×#2‹K$°$sòòòbccÛÛÛOKÝÆÅÅ!žv„\^^ONN…h5B\©©©È…Èèèhooïs‰$úœÜÇÇ'""¹‚‚‚ø'Û¼ÜT"Ý‘íÞÎuåÝs™Hß~󭄬òsIùg’ -Ï%…Ü÷ŸpŸ#@ªªªjiiJC*mEx¶xÅÜÜ0|±ÇG0膆†*++ëëëé­?…Ö¢$¾q)kkkQÔÌÌŒè“(žH¼ðDºD:::9xÇwmæ{— =æ…'/<‘>‘®.GÇ'³«;|ã‰Ä O¤›@¤ýÃãö±•‹‘µ¾½'êNø~yÝDZ__÷õõÕÖÖ¦õó-,,%$$àÌÊÊÒ××777Ú5v±ŒŒŒ¢@zzz:;;ÝÝÝ''')Mww·™™™––Û/›ð?¬Ubjjº¸xöüÓÅÅ…Öêßßß÷òò¢eaz¨««‡„„ÀNÇép"999)))xüüüÂÃÃaæC]oii±µµ=|=çééy*ø¥Gqv\]ll,*€Z mP-//OõGúãããææfCCè¨(öX@VVVCCƒ-¿¹¹‰4mmmô¨³ººåXYY¡ i³KˆƒƒÙñññIIItqqqòÐ.D$=K×G/$¿”úáÑóÜ–IZÛÌ%@ZE‡–ô§âdTuƒRÎö´ò {.©ððùÙÖ'¦NþÈûóS±Ï^Ác﫤cz."\CS_H)þôøEjõÙn’~ñb²*òênaijÙ²R|âòhó§À$¬%Þ ¬gN»;!RBAÝÒ=$G°ÁSJeï^¼V H,ºEDê[øR7ú•C&œ¸àï·†ñÿ&㿳wÀ³åz‰„ì­­­#©©©ìÃX•`Tqq1FzCCƒÐ›¨yyyÜŠA MMÍ©©©±±1 jz£”CùKKKìõô7 ÅâÐýû÷i)555Yüá‡h‰’¾¾¾ÞÞ^œãý–ÈÐ{{ûñññ‰‰ °ñT°ijVÐî“GGG jŽ’Q%¡_]…~"TãââP±ºº:@˜"Aååe™‚¨X}}=Љ‰¡•£²³³iÃÊÚvçôÍO- ØåããÃN!ô ˆ„A-¯aPÒ!üä• mâfåꛞU£¢oAÛ®™8úúÄä&Wöú FýÓW²ñÅíl8s—@¶‘.7žë^H+Eç7I(jÒºÜîáiu#ÑyÏ$åh£8àÈÂ-3çp,©¼[×Òõ9ƒUl®wdNÓ„SP¢[h*-ú-¥¬_Ò.¥¤u»ˆ¤áWÜ7½>¹´5µ´Ý9¶Œ`daGX^Ï–k·Úªªª a¼Ð’\"a¢‡š@WW—í«ø."Ñ )ÑZmø‹H åÉ“'”ìÇÄ ¸‚‚‚ í0"A‡iooOLL´´´$"#ååå666>d‹Î  @1öÙ6Fß|ó ² ª-¢âêê -d1ΜK$@†>@¶_Û·ß~ ?Ô- -Mô+Lcc#í™’-ºjF(oÁÁÁPö.& £ªoIˆ`Dz,&%©¨)£¢ûÓ“—‚Z¯äT³ÇÙ`·ö “S7¸÷ùWç ‹¬šž¦‰}dN.!Éò†÷¿øÛ) ,³ZLFEÏÊ•ˆ¤¨Ù&—p‰ô𹄺¡o|>U@EÏ"®¨íl ïÆqhJD¤Ï¾ü5´õ‰ºeDò/YÞÜ;ëã¸ÇG5}žiÍj^ù+?#fêaA×´ ÏÈÈ”üøÀœŠåÊ-ZÕðC C ­Š”––ƶfDÚÝÝ‹šššjjjììì¸?\Š º -îàÚÚ ZLöKAA4ÌJ8Ô$$†^Ĉ= ƒ×ÚÚÜ "A¥vû˜HˆHÀT;t F$UUU¨1À š}&""‚[[Q"Á®™q´¨;E¢Úà$´ -"muöþpy9íÁ4CB•b{0IKK£VàLÑ ˆtptTlâà›Y?Ê%`‚xhA„ „I(íÌiž 5v“¡ì¯s‰J—wLÛH—ì/ cÛgòTljUÌ4߸|ÚÜ DŠÌ©÷O(z&©À%’W¸¹kc@< FbHZÔ¶ØÂVm3'"òBwRÐ4º]DÒô/YÙÜ?ÛŽRЩñ'£ºOÙ3? ³™%ÃmuF„¤¤$ùÑ 1Kƒ™ÎÃÃãnDâçç‡bœœ0±Ò¹h…Ãß‘h³6 #‹=iaD‚¢‚©z¬hìѹD P”ŒbºÍP0<ÕÕÕa Ѩćˆùº#8†j”••ÑÆdñÑ‚–ìBDB ´Â#j~*Ø uÆ¥AÁå`Žyzz‚¨ÜEw…ˆ‚¡æ@ÎÅâÑñP+¶3J£½ÈiÙ:"’žžÊGë±€_¼xepîê꺀H;»{Ð…`ò;øÀ}ñõw@ Æ2,)=+7G?;ßhÝà†…k¹KgTfxV-ަ×½Ëjûù‰JÓµtѱpf bò›tÌR«û™Õfïƒd6HIDÒ·v×·rƒ$dµƒ–î!Ž ”:ÀÐÂ5XÏÚ-±´“ˆôÝO m=I׺MDòƒŽôšHo^)8‰.êüÞ(vtVx»(hÅÜMÙöë˜Èp¯?ìÐÆÜM_µü>­6 œþþ~èìÁ,=Ã!]mM²¡¡1à\, ´n Æ]GG,,¶ø6Ò#/ÊǧWUiu8T%#%=nêííEc|Å’¦ -z@Ç@P±0´Ù³e¶¼ ˜6==ÍHu*ø -€¿CiA2Ú?1PW&&&PwUðÑÑQ¡õâP+  ñL¯È×?ÐáBPû¸ D„a6"{­Õ¦¨½ýË­$—°Ë<#3™ƒzCŽ¢ó› ä°gÅP“b [L«H(í ýƒSËÙð+nK*m‹A¿¸ü -SªúXP(¾¸,5ÒvR*û Ø =èͨB G¡ð¤ònhhT,á+­f âÌœ¢­uAH ŽJÎjCF¯èœ”ÊÞE¤†Á¥¥=!wt|ÂÑ‘JWVÛë·²µ¯PÚ1<E"•””@çÇ@€:íîîN›°ãîc"ÖÖÖ¦Y˜¦fL»ZZZBÅ -}^w.‘0ÏÆÄÄ`ª…¹A1ÐÖ0á¢|h ´7"º¥¥¥%rуôsT1˜ˆ…¶Ÿûýüú"ý·>‡KÏ‘ÞCÀCwî(Öz³+.ÿëÿ¯'RMßÂèü¦cŽ" XéD ,¯líi_H=‚‚‚À -Lµ ’””fX2 ¢££i9VèðŒ<˜@EßÖfû¹_@$˜˜Ö¡ð›™™QÌË—/‘‘V¥&ó¡¼¼ö#30?¢b ô·ªªªß'‘`AÕù½ ·ží$þ‹•ó“Ñ!sgÜäÒöõé*V›à9Òë‡H¯u¤Íý« ü »Ñ΀HÀކ††œœô(YÙ×›€çççëêê^qò"Tiii”Æ~RPP 5¾¥¥T¤ç]þþþ¨=p€ÿðáC$cï®üÞˆÄ /ï'×û[³×NîLG -¼ªÕÆD277gAh&0¦„~ƒ›žžVQQ*–™u)++‹Þ9=;#Ó¸|}}OmÄÇÇsŸ±ðDâ…—›O¤¥³çHǯµ¤˜n§«­äW C288ØÂÂÂÙÙ™b ½‹®ävîjºBDÚÜÜŒŠŠ‚¦Ä¬6Q"€†††8#½RxppPSSãââ‚H¶‘Çu ú[^^KÓv(7cllì{¸¬ÎÌÌDsqÍ}}Ã]ä­ÇÝ&ÞGk+^x"‰IÆ%'¼¸7¢¤/²¤/ª¤?¢¤?ª¤/¢¨OÖ-O”H‡‡‡ô+ ‰ÐÇþ`ˆÐ¯$»»»kkkëëë\ˆèê‘Bå¼+Qû=…E­p"B8°±±Á†'톆ȶdå¹D‹<==ýüüìììPÛòòrww÷€€{{{T¯¡¡ÁÕÕ500A £³³céågØÅ@:ØŽ Ð155EA  srr¢ ð Ð9::"/"éÍÄ£dH/"zxx`Fpss£ßFqµB$½E‰¿P/½¼¼P7~HòDúøDš_ÝòJ©—›]ÞäïˇґrsssrrØãÖB°—¸JJJJKK¡®05Ôa(ØÔÔTQQÁ…A¬ªªb¯Mö÷÷WVV2kll¬¬¬Œ½æ=334ÅÅÅQ+((ˆŽŽfTG9иè÷wü…~Xq·áæ…'ÒG#/H0i¡à1ÁM° Ô¦þ-.."H‹sF¤¯_IÕD½tz Xö% ƒbYÚ#ÎË‚ÐQ1„¶´´„¢èÍmü…’†±wxxá‰ÄéN‰^x"]J$Øe±U¢îà_Õ'/<‘®áɶ¼{nBÕPRÍprÍHBņ_ÉWºÑS‹ücžH¼ðDºÆoÿÏ>,YÝܱŒª¬ìšVpÍæïO$^x"]û’“‹ëF!¥615…Mçl¾6==Í}Yåøø¸»»ÛÁÁÁÌÌ,??oo¯¡¡áý6bËÎÎfŸg^š’'/¼ÜU"½ùŠäõNÜ€ÒÞÁ¡„}ºeDùö®ðJ’AAAVVVì-è©©)àhbbbvv666viiéðððýJòððྦྷ÷.PQQ9÷o&´æ!O$^®WŽOV·ö¯ÅíÝj"-¿ùöÿø¦42·ö³Y’Ð’[[[¾¾¾l -ÚŽûY=¨Bë -677ߘ˜µª¦¦&,,,==^VdË;Ó¢çITëïääÄ^ÔÌËˉý>îåå%..îççw-0ñDâ…d{ïðº>ðß¼±D*íškZr;ûG·ÚΈ´ûf5’Ó ¾´ÍÍÍIÚÛÛÃÃÃi°ïîî2ÚÚÚ•••ôÖ4‚´ºiSUUUÕÕÕÒÒÒ ÒÒÒ677uuu©Ì˜˜ú*_”HšššB—3??ý'""‚V¤§dÖÖÖååå@}ÎV\\¬¯¯ÖñDâåŽ)§i"£n8§yâöéêVÛ©àÛ6Á×¶g«‘h½ý]Æ—ššh(ÉÊÊÂ^c‡æææ²¶¶Æ%{™}€e)00ðŠD•¢¢"üõñññ÷÷§C@$zWpccCOOïT°b-Ðtg¬¶þþ~¡ÏsK ž -VÎä~sw*XWä#+}xxÈæ;Xï±³‘ü -=‘,ÝCžKÊ[y† V{ëÌ©¿{DÒx½†$­´}úúÛ©¬¬ HŠ@ ¢°E×Ivvvìììp×~‘`…!xE"AáÒ3À_øéëQ‰Ô³;L$˜ÆwuSrÌeÚÕHèÑ%ëHGXGbR__/Ôá߃H¿žHfίdUÍ]ƒÎÖÔÏ׳r»ƒD¢ßÚNŽON߬!)øöŸ»†$í‡ÅV9ÞÚÚ&''¡œ„††vuu5žžž‹‹‹W!¦{CCCôÀŒŒŒçÏŸ¿‹Hl]w’æææ¸¸82Äð6íª#J$èo¶¶¶×µLÙ$”ÀÙÙY4² #Òúú:..ùT°{.÷š*}ú»ƒŽàÄÄûÆ-†Ê £èç!H [éé*Íññ14è-¨åE™èÓÓÓH€¡XœÙQ΂úàƒùÉpFV ºE:2â~AB2¢OfˆH(Yè©#aòBö£ Î{q#p¯GÑzTœ‹¾©A­Ø·{èTOZëu$ÄS"·VôȹX!¸^ª{¹±½kdïmë'X·–¤åº”ʾ¨¼Æè7ëÐÆµ&WôÄ4³ ÚÒª&¶°…V¦M­ê ˬöO,J­êçi*µºŸe¹:Rq÷äÚØâæØÂÖøÂýí\ç®F‚n°ÏçÑKÛÚÚ Š ],ÂýB×Â-gµµµl9z¶7î`MM ²ã/”™™YYYI +//ç®ÍÍE‚ -°»¨Jôx<55•:!z­x~‹êy{{ßêçH¸\ ŸŸ_pp°ŒŒ  ¬À€…ÊÄÖöùò%}ÚoooßÐÐ@ú ÜÜÜ`G3]Ã-,, dc[¿±[RRâ-…öövDBÿôòòB ¸5ãT¾………†Œ{‡›îìì #š<˜pÑž={†ÉËÕÕÕÒÒ’vm@miG9t œº4¡ ýßþö7T3ÚÀÀ-ãODB×BmÉ|‘0566¢Xþh„¨¨(K;œ -–ôg€”Ü ÄI©šššLKKCQ=dwww§4кqEhZ‰”ˆDMM³* · ÐÏ)Mvv6ÊA<­Aµ? WÁh,,-ÿüôÕ3q9S'¿s÷kSÔ2QÖ5×|³dî×?<еtÑ4¶³ö ‹h‡8ieu#èWÙMãúÖîjVrêúö~1ŒHÑù8þöŽK·šHŸiG=µN}jÆq©O­Ò/º /H`Q(˜Ö¡.‘0*{zz0ŒŒŒ(™¸¸8F Pb“e"apaÊF$[ÀE¡@Ô‡­.E‚q‡Ñ -ì@=À eD¦h5ú†ùi=)99éÁLiiiT ) œg´²1…ã}xx˜Åe´gt3˜E†?øƒ LLLÄ!\Hƒ¢Ø6[¬0`ÙÚt$` i†ô¸277·¬¬L(®í ôA-**X`9ÒÃjœB±`NBPØw¨OMM š…“Ž„,BKž‚Hp¡f`J@ŸÂÑc1éçò ¿ýñ‘¶™ƒ¬šžbQŽ`];ßh·°T: -{MÃØö…´’­‡”’vpjm¼ Ü_ÆŽ¾i5wã9ÒWz1NYNÙ’pŽÙßÅÿ›ŒÿÎÞÏ–kÿ­í#‚©Š<±±±ï½£/¢òKßûâŸå‰ôe‰Ô<¼¼ôvG˜R§Ò‘*_¿_„­ÛözC<¯i}}ÝÌÌŒI©š@ãî ´°°ÈÍÍ%Ë &žƒƒƒ®®nrr²°aЩDþ‘Þ¾}K#߀¾ÐÐPl£jz¿qu‰4==-“ÉüýýiE‚¹¹¹¶¶677·îînØJ -…¢¯¯ÏÖÖQX¦ôÅQœ/Íz (þ¶ÂeÁ~;;;DqÁq‘ËÑÑi¢¹{“Ëå´j ®©©¡éÈURRB/±qÍ“’’²³³i¢+þb{4Y«Š 'Ò'I6¨˜PÍ †½ýC¡ŽôúÝ’Çë#©”¥C•O[1‘ôôôÀˆˆÑ"6@Pdddk뱉ì ³àñ]TTÔÐРTáGïÓPªü_Ó2JB">(ŸfºÁvC·EièMä ñê -OHH -RSSqFƒƒƒ¸žÑÑÑèû@¸ØØX¤Š833ƒ+‡= }ƒ†¥,•JiÖXZZ²ãBMMMPˆ†……ŽŽ‚o@=¢€9MçaPlHHФTVBT"‘ÐüÊÊJ”Œ£4»ØD½(Š.8N¤¯·É»—H§­„›abbbaa†H ö ËÛÆà¡Òh=tl åÐÐÐGß#¡ 46£ÓØØ˜6h\ñU·ÚòóóÙçõÂÂÂöövæA À6›› P Ê÷Ÿ‰ N$.œH\¸p"q"q¹<2¶¸Þ;½zåÂþÁáõ#ÒÁáQiã´‰£‰_£±¿Ì:¤™ßŸœH6i\úZž?'|?¶_H™YY)Ç’ŠÉ))qIiV’Z+I½•¤ÎRR÷Ð0”¥:N—šZXX(Z¢ÿ£R]}ÜCiŠÛ¹³³ÓÖÖöG‹]__oiiÉÌÌD™´¢`]]ݧùõæDâ‰tÁDjèžtŒjͬØ=©µ11±¥%¥UU•Uï¤:'7÷Æ?ß~ˆ¿7îÜûûßþÁ'&&#9nøCÍ åCËËË…£’äryzzzBB‚æÅ®¬¬ÄÆÆ–””Pú¸¸8¥À;'ÒU—£££ÐÐÐó®%::úìe „Dò‘fFfÕ`Ã)0&±´M2Úzœ¸'§qÔÜ%àÏL¤Æži=¯ZWi»žW}\Q·zSS“×oÞlìì³°¹³¿³³‹°½³ æé³§B"Outt°111±´´͇flnn ÌḬ̀aE«««===Øóôéq9Ðd¼½½iŽ* -æÓ–Ë„æ~ -8bî!žF=q"-øuþ¨N{Á299ɰ]ÀM&&&gÏ‘ÉÊ=˜¤§î:(øyp×ÔÔ(U ¿C“ÁøäÉ*jÊî{üY =+wèÑ):£W¯^©ë¾®DÂUÐp=q¹lÚ“Y?xï‰.6bòþþÍw.’ä’ç†VäÛ($¥ÔÀÚ-,£ÂÞ'âÖ}-•›’-]S*ÁÈμÂFt~ê‚-‰Ä­SWï=RÏÔC»Ê¨Ü®ÝýZ "M/,Wö.V‰ƒB}ðX]Gb"œ×†gîýû÷ñ[£LZõ·"wžÑL'Ç[}„zÓ‘4‘€€êY"áù=‡€ïææv‘`c‚D"A·Uªfÿ9;;”üaN¡xtvv¢ߺuKTJ&ý`DbKƒ¢§C5Â/…*È­[Ân$æG›Vócú-øÃ^ AРpF£££¨EOOÁn$F$DÝÝÝ…3†€2Ð Mrrr‰&HB‹ÃYÓ 'ŽA{ôè‹ö0à · ˆ„d¾°ÌªŽ‰Ç:ÆyÍB«é…‰­•»ÄM’øÝ¿n -~Ó6È’ Ÿ±€¿:‘žè™“j¤kæý -Ú†Vq*¥ æáDÒ·r1w p IüáçÛL¹ºBDZßÜ‘ê;çO< -«mj~© mî´pçÞ# ‰477Ô0—:J•›¨¡PåAé:ÉÔÌ´¶A.Ímˆ:%ü|û.KLš¶Hc¡—ô Ew@ÇÁ­Hï(pJ¸™7dz–áÑÏ‚bÙ¢@"qttíA^à7nf;;;²ûDÓkC$ôêNDB§«ªªÂ‰ãâ‘p%AìAuô ÛèhôÚ*+@ëS¡_Ãp%?~,Z Ï>Pk Ô‰DN‘‡TñÉDBEÀ˜ Ñ"3xÊ,€Cd¨¨¢¢¢C%(Ï\ -äµ´´¤º‘Œñ¨Bb4‰¬6¤Á6îÃ'Ož ÆÓˆdcc½ w5’ÑËÏ÷VÛ¼½o$@ä‘öÏ)¶ ÑÜÙ?*§¡À?6–ÀC£Æ`dV™“ßíûO°€z¬c†ý^aÿ÷»ŸˆHqEÍfNþQÙµÑy2Ñ›ö+A$42¹dd|öä/ ùù^ž^Þ^*y÷¿$0П’þŠo¶i¹H]Œ-ÝLsØKàÕÕUlƒ6MMMJÕBµøíð w±°”a› ½Ë ƒ~R]]Í^Œ“@õB—J¥¨‘4XЉ¼.Ò³Ðãz2X1==ö°'ÒÓ#ÉÐZz+E‡P#­&Jô -pM’““AKèÆäí|ƒžú'le9P¸€fkûQ/jG³‘r||\H¤ÀÀ@( û¦Ó‰q‚À/èìÂ¥o (Ò’ËcccH†Æ£¡þüf»~JˆµGˆGx -¹‹õ‰ÎJ©ìf/Ž mÜÉ/¤êÍötDV5HJ jï)"íÉmsQ½²N«îe®·}¤Y©ï‹ L(0¶÷ -J,zðLO¥MùFgë[ºt^‘élìAdv­‘­ÇKS{ØwWŽH\®Ç×fµŸ åê4­õŠúB[Ÿ/_e„¤gD*ôlnÖ’ë:BòIßôêæÎ>GÊ%$TŽóSTYY ãËÜÜŠÖòEEŽé`_¬#̬ÊG–/8ÖuXÚÚ¿Ò7ð ŽhV|B lñ|N$.çM$.\.^®‘6·÷]¥íÖ¹•¤ÉJÒ,;åý9''N¤/N¤±±±œcÉ}rs¼£Ë,‚ễêt\rrJ~\TT„¤yyyr¹œ¾Vk"KKKµµµÈÛßß¿¿¿Û¡ªªJ8àŸ>®&{{{555BOL”¾ººšÓÚÚzšÿî Òææ&óEcƒçææ^¾| µoú¨ÞG.žwU°hiiPl:‰ˆH¢i& Ò«W¯ ÑÔ*–žåB]àÊäD"AcÁ%bpv`Tff&Ô$œ/®”Ãìììææfœ5¢rnn.-´uÚ®!pmìéêêÂec‘éA0l#;ŠEi¸Â8JÃSé*!J®*é²çççÇÅÅÑ·rü"(Qäƒkˆz#𼯅é«ioÿð¡]eyóÌÒ›ml°PÓ5¿°ºýŽHîîH¶³wb8¨ª©=‘Hd­Ðô"ÜäЂð4'_‡P 6LLL câ/òuBÛ`ÊeddÐH‘DQÅ·¸¸ˆž.LOÑU¡n]À£ÿ4« ç855Åz:¢ '˜‡(Δ}â<Á -¶úÁÐТÌèÃÏ(3ú@räeŸìqÈ‹÷;íwePbQ\%Xm, -L’(Šlã/ô.Tt©†ÁsùóéH‡ÎÒ³ÀFLjVÓ€ºÚŽé‰7‹o¶Ö·÷‘W·Ç7ÆÇaï¶3 -ÊãN!ÀBãxaàVG'555%ƒ¹¡>g„ µíîî¾€‚D~r‰HôR*Kÿ믿jkk›™™zèª_‹H\¸p"i.K«!™]©]ƒS'¨ëD¤®ÉÕSæä*B h΂:‘`SH$lØÙÙa?è8ˆ’á© ^‰V­aD‚ƒÆÈGß#‘ð|/--…b ²Ú.F8‘¸p"}9ã[›ŠHò‘•ÓæäúÆäª[mÐR€š   Z¦ªªª¤¤D¸$€C}À˜f°¶Ö××¢ÞÞÞŽŽát$è6999?¶*99ùD"A`eggÓšœH\¸\?"Y[[ÉzãKÚO ޱBéîÝ»à€ŽŽNpp0ðBï(À"PÂÈÈÈÀÀ€’544 Øžž¥jv¹L&srrB®€€€±±1ÉÆÆ†Rn°Å˜rEB¯§˜lll¸ºº²ôÍÍÍ–––êÉ8‘¸p¹êDZ^^vttrÂ?GÕ?'uqhnjä?"'N¤ N$.œHœHœH\.L:Æ_—vÎ]ûPۿȉĉÄ/Ëå—¶±•«è¦í†êÞ…ëJ¤Ý½Cï„NLj6‡¹cdkSÏ¿«Ï‰H;;;45f{{û‹,‚ÒPÔÆÆþª;S¸¡aùtv_jý“Óvj2àS"å·LþQGùòÉì†á솑/å)§iŒI©úž^z,e¥ïÅ7¦Ò4 ÖÔ¿á…s^nÙË|mmmõõõUVV¶µµi>ÙölyûöíÈÈnã¡¡!a?Z^^ž]YY‘Édõõõ”æŒrVWW‘žõ$žœœÄN:/´yttô“ýäžëŠm±±±Ÿ?Y—«®®.<<ÜÂÂÂÕÕUÝSÒÅHaa! Y.Øþ™‚“:¿ÂUm?‡H.Aq.Áñšwÿ¤ò3'߇Úú_Ê}¤úª¹×’H¯×¶¤½Ñùc³+'ÞÃAÁ™™™4lèX2,ìœî>Ö½«…ðò§ÿü"œi‹Þššš———€í/ÒÈžžž   ò•B²ýééér¹66vëÖ-œXZZš¿¿?°v ‰ôù‚³ÆUu¡¢àJ¢XÑÐ÷sÜHÌ¿ “/H¤ÓBu"áÉ%¼…ΉHHoïQÐ:Y7(I)áDÒPü’å†>2³€F»°†©…UQ‚ññq7µ™¶K+oæçðßüüÜ\^^®p<:uEEÅÞÞM›eKµƒT¸ ð—¢H P(p7KKKH6==mšŠ‹‚±G˜žˆ¤T9:)**"EGçÜíí­­­ÑÌ8õµë*ùý|Ù¬1à‹E^ÌPlrr²ÈñÊÅ ìîîÆ©/_¾$"999Ñ Y´ÜÌÌŒ¼=*Uî¨ôôôŒŒŒ(Šë¢‰3o`` º#N”@|úûû]\\tuuÃÂÂè"cqq1J³³³Ð<<<^½z…‹Œk #t-T‚‡6 }Ñ´»ÜÜ\ä544¤• ¾ùæ›çÏŸãìh)"n€Q*•Š”Û””œZBQdG]hs—‰Ÿ ÍpvvÆ-‡(ù˜À]GÓ!mmmq QæÝ»wñ‹£>>>¸¯p1¿ÿþû_ý éöƒ§èï?üû¶®¹#s ùÂÄVÏÒ%£¶Ÿc`íöÜÐê—ßž[{„PÇÙ90öž–ΓWf´Œ? ú–.Ñy ¹ïM-3kÏÐÏôL}igzMß½':FvžÚF6ˆJ’‹{a€–ØùDP–̺WIÂoÚñùˆþtóWGÿhTúLß"Få}  e*$µì±Ž±•{pNã(ö˜8x;úK{aøë#mï¨Ì+G$ÑLÛ¢¦é ÅÅ[ÁLÛƒÃýã°û>°hõ‡3mqϨ[jÀ nBÜ?¸ñˆQèÚÚÚ´ÔnÜ-žžž¸·###qôÙ³g8€›œ†v3"b8D®7ÐAÈs"ôѲöù*î¡y+´Š–loo‘p«C¯•yñDBÇÁÉΫ]Rä °µµ¸:(=º9xÎLQh} 3º¼———°XÐæÄþýï755Ò»ººÀpü:´çñãÇ€!Ò "ã¿­š… ¤GÃ>|XUU… p7 2Â<ýÐxòÒH7ÕÒ2ïHåååÁÁÁ"¥E©Õ';©û÷ïã¬ñÑÒ[JÕ:Û [߉Æçã§ŒŽŽFpÛà¹CËÚ %ZŒãYIöH‘& =ÚÖ;,,½‚–臩•RÑà€ D¤ÛžDçɲê‡nÞ}L}ü»Ý´÷‹Âßèla÷+€°ÂÐÖƒ<`ÛÁO -'“÷Û´êžoúOXF%ù Œ/Ȭ™.Î%f7Œ„¦•#úÏ‘²dÞi®Ø•Sgí²ÁB Ϩ$î=3°J.ïL¯é¿óðÙÕÓ‘í#ê-ƒ›ÝbÚ ýjÛ†" -o·öؤXÝžTlN,mN.mL*XØÄßÌÂfÚâ«^ žw@ -n<¶h5ÜÏx¨áq†'&»%%%Û*!wîFRh¹F$rZ; -· ÆœP p<4q»Št€ÅÅEÑòH)‘HfggÑ üüüP êÅ5Gßwpp@ó˜ã§¯E¤ÁÁAœìiþÚp…q} ;ݹs‡ÒC066–ÉdÅ~J ú-ÐCyö2 -‚€ÿL?! |þë_ÿJª›‰ƒìä¯ Ö‘&è«B (UËc5¿,~PRÞN#vâ) þö?NªººZT>n œ/ i²(®¼½½={(ô ‰‰\2H¤‚Ö)·$ÏðTê¼q…Íÿæ»›w}ãõ} ºG‘ -Œÿþåa¾|Rå}»’9º†ÔÊnP艞9 ˆ;VÀZ§jë‘>×g®Ž é[»#ÿûÏïiϯž ߊ³ê‚“‹ €@Ó7?ܸyïñ?þùC@\>)<³êD+謁GZ|½î"m~é^Ó;~BƒéFêžZ­îS¨…%ü Iú`¦-nZæX‡‰µµ5õ&ØYPþ‰H¸]é(°@÷§Rm]#( Pc„D¢»ýða¾•aB™‡A§áKi˜ ¡¡¡¾¾¾ÔTÒ‘7ðç|úùRD‚ÂåhÅéÃD ‡€,à‚,Ú €3þ ÇáWC7ush§8TSSCÉ/žpö.rff&,2`оR}2‘€DЃï¢%8 XX!‘°Ÿ<‰®<¢¸ì-––JÏz!/òEB €v‡¶áº¼¸Ù„ï‘‘ ‡××׋ˆýÄÁ_šÛ<ÎH A*"†ð=ëélCHéµýPT7£nv jLAëtt®Ì9(–ˆô›¶!Ëòè…‘_LÒ߸}ŸühkZÇ6AÝ"“¬:F$èà•-fíÔyïîê _8dìw²[‡?:Óª5n{ÜídÑC“ÇNhæèäù‹4糉„™Ö|ëèèI©Z*{1K>OĬ V¸ðåÌ X‹¤00«í’|ýG«p¡ÐqÀL(<""AëÃÆÕ ÏÚJ•CO°™YŠˆ’z)Ø8 yrrrHH­c)"Rvv6® ƒˆ´ÙO&þ¢ -è?¸¶´â%¬3´ -” f8н·¡¡A%´ÕÁ¨§èÝ»wqA`°ã1D¨<‘H(¼½½'ÜÖûU'€%™­%HDú,1ãWæNd£þqyÆöÞØ#눑YýÊÂIÏÒYßÊÚIßÊÅÄÁÛÒ-(K6¤N$SGß—&v°Ô~}¤ 凌2[¯0ÀÇGšy"‘`¢p#;O´“\,ýˆdooWÑ:šZÝwbp IêHÀ`‚[lzK@: 4mssó´´4ZQ ÏtF$fŸ·h -?ˆmcc"ÑS70yBdŸÌ‹9´…zgès•Ð{N&Ç£TkºŠž¿ØÏžË¸ÃÙÄÞK2 §ªÏ¨„Nf&é½ÛJƒŸüD9PÏÐl¤ÇzTÑ³Ê ý¾¨WôÑmX%Ì‚~úô)ŠE›™ŽªÙ) €Ó§/&.\@öm…Z‹'Šº²‘Ћ£rjËÚß&šH,mÒªûT&Õ J(im€ ¤ÆÇ/%—w Ø„âÖ<ù åÇ4¦«^•÷’Ê:X–솑è<\Ñ™RÙE/Ø‘8¶ ‰ÞZ³êM«îeUÃÆDÉäï;¥²;ヲÇÒ_9"ÕwÎ'• Ÿx7¥…¥J,Þý_,æ²úº/Ûž ^EäK ³}~¢É°¢O–‹³­¥kBï‘ø˜í+'/_¾äDâ"”Oþª‰¬¬ïξÞ:ïÐØÒ>±ðæ*:-Ð:Õ׌H{û‡½Ó«ç]‹p'.,WˆH»û‡¯ÏH°´º)-êPû‡×þwäDâ‰tÙˆÔ;®x螘טߜߔץí_òÿ< ÝÜÞûséèèhqq1##ƒ½—†Ç¢Ø`¤…QruFT©z‹I®‘(š””„ÚY4''‡½Çßòòr7Hц††ÎÎNÅ6ö|­é·\8‘ΉHú!+;¸ÇT*“ETeÛˆâ™wþŸ“HÅÅÅ~~~¡¡¡...555ÞÞÞˆMr¹ÜÓÓ3**ÊÙÙY¡Ptww#*•JœœñððˆŽŽFtpwÈ,¢111NNN¨‚I¶¶¶ÜÝÝQ”««+¹ËDáoAAR5 -4óòò¢Ïúáááô…xTª¦¢SÞ%9‘®‘^oì)Óø;4³l-­¶©•õ~yÎ3334mêDÙÞÞ®««:ƒ@OGW…v¼gªž“AQËËËMMMè¿ÉÉÉ£§Ymyyyà8ZXXb°Yi%%%h$›†_]]]__ONi•*wá2™Œ `hoo'“íïïÇ)a”ªQ^µµµ)))ÁPpVª&à .âRõ²¤ÂQ›¿P¨ÒÒÒØTD.œH׃H Òúîѱ ¢¢’òhñõúm‡ ïÔ†½ýƒ/Ûž¶¶¶—¡ ÙÙÙIMMeƒ`D C|||kkëôô4ŽÒÎÓ:!!ÍÔ›ššBž››#?×(™HŸM$ôq(0lô¢h[·Q³A”Õˆ DÙ«þÍÍMáüe‚(–CÅ -§3£XN‘]8l ÅÒH!2×TòÉ‹±páDº¼VÛúéPùJC3¯¿1Kêû}]Mô5(YYY4ô}¼¼¼œæuRò+ f«¡ÄááaèHF“m‰H䌉Mº -thÔË€(6ÂÁÈ.xIj†hÊ<!æR:†p¼%:5Œ&6IŠ¿ÙæÂ‰tñDªê]è- -Û{"U¾^ßVYlªÿTZ“Ah¥H  -`RZZJ:F~~¾®®. Ø 555ïJëí… ‚^OoBð”G–¢¢"¨:4Pœˆ„daaa':¬‡JH:¹^…á&è‚êDZÔ$6AÃÕÕUXËÒÒRHHýˉąéâ‰þì‰ÂÑIVÛ±¡<>ttt¸²±cZ!$Ruuµ»»;$2g@$èKÐ:h± Jcee%“É€===Ú³²²‚,à­ÅCä*÷Œ·Ðj*++¡\1 ÄÈÌÌ„&ú´KGøÞ‰³ÄÄDèo ì vB•JJJ®˜Á‰Ä…érZm*"½ïÑÇP:AGy%GGGz5Í2‘ üüü$IFFéH¡¡¡Ðy€2ggg"’vBÕ9mÚ>ÌC$†¢Åf|_9994ÇJ“³€.„ŠÈTD.èZ¹¹¹e‰ąé’¾GÚØ^tôGøïõ±Žô‘€—­­- †æÆG666 ÍÍÍ4?W©rÏ {mmm&f⯎ŽÔè<4sŸ¬¶ååezŸsa`♚š²DqqqÐŽ677Ñ¡ïo¥jöövQv4*0Håq0÷hÖ'„iYœH\8‘.'‘†ç×VçÑ,®n/¼9Þ_‡5'$Rmm-T ¨7´J$ˆäïïïááÛ­º\YXX@SRªÞ$çååY[[C?‰ˆˆèïB«7`×úúúôôtÕ{aŸ¨ -ô1Æ+777ƒ÷ÂÖÓ E¾¿EÒÚÚÊ>ߣ.°5r9‘.§¬míἊá ùiù³éŸæIO|‹ž‡â'¾ÅÇ>EØ/$’HÔ—Ÿý4-–ù^„«U\€p"]NéŸY½¢ÖöŽ8‘>“H{û³Kk§…ÝÓÇ#ÕÔÔ°%L¯¨p"q"q"]6"i(õóåÍ3—<Ô´Íq"}¦Àî-!ûÅehhH4„ì "¥U÷†¥WªV3k‹Î“}” "wœHוHV!òÈ¢ÁKÌ‚š8‘>SØøÒs’„„6鿣D -Ϩ4°>^~6µª'±´ý¼]¤q"]B"½YÛ˜xCahêÝ‹ûˆ–˯3[‡Ê¿‘БgffúûûiøúÎÎ-c{¨’ÈÈHÿžž…BñôéÓ¦¦¦ùùy¥j-Ü•¨ÏY[[ëííeóé:::Èï6rµ··OMMѧCZQ¶»»é—––P5Ž’C·oߢm(ª³³szzUw©„f¾P.K/ñÐæ^(†è¡.rÔ -U#%ÎM¥ÁE@kÑd¡Ï(çŽà”…DÂeGíô­DH¤ÂÖéøâ–ðŒ*¿Ø"RFmJe·ÊiZzÍñºµ­SñÅræDH$ìL*ïM+̪¡f3êKÛbòCRË’Ê:(þ&”´†¥W ®ø"9ödɆغµq…Í´¼í±ÇÛ²v4&»a˜9@9’äN¤ó&ÒÆÖžw|ÇC»Êßl«ØUh»Öp"}TÐë›››333ÃÃÃÑ¿…áïëëK^HÌÍÍõõõÓÒÒ ~üôÓOaaa´¨Hcc#’ùøø0ì°~Šý±±±ÑÑÑHO;ïÞ½…i6Mhh¨­­- ²ÒÕÕMLL”J¥AAA¦¦¦Hìêê -pÉd2cc㘘€-Auh'Ð(úÔÔTä -H$JÕH æéÞ½{ÈBõE{üüüØH’ÅÅÅ;wî Žqú(3$$ÄÚÚšÆÓ>zôˆò‘¢ôôt\ ´M: ”0¶÷¶ö¼4±#"yE¦Ûz‡cCš[oîÛ4õÉÎ'¢°mZH ©£™“ß cr à“ýŸ» lÜí¼žXå6/m-ͩ׷rµp Ô5w|f`©r -YbâàME1ïH€Òè[¹×¶cŸ#Æ6H†ò9‘þ¨llï5 .míìŸx¥677õ U ðkãß³çÏuõ ¼b+¼c+½bʽbËo=ÐcDr I¼qûÞ~}tÿé+÷Ð$öø8;à7µ÷‰¸÷D¿8+x*Ùy‡Ûz…±G›«$14µìŒp38ưô~QQ9uAIEÿºyyð\ß':‹Ž~-"Añ@wC!Ð+pIÑÑÀ"¨ÔëÑ‹Ù| ƒ†T¡ozxx@É1D³Ña‘‘&ð>~ü˜vbe’FµgyyYXXÐ;‹ ÀˆxõêC¾h¡¡|` -EaÐu X__'.л -Œ¶¶¶ˆHfffl%ooï4;EDB™( HrI¿ÂÅDÛÐÂ/^Ð eh†8SR‘Àð²²2”® -îH¸[JÚ )$""AÁÉņ¶àCªJkR'RAë40’Q;à›«gáLDz¦o‘VÝ[Ð2uWëe–ìXÛÑ6²ßP`XzåDÒ³t†‚5‰¼&ûe{ü"0¡€y¿åDÒP^¯m…d¶Aá±”Ôή¨'015]]}»·°‹pp¸wp¸ X63373ÅǾÿî;F$+w ~ÖcͶ~È%(QÒ‡Eºqryç{]·ã•…4gܸÁì}£°L×Ì!"³š¹õ‹É9ƒHxÌÚ¸ƒBÅ3.$¥÷§êþÄ=ƒÛ#¯yâ+IèA’:éíÛ·MLL Fq"‘`—ݼyÉÐÇEŽ}¡l° ÂÌ«‚нj„hiiùý÷ß3"Q±8rJ«T¹Š£ÕQØ’&lþppQ]ŽŽŽ Ô‘˜I*û‘õŠˆž(UcÏRRRèE ÍûÇ?þ!ò"'$4+ e¢ÁÂ…‘A$ô}P…!"y)BÏðÔÂÖ鉔×é5}?þûοyhæìG ê[º¼0¶!ßêD‚j’ZJÎãEã‹[Ð6ÿØ\òoBDBKþò·|øQ"uuu;èéöööêDÂX^lQVމ‰ ²@M"UGH´h ½0·³³eG½ä,‰ É$ <;ƒHHOÓ!‘`uÂX•¯N$XŽÌ3/K†ª ´ àäbØY¤ÛØûFÄåYº"úÉDBF°XLAIE¢ì'ÉØÞËÊ=Ø7&û_7ôË#mV2Í‘P´#dA-™õƒ' úÒ3}K(`¨‘‰ËùijjÊÓÓ“Þá ·B.ttth-µ3ˆsÏ××…Ý“½Gš››ßh°+Å&%% ´°›:‘ -0mÈÊÊbïjîß¿+iЙHñÅrXIà½ü9‘H>ÒLnäjùÉ+3X‚ ®è¼µ÷H3HlëCŒ)£nÍF§@—‘ m<`3b;[6|ÿé+i´¯G/ŒÈBäDâòʼn«juÃååeô\tºÖÖVšCÍ–kØzmmmH 塬¬ éÛÛÛE#¾jjjèSB¡€*\°r°åÄÇÇ£³ ‹ŸŸ§õo)Š$ÙpzóŒldˆ0B_‚2ÆÖëfµ0yðàÝñ ç+oÀ2‚Ÿ¤¼AE,//‡†‹STTDGGGGST:22ÂZKD -Ϩ¤÷½èÝÁIÅ…mÇj´¦§Ç&Û0©LÌýtÚˆ-l’æÖgÔ%Òäe% ˨ì¼#Dûã‹äQ9µäUÉcE\‘ÜÚ3Ä7:Ë?6—AŒ”r–/ŸK¯@- $9¼8ör[Õãà/WÉ.T;òœ p¹Jjiã -% H*ïàDârDº¢­­-Ú"EÿhÆóÓFHZº{F¤ò’œHœH×LâââD{…Ëdižñ+--ÍÌ̤(Ô!67„Z…’(º¹¹‰z¥•@Ë‚‚‚äädî¯ 'Òõ&à3??Ï&Ÿ"º´´ˆE‘~nnŽ¢£££ˆ²¥;¡)!Ê&¢Ò -3Œf`Š%µJÕzV(–Eß¾}‹zi9P¥j<Å¢;;;ããã(Šæ•à/T2糖 -\8‘¸\]"qቹ‰ N$N$N$.œH\8‘¸páD≹‰ '—ÓäèHypxt]áÞ8‘¸p"]™}½u'õ÷M¯r"qáDâDâDâDâDRª|ê ½Ý©¬’#6ºòO%ëëë´æäù‰ÖFãDâDâD:MÜÜÜØô’ÝÝݬ¬¬?áå®üNDb‹Ór"q"q"1™™™)((8HZÑœHÖZ–‰‰é󉤭­ýí·ß¾|ù’ˆcnn®§§GnË`¹˜˜˜(UÓÖ<==utt|||„Ù÷÷÷›ššœœœž={F ŒXZZÆÆÆ ÏÏϽzõÊÆÆ†fÌ………ÅÅÅYYY!···ŸŸªC–®®.œËóçÏ### ìíí±all¬««‹V)Uó‚mmmÑTd¡ÚÉ×’¾¾¾p~\]]©©)Ϋ§§G©Z…@"‘`¿¿?³@GGGQÚ@súPohh(ʱ°°èííeDGù4 ÅâR°bIjëþûÿýë¿nÝsð‹"ï¯Ì{aH^ÏÂ3«î?}¥cæpûÁSì‹É) æþSÝ[÷µœƒbUKô÷ý|ç¡û‡Ï´l’Ë;U>†lµª{¢rê´tMþs÷±ÈY-'—‹'’Ð;ˆ¼¼¼ þ€!D$CCCR¥@*õwJ `Ž¢èõäaÄÌÌŒüÞ*UÞ°soo]›´ŽøøxT±¾¾~÷îÝŽŽð‡€òøñc`|¡1«««/^¼Pª\#!¢@Õ~ÿþ}¹\.z÷…ö”••±uœpvÉÉɨbpp|½¡p°UJÕ¢R¸(''',""I¥Rä ÈÑ àÉ\ý -u¤‡Úiս迅m36î`QHj™‰½y½qû~XzEnÓø“WfäÝCH!)¥9£é5}€’ŠH½ÿüáçÀ„ä2²õ N*>v"gëžß2“ßøóûD¤_~{N%0ïH±MIeí8ôà™^Jåñ{*3'?¯Ètd ˆÏ'Ÿ¶@œ¹KjqŒu=và*I0´õÈ“Op‰Ëe#[E1"mmm#؆&#ÌNÊõSôYF$¶ø2AÕ¹qã­¤"©ûº%ïH8ò,©<ÉÕãÒÒ=íoûÛ/B„Rµ4œRRh¹'l %¹¤aþùÏ>}úTKK ŠŸRµ4AEEª¾}û6ó׆BpAØ’t(ŠenMÄDjþËßþêÍÛ÷^𨑠™_¡w$‘¢²kŸXݼ§õï_‘À“B•K53g¿À„c7%zNÑy2aF!‘ >‘ Y¹ßzðäÿüåÿ£7çw¿Èk?.¶ê—minýß¿ùu}ã–ƒŸô˜Q¯,œŸêYjljÄå+ ½½’Ô á{$‘X¯$#N¨#Ð1€ ¡ŽÄ“„Mçê꺲²•ƒ¼}2‘Ð<(?¨ z¬EåIÚH ž“´îˆTZZJxéˆ>99yô~àÐеµ5Î%;;;!!ûÉjCuP«P£z±ŒH0…b ›IG2¶÷Š+’‚ˆH0²hû "Á:CJèH L* ”£CŒH.AqPr -Z¦¢seB)·yÁˆH.–nAǾ՞è’Jfîì”åË'üãòˆH ¨Eöš0Àx4wàDâòu‰VÀrqrr:›H0¾ÐgmllØm$@Y]]¯¯/$öIH$0 -¹ÜÝÝÑ—A˜cŸL$˜TPrBCC‘†ÚžH$PMeç"¹±±±Ls í@ç¡/‰sssЈœ±\E2"Z‹³ƒÖF±b™£^"’_lŽŽ©½{hòñkœìn`”£¿Ts"Ñs É?6÷D"Aù±öynheâà p»]k™|alûè…!ô1F$iÖo/ ô­\Ÿ¼2Å_•#¶n#;Oè`6n_ªÞ#µL%êY8ÿö”#'qØ~ªgNuq"qùŠDB_ã\Rª–Y£ÕèU6% û¡!)'Â7Û -… À¡ˆˆZIY˜ú[ Q$ÜÐTìÇ+„j!²Á>¢ÄÌÜc/ˆ(¢(Ûh'->ɲ ‡ÈÁ%t ˆŒÂ%Áqˆ%£ÓÄNmKq²¸&ä¹Ûäp\T,#̫̺Á솕š4%†}D^# Ú¯z5=L¾­Y@.Ú€¶ -!AVý¶ yïk2§q4_>©J<% -)ŸX²£ˆfÖæ4Ž/lÐìʨ@½T>¤×ö#cla“¡;e„&†£P“r𯍨F.Q 9‘¸\<‘>SÐI¡W@Ÿ"›H“Q…,ôé<äÂÆlCùI5ÉÚC"ôTûÑàmêècãjã*Í­ã_ÿ¹\o"A…€ÓÒÒÒÝÝ}¢ÆòÕjÛùqrgï`ymç¬âMGWw³\ÞÓ?¨XÝÒ<ãôÂJk[;2 -­mÿ¡J7¶÷9‘¸\-"qቹ‰ '—ËO¤ÑÑÑøøxì9::ÚÚÚšŸŸ Côððp{{{uuÕÏÏY`míìì`ƒ¢ûûû{{{,º»»‹=,Š”HÀÀÀååe”ƒÂQfTT³‰MNN¤÷ÀHœ““ÓÑÑA¯ŽQoYY™L&#˱=B“\8‘8‘®‘jjj$Ixxx@@B.####ýýýŠ®®®   èèhpfeeô ¨Ï,nˆÉIzGííí=66¶°°@½¼¼úúú€moo”P%nhh@3•J¥(Šfc¼òõõ-**B4)))""Í ÁYYYh$j§AÔ\8‘8‘®«Õ– ݃ ½ÎÍͦº»»)ZPPÐØØ(—Ë)ZQQj1—‘õõõ8Dã!­­­---(¢===8JCš•ªÑ’HÔPÊRUUs¹´´TZZJl•ªñ¨ü¡OêÐÇPlzzúå|Î…‰Ë—"\lX¢*FÙp Öö#Š"¢Ä¥ê³ä´(R"ýiQXy(–E©%Øst!ë¦ráDâòµˆÄ… 'N$.\8‘8‘8‘¸p"qáDâÂ…‰ 'N$.œH\>Mf–7§–6¾V88<âD≹IY×üW\·{ 'N$N$N¤/B¤ÚÚZá"Ò×O–——e26&''Ù:–š ®s]]ݧÉGš™Y7À‰Ä‰Ä‰¤¹\WmlõÈííí……¥j¾L||ü‰‰wvvÔ½ Œyxxh^oiÇ ­ºTÖNË>ÞÚÚZYYÉr¡/¢¿ —%ÙØØhkkkllÄ_šòßÛÛ;55USS³´´´··700PQQ£”e¢Æ††T:::ŠbQQSS­+‹öŒŒŒ`T$CÈK+`ãtš››%7CCC·oß.))™Å!”È„rP [|¢P(^¾|™˜˜Ø××§TMÖCíh!¥ E¡1(ð…K¢ d -Wá¶qº«õÒ#<|ˆÈªÎi#µ²Û+2Ý=49Wµ´¬$¹$®¨ÙGšSÐønÙÛú¡°ôŠÐ´rIJ -E™] ]Kèž;£¶? .yýcsEkÒr"q¹ŠD^222ÒÓÓ333ŽþÑDª›÷Û{9ÄX¸‘¨ìÚïoܲt¦õùcòÍœý]‚ã­Üƒ3j Àôš>$¶÷´õ -ûßo¾gú'—«K$ô2ts˜3ÐR©ùùùAA‚ÒB¾n•*ï±Ð1 è§D¤ÐÐPZ®Ÿù 5AÁ000Ö‚^“zAKñSâ®®.Ò1Pûââ"jGßÏËË#"AÏ¡ù¼€T,¤¤U@¤/^ ê££#À'77—&S3rnnÔo¿ý&r¢$$’©©)tB¦2qqq!G·ôÞ‰M’O(F$P„ìïïÇ¥(--%"•"sOš]}†/m#ð'µª‡¼)H™õƒØN(i1sò#"=Õ3gšÕKS»´š>l%"#6 -,\a æË'nÝÓâDâr ˆÓ&,, ]:  ½¸ðôôdÎ%Y§†ÕF -ˆ”““#:ª¯¯¼È(zKC®oi¦?ȈD¬)AHHˆ··7Â(OòŽD( ‘Èå®Råêà&3É[Ó·ß~{‘p²€Ô$ÑúB"ÅÅÅ¡¨aÆÆÆB"¡ýÚÚÚØ¦Å£ˆHB?nš)­º×ÐÖûÉóˆD^#S*» m݉H¯ÌXú‡ÏõÈ/ L9K×@løÅæ8DµÏÓ7N$.×€HKKKèM°VСnܸADjnn†"\ÒÌÜæqØqQ9uêDòOñ‘få·LY¹K"³jŽ}j6AG‚œTô÷o¾ãDâr=ÞlÃC?…êLŸ¢ ÕÕÕP ôôô(Ê”%tjzG$—ËiõHáQt[h80Ù Wˆj` B{yzzz°L`FÓÛ·oKKKdwwwI` ‘ú!,ÀÌÎÎñÐTÚø€fÂdà†µµ5¬ªŒŒŒððpz-æìì b`;‰läò—{`´²v®®®"­DWXXˆ‹Ãú( nƒ–‹ˆJJJÔ}0·MyE¦?x¦>X{Hˆ<«Íúöƒ§°¿Hó‘ý¥uŒƒ’Š(ABq‹ƒ_KàØz…=|®šVÁvJsëŸè™™» ;'—ëA¤ ÍÍM(;;;[[[‰‰‰ÂR×XþÐIfµi’Ê:`Á´N¥×ôéY¹ä·Lr"qáDÒD"ØzÐ`©Éd2¶Låõ–Ú¾ÅÊžy ÃóWÆå]sš§GȬî6µs{øô…¾¹}LnME÷Gw8‘¸p"qá‰ĉĉą‰ '.œH\8‘¸p"qáDâÂ…‰ 'N$.œH\¸p"qáDâ‰ĉĉą 'N$.œHœHœH\¸p"qáDâÂ…‰‰ N$.N¤ØŒ¢é¹ÅîÁ1x¸B!¯\Ɖtýˆ$‰Ëìêœiîìã‡+pŸA¤ð¤Ü¨”üÓBdJ~HBN@lö§ÿ˜³À&ûˆV>Ì#Oÿ!$qYB"…&dac• —«& -]gicskçtÙÜÜ,mè–õÏ·,~BhZ° ‘W÷.4-ñpv°“žñ[TÔËEDzÍ…Ë”zyÇDZ[ß8#ï¢Â+:gpJñiU+–V@¤®‰×³+›<œ\¤m»{{g\LÐN$.6"åååÙØØ|Y"̯míî_’[;Ñ6¸äÐ_846w‰æ×!$’‰‰IYYÙÙDÊÍÍÕÓÓ§ÕÕÕAAA“““ûÛß´´´´µµýüüFGGyàrE‰”ŸŸÿßÿýßVVV_–H£ ë»û‡—$äÕNôŒ®ø$t&Ï*6.OÃy®u ±º¦ff/ò4O #c“¬=c“ÓçZWßà«kfnþ"Osbjš‰Ë'KS[·$!7­¸þBrAMLz«:4!û\«ó -OfuVȤé%sš§…øß?AÆg%åUŸ_]®Á ¬®ê†Ö°ä‚‹9ÇøœÊ”¼2N$.ŸC¤âºŽ™å­ £³oDDšYÞ<¿ê$ñ9B"5÷Œ_ÌižBã³…Dš^9¿º‚ç"UÉû.æ{Ç8‘¸|&‘Ê:—Þî\@˜V¼Iñvûüª Iø€Híýsš§œ¯HóoÎóÜs…Dªk¸˜sžRp"qùL"U5u­nî]@XXYiuc÷üª Mü€HÝCSsš§¶çC"Í.½=¿ºÂ? RcçàÅœãÄÜ2'—Ï$RmK÷ÖîÁ„•·›""kuÂ^ "õN_ÌižDDR¼Y?¿ºÂ“ò„Dj麘sœ]|͉Äå3‰ÔÐÖ{pxta}s[D¤ƒÃÃó«.<é"LÎ^ÌižDDZ]ß8¿º"Sò…Dê蹘sT¬¬r"qùl"õ|ôN«®©µ···°°(.)ÙÜÚú´ÛuMHûG¤á‰i~aAOM›šÏ‹HkçH¤ˆä/C¤Ý½ÒÒ2[›êêší³Ó/®¼áDâò¹V›¼{sçàì—01=·°ôÚ×/ ´¼’í_]ßêì铯Ä~´„e5«msg_“Œ6vö‡FÆ£cãÐ MÒ‹¬¶¾Ñ锿½ÿfm¡²º.HBÛ°¬4oáÙAlµ½^Ó$WLl|gw®óªKdµÉ»‡4É•WPT[ß°üúíï?Ù›µ¤”´é¹Å©Ùg7ykÇÙ%Ìp«Ëy³½±«I˜_Z mhn§èœâMlBRxdt{w¿&ÙÕßl¿Ñ¬^Åëõü¢ÒÐðÈÊZÙòÛ-M²¨½ÙžÔ°®ªº†àpaÕÅe¨ºxœöÈۻ˫ê¤1q™9y¸{›m ruõ á -ÇÆ'Í,¬¬j|¹BEo¶;5É51³Ÿ˜)E¥âCÓ ¾AêûEa|–¿Ùæò¹D*kèT¬n4LÌ¿ŽIH‘µtÎ-¯/¼Ùªoîprq/©¬ÃM¸¨Av„©Eñ× 3öMzûÆ'g MÌk˜Aôõ¿­BÃŒeÕ2ÿà0-­ªIH­kj‹ì›Áž¸äôç/tŠ+jS3óÒ² 4,VD¤ñù7fœ˜[.©¬wvõ¨mjÕ×ìÜE_ÿû5¬kvi µ¸yúä•Ï­lÐNüÄQ±‰Íí½óï÷œ†ø×.ŸM¤¢ã’› aÑ U²VÚîspñ”Ƨ O/k’—ˆÚÉiÍ2„Dzùuôk^‚h„dSϘ† Ëë|CYÔÈÌrlî56rKªb’Ò±–˜–ƒ‰Å53K[ ‹=i„¤¦ç‚듘nïìÞ32£Iú“FHjZרܛòÚf#3«ÚæNÚãí/iéÖ$oï!Éås‰”_Ó6¾¸þÑPZ×Ò=2Ç¢]#³ÉÙEþ’ÈyÏØÂº&%ôO­ˆˆ¤aÆ©•œ’¿àˆüòúÑù·šdADªïÕ0cni­—‹˜ZN¿[\Ï*¬ŒŒOÅžˆ¸”Ø”ll N¯Ø8ºjXl至Hz'–4É…KT×ڋ뜔YÐ9<£a]Aq©¼©WÃŒ]ó!Qñ¡Ñ‰ÍÝ¿_.\vœ©&Ù;†ç9‘¸|&‘rªZgß~4¸zV4v ÷ôO¿©mô•D%fkRB×ø’ˆHšä¢00³Ú68Ÿ™Ð=¦Ð$KPÜDªnÖ°®Ì¢jwß`MÍ+K-oèð - “uüR߸°ª)&%'½ RÃbEDê]Ô$Wrv‰Opdmë®¶æ—+ 6[H¤bY·&¹JëÚ\½ƒJëÛz&–…ûͬZú§5)¡e`–‰Ëg)«¢¥wjõ£!.½°®cD}÷äëìR™&%´,ŠˆÔ3õF“Œ,ôL¾.¨ni^Ð$q`ìDªhÒ°–Š¦Þ”¼ -mYŒLÌrô¨hî£=ÁÒ$'ÏW_IlZ>ŽjX¬h¦mËFgkÛ=±ò‡®‚ÌD*¨ëÒ$WaMkëàœúþ°¸ôÖ¡yMJhì›æDâò™DJ/“wŒ¿¾€Ð<¸ "RÇøÊùU›%$RióÀ+92146ý橱îüÎÝ/&KH¤ÜšÎ‹ù‰ëº§8‘¸|&‘RJšåÃËêûæDD’/_u1©°¡ÿK•“Q’SñGs‰ˆTÛ3s~çîý‘²ª:.æ'®ì˜àDâò™DJ,n’ *. TwÏŠˆt®ÕùH¤Üú¾‹9ÍÓ‚ˆH•]ÓçW—·4SH¤ôŠö‹9Dz¶qN$.ŸI¤øÂÆšÞ… åÓ""ku~Ñ™B"eÕö^ÌižDD*m›<¿º¼¢> RJYëÅœc‘|”‰ËgÉ?¾ ¾¨ùBL¾LD¤¸ó¬Î3Æeûˆ$Õš³8Ï.z -H¤a–dïû0Ð/O"¹«EqLˆ$Ó™øáÇœ2Xìh"1Dª¢ÍœµxM$©£> -=šH²é¹,ÎÖe_‰DbKþñã˜@ÄýDò‡£EÞD¢Ñhz½>mw¹\8.¯ÿDÃÕJÕÐÐÐÒÒrDÊãͰDb‰§Š6sâ‰í "õ¹ RÐDR,Yœœþ‰È’|ÿÃ?rêé³çþ@ÍáVUUݼuK«Óñ^CÃù Êʾ á ùìçðÕÛ׿åã™qŽä ®åÜD(}êÔÍ›·Ú;:ôÃo¯±©éÁî£|<$ GMMÍÖÖÔ“É$‘Hüä“Oò÷ÒÒR¤ ‘JEEÅ‚Ïç;„«¶—¯åÍ!íþ«6¦x*Ï.}²÷¬¿¿ÿñÓ½´åF]Ý«œ•ª)…Rõš9ÛLe)Ÿ­ªª«/•—·´´ööõEV×~ÃqM³f¾@ð&fP¹H -½%‹³ÍQÈs$S’ÏEýôŒ O ­„VwŸñx\©T2™L4d<›ÍÿS§N!±XŒüýè£hp–5==¬J¥R -…"‘H–H¢Ÿîlk &…š!¹J{àmºP•g—ªuzèUå”6m9¡ìUÎ|¡˜'½fŽ…×ûï#åµÃtT¦9[woÿo8®J­¥PiobÖðäû®Ú&usYœç–¼$ž!Þyü<§î64-9½Æò+‰úoí<žTªoݹgYpì¼|Ó4y”víF½mɉ8¨´ɤò~{gíµžTS{ýnC£Ë‚µßµuŠ'äÕµ×{qƒJÍtSËw0ßy"éΣç¾àZWoÅÕJ:‹›xðœ;»{f[Ý­Û¤g%‚ìöÓÖÞ…Ä—_®pzƒù´ý‚i Ò’'œsÊC*S½làÃ+•ˆq#ùìwî5Æ6w`‚ä‹& -Ð -¤u;/_ÝÜzŸ@9Sr6¶¹Wxôƒ‰W[x<ø#—ËE"ÑÙ³gN722299 œ‰D"È5]oo/¸ÁµÞgŸ}†>Y2_|ñ8ƒOGGG ðâq=‡£±±N½ -K¤—Ÿþïfœÿöï}Uþüç1Ì-"k3>ý(óé¥ÍÔ£î^Ü„|ª³»/žÜEŒçΗ!•Öû,òÐ`²"OD¢ŒA -UU×"C 2ÎÍ×ß¼]US;c¶åsЕµÌ;Ûùl•Ž -æH[G7Tb[;t&·²ªº»ˆ¬ƒE*Sª4zÈœêškjñ7@7$ØÁ#Æ…eOý­ÛÃdJô§tjëèRLik¯ßèèêQª§Û;»+*«˜^bçIÎØ¸“ûîlK4æ,ÎÆ…BÞÙ¤‹ã;{9u¾ìb|çi†ñÛòŠÓ%¥%¥.^º’±Š2ÆN¨<¡Ø„J‹Ìq‘T¡Yïô㉖%7X¨ neõ5«Ýã ­õ¿'ÉT¦7´®Ô™ZîÃÚO>ý›@ªFCÔ²‹åFë²7´1¬§+43F‹ÝÞ(¿R ›€ó™³çZÚºìÞ°Ú0w¯©,_ä~GmÙ7·èúútÉ‚s%Ÿ6f|úoqsnB¤Ðºú„RÅ݆fŽ@ú϶ÓÙ$ÓÞÕ ‹ámÖ¸(MðIJv˜&;{V»÷~g9cYúâËÁX2¿ð„Éív“H$“É„ÃáÖÖÖÒ—cõõõëëëpž#‘H€T`a±XB¡0õ²¤Ý2*À8‰š˜˜€S£ÑÑQÀWÁ¯Ú8²™ðÖcD6Wè¿?üÁÑûü×ôœ=½J¢³¡‰Dá)òé¥éÙù!"ʼnãITíŒ1ž=w©|ñ?'ø9Œ<¦7/€…Á@úMéÍî`ìe’¿pcpž`lÑ(»x)ŸƒºBû¿Dæ³ä­Bc ±Æëo߃‰–e_X4©‚| !0° œ:sòß¹²öÍÅrdÞþ!‰\³²–¸ÓÐŒ'‚eÞáÇȵ„\m 2¹ˆÛ—'¾‚œ#ì -æ)$¤u³²æº+Íkÿ÷‘„ªÙl}n-ä÷‘h¢µÄ“œºX^ál¥É46üýæÒÿZò@ÿKW*ë;éÅ+Uµ¡PÉ5ä±ÛŽÐ8 ®Y{¦ô=Wr®Ì掠çÁªkõPÑší]¸a_tÇŒ—_­6.xóiãêu®@$ÃâJÎMpD*K ƒv™–|½CdW8Æk7ï -ä:ÕÌüÌ‚í+땵u,¡œL¿ÛÜé”?€¶Àª3¥ È|Â|5‘¢Ñh{{ûææ&,|>åõz @ Ô=™LþðÃ_E$à\¸ÑétàRao"!D¢Kõ®µhé¬nµÙ‘aäOYÐD"rå9»ÈÚ¬¹q[1mÎ—éæª¯ß\~Ù·é 9URê]Û†ñÊ´Š`að`\2òÒ•DãÂNž> Ùžó¸6oM$©|9ÜÊÆC±Ò@ãˆ!]!o¯ß¼'iïwã£,XÛ3H—Ne„WSwæý~„Þ‡ ´…>.]-âu·3ü%*C[÷R‡T´:C9c£‰4h"qåÆ,ÎJ“£€Dê£ -=ч9eóD{ð”¡æ([D¢—–]ãù‹——Vâús¥êþa*™Á§ó&aqB;׉¦°„=C#°+°À®F˜Äùë’sHeÚæ®¾qmMÉ ¤~¦´Ì¹º#ÑšÚ{aÏ.Uè<´³qɵ¶*‹þá1ÊvÁE$|>mÄí'’ÆæË¹I/~”Æ›@êjó2´Îê^›ÐšÛz‡ˆ´ññ Òu啵øQv{árÕµÙå Õ³68Âã6µõüÇû,øÖó opì"Q(”X,¶ï¤w`àŸ?ŒF©TjKK‹ÝþóOt›››9NWWW†ºÅl6Ÿ:u -œßÄgmcâi{x'§¸Ê94‘†Ù²œ]LçO¦©É……ο}þe÷ r²’,0 - Œ<¬©»ÓOƒì:}ö¤Βó¸f×j‘òÐôáá$•#†Èåz[uÝ"{§¹½îNÓR`³Gd‰”þ©º0:@¢<] -Í˼oýåtãÁ¢PiÈðç˧[;qH½¢ú†ÉÈÛ¨P&kr&‹ó䌽€Dê}ñÖæ|´Ø’Ï,’˜B2S$TÁÂÐ-…’:ÛC)ÅÌu|Ò¸z±m0!PGØâ{q˜2;µVRg‰§ŠÕ».T™ÐðO¤Î–¨—#Ûfç*ì–!TJ´° mþ¸@1ƒÔçÜkàÃв¥Øm> D¿`ˆ4eñæÜDiZžž÷!õåð¶ÒhŸuD–‚I‰fn˜ÆC³‡S¢©Y"C ÕZÀ‚tȬ3BãËxr= þù„70vx¿"1™LMMM…½§&Ò¨H7Lå[aF Ï’åì"±Úlóm¤aÜÁ‚ίNž<åJ¡ÿ‹ÆâVϹ2òP3ç‚ñâ+ |¹AfXÈyÜ™åÈ>"å5§Ò‡Y<±Ééùy|\6Mf‰&tVº@1ïß„I¤_\Éð_ ¼˜MŽdrÚ¦0ڣѢ°%åÌB`+ÃßhÊôóH¯˜£äŒ"ØG$Æ„!‹³T¿T@"õP Á&PêÓ@$ù¬»¨Â‘R©\ÜÍÏÏ¿¡ï#usþdN1d³h" 2'_¿Ož9÷&†F·B Fê¨Ïo -M¤1‰>‹³PWÈç#uSù¤ÇAè×¹‘¤FWQ…‡;,"½éoH’øZ£g+§h&4‘¯ß‡]Ú›š©ù`‘Žú\W¡‰4*šÎâÌÓ,H]#ü|Òã žýDœEŽšI¤œÏ5‘†yš|ÞôJ•ÑDê§OmæÈ­}ÏGõ¹€çî#œÖfqæLÍò‰md¾ÎÇB¿`úÅÛtËE^ÿ~"‘D3tå‘Qhè¦JØê¥œÂ1åûžØF“mæHgýûˆDõ¹0ÈVî{b_›Å™©°H }T8:&ÐwC 4‘ºFEE^7‰“Ïîò)§ÍÇ^¡ÈZšHý´¢Í %šH=dîQŸ ̓L4‘Zñì,Îíd~‰´ŒøƒaL @h5Ý-±x±…—žžÀ’L¥Š‘‹MÒ)ÃDêá* –,ê¤ÎÜ#Ï·3í˜0a*Z•·ë¹êâ‘DeȽ…Ì–H$î„fooo÷Õ…­ð04çêL˜0­n¬F÷Fd#Y$*¦Ÿ?þ*ª$’©¶!ú«ˆôøñcôõÕjEÿ “)s1µÄî¦c í' ¾Ä¼7ÚØ]¦°96j$Ùæ|ñâ¹MDbIàT'½ˆ~®;ò©ôõï†ò!’ÍfûôÓOÑ¿û~I¤`q> Ó¯UòÁïw.ù’lå -Ö!ÇF-#óÅL¤Ï?ÿyÜÖ¯"’Ëåzï½÷Þyç_éÑÞß1Å’Oˆ7žçrRãS§ÏÀúäx¨™\ÔDúàƒÞ}÷]6›J¥ò'ÒéÓ§‘'…f‰¡ ¬%Ÿ`:r¯>@iëá3¬OއîmEN$„-Èó$’V«}‘¼±]LÇ@¶•šH«É'XŸÝ¶?‘:::~Õ9%X•A$º&°ÚÁt dtm¡‰Øx„õÉñÐm‚¥˜‰ôñÇãñøôÓüò'…B¼çg"©Øsއ´ö8šHîèC¬Oއn⋚Hããã¿í³¶_„Hz×&¦c 3nñ&ÌžD,õÄÚ^ -oc}r> endobj -884 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R /F46 625 0 R >> -/XObject << /Im4 883 0 R >> -/ProcSet [ /PDF /Text /ImageC ] ->> endobj -890 0 obj << -/Length 2261 -/Filter /FlateDecode ->> -stream -xÚ…Xm㸠þ¾¿"¸…Lt–dùe-°‹»Yܵ×Û -´×ÇIŒIìÀvvfZ)¿$ãm1ÀX¢(’")òQô*¤?½Ò:Q©Iõ*‰B†:]§wájO‹ŸÞiÏd]ªbç0]XÝDI¬¢ÔšÕf.äãûoïmºÒ‘²QlV»™²0RÚÆvõ°ýg ×Íÿ´qÁÏ fm¹ÞØÄÏê¢<÷t Fw‘?vkðj›=ˆqÒk½¶´¿¬ÿõð“¢Uæ®6֨ĄéÌ%6ÄÁ§{/»ó_ùYï¾Âÿ"? -q×bš“Âå3´ÊžD³v+ª,Ì´×lRåâ(aÍ?Öë‰LЪ#t%Ë﫦&¡wB|^›4(ý¸:eSÎÃúLBŦ— ˜4 ºWHÑÚß×iÄöÐøÒñ MgVAä -n8”mÕ—°/ÉåÍÉ5›»ÖØP%ÚX2Úûµ5Áë™Âd ÂÚ¼\6íëRXb«¢„rC¶*Qô·B}¼‘“ŠcFIœ&îúÐGÊÁþà]MãGæ­aµÙáIÒˆ§_Aq䦮—xÖ§zŒp-,$jáø:5*´”Wr†c3ÏTàÂPRÂ’˧LµAÓ>uKþÐ!]gR/ìN?(ÈÔƒ·£õ绬µ$#…H\“Ú×ìšÑpt½Ï­xGûl#d”kõ^Ä-ƒ ‘Œ”‡|ºž='DÓŽ^1¯·²uÚTymHØVÒŸÜ.U„¼I÷‹—sP4§ó¥ö¶J\Lì%5\’e\+ð= ¾@\ŠûÉû|£,íÄû¾NÀžü¾N6V½ˆÙcö!vÌzÞöïeF…à [ˆ.äÊSÄW2·0õlÛÖ/oºªjX6Z9Ù±hY§ù¨ôÁQ%84Ùµ”^³ÃÝ ¹g#°Þ´§üXý;çÇ$ÜëBgëC9\6ãÒñ˜F\^·dÏâ! 6аˆËuæø— q¹âj‡12âR¡«°m;¤BqÌ[²—°î”lz8xI»æ¸†|Í%ûhŠ,Æ"lõêX$‹{s“Ý/òÁ%÷„¨ÐtHßßJ|«ãkZG¥äÃ݃K*]jÏܬ0Myf±Ñ‗±ã U‚rAZºqN9›é ¤ØÐŸ*†qRÜlKrRΚ±°¥¡/eÁ«ô]‚dL£X-ÕÂUqg^¯¿C öYBú±µf€Ì’¸ËVÆ;ni'±³“ÞØ³…Ô/ÞÏûË^e|é€ Y>—R#Z¬‰(;mÉGkPŠÚš_›KÅT_{$J‡&’7? -”ño‚ï=ö%(Ehz[ÊëBž=Ư~m›Ý þïKKE (I½ µè1£¬k/g$ˆZñP¡ƒ"ÍaÇÇ»ªÞ˜Y•ô}Œ -0&‹rŒÀeȾŸˆx'ã ‚ÏzI¤ qfñXÊûÁÞëÒJ½”QÈ¥à·[õe-0Ýdñ-rg ^u‹`ÕÆ*tf@¾Œ­]ü,@‰­ß@ÉŸ~[;*Ó²î!#·ì  Ï ¼e/‹ ð\2å®q)µ»®÷•yÐ}=¦&ÝJÛÝ.:å~²ã³È=V*;MyìÖ;XTókÑ‘²<ÁËD;òžý%ßKò/Â6Î:Ô‰zÄ6rý©”…É 'y¼Ù ½|q!^1B:‡ü¼ÊàÉ4Î*¶o¢µŒ¡öÒÔÞ¼ÞUlˆ!åǶ’Ì L!!©`$—â1Œ¼À#q•ªà7ß>7N嶦^´øâ‹•±É ãÅ8 ¿/´[†q¨L¸rw0/|O7 ¿k\GM±|ÉOg™D‚å÷L¿‘¨3fÇœ_ònßȹ#oй¸³<á~špþ,ÃtŒî/¡Žp˜ß%š -5|Ò!(+ëm'Ža¤é5ÓLñ=0ÄÝ -G~æÓUùØX&оþŒ#ÖÝ,þ2 NAêV>ëÙ»MÛz,-©6]„±uØhxÕÜ€JãèÑiµ]é$¤A ªÄR»÷<Ÿg¸räßÌ70°¼N•·‚q†Ïl—Œ£÷lûÈ^•Ã<Ýšhu¦Œ3ñ‰7€wäú†YÂišf׆ýB`çsÎ)[—¾âü΃ÿ£’ Øø´ò÷'t*ŒÃôº`ü¥ö?aбž8íœÕ±»t“ Ç,­1Ò<…ÿÁƒ&&©o®¸_òè~f°þG,ún«“ ŽÕþÀO›îÎkŸ^ý%@nj/à0cÇ÷ün))˾ð©lŒ îp0‘FéZ€H±Vôrzò«z»TrŒS6²é¼M‘ì\>Ûò ÝÌ;™2Á`¾=`è9åZö2ù -d3(dã²X#ƒ§RtU{QÇ…:Ç_Àˆê£ÔÎzØø«s -^¸n…(ªøE¢ÿN=ÇîÂÝ%„Ê=E‹B°p¤±:Dã)ê2 »ô²¡nz¿ÁÿÞñ.÷¿ òYØÊØe%³‡ÃìÕüæêŸ”™V@¶K·uäÙLLKE„V“P¢à›8¾U8þ”þVá8» endstream -endobj -889 0 obj << -/Type /Page -/Contents 890 0 R -/Resources 888 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 862 0 R -/Annots [ 892 0 R ] ->> endobj -892 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [252.135 166.4151 320.2489 179.3167] -/Subtype/Link/A<> ->> endobj -891 0 obj << -/D [889 0 R /XYZ 117.8281 740.0018 null] ->> endobj -310 0 obj << -/D [889 0 R /XYZ 117.8281 715.0952 null] ->> endobj -314 0 obj << -/D [889 0 R /XYZ 117.8281 690.5438 null] ->> endobj -318 0 obj << -/D [889 0 R /XYZ 117.8281 307.7652 null] ->> endobj -888 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F39 472 0 R /F47 632 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -895 0 obj << -/Length 1202 -/Filter /FlateDecode ->> -stream -xÚ¥WKoã6¾çWè(cW\‘"E)‹-Ðnw‹´ ì¡zh{Pd9lK,'q‹þ÷Î )š²ÇÛ"@ÄÇ7Î|ŽyÃ8×,´ŒYó,(7Wqp›?]q JTÆR¥p:±I2™%"ˆ|%?̯Þ}æ*à1Ëãœó¥g,–Œ'iÌ¿‡‹êa V³ˆ‡ÍŒÃBSÖ4ÛÂF–‡%Ž‹'Yx;€E‡ÕóC¼ÅÿÕÂÈÜÎDî‘aœ‡›bU£‘;3íï+;˜Ö=l 3hüsþó»ÏRûþ ¥Y¢óŽŽ_öuÛàø ‰fЧÒ⦈õÆò bl Ž'Y–+Dü'=YîlÊ>úù»6Ÿ?b¯F+˜-Xåf}g¾¾èj¼å§úhë”q'ÉwLõ“ƒ)‰eØé…›nVž°Ø´ZZ.Hî=%Û¸Js4NóqÄx¬fTfÇÕeœ¸º,c…Æòq TmIÞª5µë_;²CÚàðV)â'8Ò6Xœö¦dÕË¡ˆUv¥è*S±ZÚ†¡¸°-6“E'Š )”-Oæâ¡ªÕdeLh!Çuöƺñ43Àñ}G|œÑ[B y¡‹×¥)]|‰ëRr–ó<½ë>ü׎Êùkƒ)b+É'˜üÞjŠ"3§à`]ßÝ÷CR…fqžIr6ÞвhNÌž)š‹z3‚û—ÎØûÖ‹ôäåÌ1SºÄW±Û8ÊY^í ™‹g»á’êÅ´‚KDraV=ô¹¤0z¶^ƒ‹¦÷x‡¢ü^©[dqÌ}ˆZÑ ­[»µ<©² ÞK!)öZ’_#~.H÷£ìbtÌÄ‘6b1Wúòÿužo—åïË¡6ÈÚú/öX¡Ñr)u»éaÅ”XlÍr}_Y85‘pvÃcƒƒb}mv] DÙ6eGzûÃ"‰ìÝAw -äÔš¾üàHCƒÁª1ýj.MDrx% -ó~´ÜQs²?4¸¶×µ°ÉÎÈtíÄ`úMa{f$ol¡øD½¾S5OýÖlíé-ÞYOüêòd"i¯kÆñdëµ9Ü+W9ÓZ« ¯Œ?weÎTêûå“RûÁ|þÞŽŠñ¯}÷ϙڽ®§º¬•+øE9\ÈêqÒ̇cvåÍ'Á¶¾íqÄìïМ³4I&Ô:LtMü¤°«cîTá±R}lÐýB>5ø/Ÿ¤ endstream -endobj -894 0 obj << -/Type /Page -/Contents 895 0 R -/Resources 893 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 897 0 R ->> endobj -896 0 obj << -/D [894 0 R /XYZ 117.8281 740.0018 null] ->> endobj -893 0 obj << -/Font << /F15 459 0 R /F47 632 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -900 0 obj << -/Length 1975 -/Filter /FlateDecode ->> -stream -xÚµYYÛ6~÷¯0òRX3⥣@¤mR$E/Ô@’ ÐZZ[‰m9’œÝýñá4µ+{7HŠë9œ!çüÈði ÿø”ó”e"ãÓTÅ,Žy6]n'ñt“?M¸e’:c‰Öø92;WiÂT&Åt -ù~1yü‚ë)Yç|º¸ -”ÅŠq™Èé¢|ýÚôõ²šÍ•Q¿.zGÍxdG‹vuØV»™È¢~övñêñ •䊜É\$°ø¾Þ•Ä6T/R¦…à–«lfs‘¢ -u¤g×å"*öûãdÑÒ`½³;ƒ­íÎ60È[ ä?†ì‘lvŒ˜tØÑtÎuÂrÛŸsÉ´Ê…ÙKGûäuJ©¢å èµ¾D†÷øÇ|¶È#£ëz³!ê2\Z\²ýèâh«%®lp¿R} ÔaÙÓtm¯ÚfKT¿®Æl-Tʸ橳bõqÔÔ1Ë ˆÝº¶¨Õz‘‘5D’²<ÉÁ‚3Ís -ˆß‘¥hÝF‰WtšëÚXŸvXVh10 ¸ÛÚ ¤çQoOµ£±ÚþÚÑöªiýÎJk‰=?.¿Æ?[š‹Žæ[<ÀäùÂgíDæŒ'q2š*žk²¥Šä0 cž-ÃÙµ0¨DÝ£ÖqÝ«ViÆã8ª]6ä5sô0C?Gê -¨¶²q¶ÄnuÚ@HHÅï3PÀvÖ@Žw*Îè¬Ú£îQë ª}sµA»ØìÄ ]¹4B+5‡Õ:«O0fc×g{EÅ$=¥yk3$e"9ì!¥rñò -×& £ó€:z‡éÜõ4x£¢ kdô6‡îPlhìÕ´±LE#ÒËf÷ ¦‚\sõh ›’¦¤‰=¡ íXéfuItï äíjëäÉÊž§ëMm›ý¨ºq¯AÞ]9’ЂÉT&S­Si¬ÃÀ‰[Ë=ÙMÝíU"XÜòw³¹݆¦CòQYo‰2VEbS¯Öý#·ìòóe_C’¶§ôã׿‰uüãÏ`¹ßv¡ æc¶„£0›†Ü/¦P·6hѤaP=s^ï–Më—¸.C-hk:Džm[u¤”º)ÝÖØÆ77Ã~Xàè=× -ü$ciz;ðÑ5 -öÆ}ƒ~Ä193 ­¡›oL©ÁoŒ3%9m¶”¡.à¼)Ù+JGálø_öÄ^[9EúVÓw]¿Ë#Òåö=fÐ_*ö‡þ.hÔ ¯%PcX.¡¾Boø0yý6ž–ÐJ^Mb¸nfzz 1ã9ÚN$S¤ýÞLþœüâK8%Žu„ÝPYŽš+LÁÁ^ðÄö~,Ð4@ÓŒ»@ƒ«Ò:€ ¶bRÕÅjÌ* T¿\ÙÅó¾-v”Æí““qs–HíVœîÇR‹”?°‡ìçú±çû\üdèí‚Cÿ÷Ѻc§>Û¼Äÿn(8pd%|)9]q^Ô¹Šƒ±°-°8ØV„¥¼¨7ÃKð5†Nm‹A8_wñkg_Ž-ÑaìÓ­ùv*c DÕc%d?+žïó°Û—E -ÚÆÈô«à®áî/ÃF5ÏoœÑИ˚^ªüMéV ÓLËÜ&¬©:þÂë\kÞL°:ê «"üB ¾ìàˆË‘¯ûD¤¸¡ï-… úê°©hŒê ­5³Á=€8\×ö×BÛžè}”Sùf Móqû‚®ýÞÜšÍߺ@iŠ‹è¹y ÚÔÝš¾á‚¹l+š•þÈ7Œ8 *j±KpN ‡—c¡^…í¥0OJÍÁd˜\P™cá`° %c÷^†Ì2 Ž´Á~†Õbìúª¡’ùçËÂÅÈP/Hüøz‰j%ØÑ kBO)FíhcP,q€ióxèúƒs‹u8ýÚ\ŒGß[sÉ€W^}#a£Ù¶`iÂÕá~a:¨Œ½ÿö§àÐ’Çûin¸¤º1XóÐõµu˜_yæÅ¦-p4/rØtQAÔ«ìaæω¯of·ð+ZCèYic©k¶¶)”ÕGóÄô{ìüÅg™‹¥µ_7|·¦› ¬Œ‘ ´ƒ+,;ù¼h`‰¼çqñÈ4òÆ'`6¹…gK²Û -ýÿzÜUøXÓ«endstream -endobj -899 0 obj << -/Type /Page -/Contents 900 0 R -/Resources 898 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 897 0 R ->> endobj -901 0 obj << -/D [899 0 R /XYZ 117.8281 740.0018 null] ->> endobj -902 0 obj << -/D [899 0 R /XYZ 117.8281 654.4772 null] ->> endobj -903 0 obj << -/D [899 0 R /XYZ 117.8281 633.1508 null] ->> endobj -898 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -906 0 obj << -/Length 2307 -/Filter /FlateDecode ->> -stream -xÚY[ã¶~ß_áG3"©ë.R A³Ó´AdèCS²EËÊÊ’!É3˜þúž%Ù£Ý.°(òðð\¿s¨Ñ›þôFëTe&Ó›4 -Uêls8¿ 7,>¾ÓBdãL%qŒ¯+«»(MT”Y³Ù-™üðôî»6ƒTÇfót\FJÛÄnžÊz»ÓVÚ$Á¯[k‚çš×3>ºþrªq0œ·ÿ~úÛwu¼Ñ¡ÊÃ\#Óp³3™Š“(%nŸº³ë³£ Û]”ÄAÑâ3 -ŠNŽõx¶¼tðkû-p Ï^à% ˆEÄÇ®?»’—:Ï«ixð¹n¤”£º#Ï–î¹>° ŠW~yåe ¬»+ìiJTå×VÅQnHþ½?;Ò! ’Ý0 '”{ßÈÊŠÂ<€ÓbD1;".‘5)*”‰qÙ¢/FÇ&c-L¨“Ü–Ç Šp¼¶k†6‚ ÔBtèÚa,øôO;±P, JœøM,´»7?,]Š% Cìt–À yrgTŒgŒ'׿¼àÙÝ̯z6’Ò%RwWtRü„s( ™sÜjvqQ’´¯kyb“c÷]±šÍoìaµÊtè­¾ÂÀ‚AÜÖ,™Û8•Åa¬Á˜"šG‘\Š­b!Wl”è[«È&Ø“Ç`– ”GÁX|ÞrÛ< Š5gç‰ -3ÈG>üïu[®:;UòX$”sÈ øì+t -)ê8&´:1âz‰I^^¨v5ã\Ù|Ï'þ™Ô[Ì¥&ò¡Š!GŠ£ Vø‚O´2¨ïù¾¨¶aæõ~$ï~|š JÙÔ&›8ËTºÃ7 8‘î&ZBÄ;µMÒÏÐgß.6q0¼ÔãáôKûpóz<òë{~üÆáç›T f5¿íþÄO1(…þÚ@nÅQ„†CG9Éôq›EÁµe”?6O99òRˆ É·ÝȾf Åœ‡uÌ‚~5¥4gecÎ]Û}C6E*K¬hÅüµÃ°$°uÏ’ŒæL0žDX‰çšIA{­ím°˜#ˆãWØi#ÂÞœØÚ˜…õjB©¢É)!€üH ßð‹ {óêóHT|£I:c`FlR‹…‡p¯ÀŸWY¤ Èý÷P'„²µk׊ §K’'fGþ)yޏ8¦`ÍÈ[I&2­kÂóê=¯±qûWæ1’Xhƒšä(Ôùu›YFX8…=êx÷ cøâCÆ¥]¢Öc´ˆxÜ’¡˜zMÁ B6®Ãj›Ù:{.…#OS©†géÏx®§ÊI[xÝן(¶T<:ÙÿÇuðœZ§xò¤“së¹ÔP0kÏ•í?žf!Ä%ýÀ¼$tV”|AðBzŠpîs¬ÖR°ô²jÃÖnfaON ~9¹ÞÂqƒ6¨N¾ªW 1¨x§ð©ÉǼлñŠ.A(7ð9ÕmØÀ…a¿»5í A Óžb‰ÇÒæÜ—”º­xp<&»Ùâ—‘çÁák“d*ÌSù=øžÜÍ`A}ça¤îÏP?fwƒ³„i'O3P¯ “¶9è翬§T€T>ÂØùT%‘MïŠ<¦·ü)Ðn¸æËñyé9/1ši|ÇÁŽ›­A‰Î7}8Xܦ*ŒS>FS®"iÀÿ" #ªêÚÄr–jâøUÖП)b\ɃAÌóyK;y²áð©®Eå˜Ç¹£N „ ÷µž>#}¸™4;`$xHÇ™ëà!¤ٜÎö¤w(¸ìjJ‰™Œ¯ûàAøëÑÑ8)È(Ý."ny™Ê -%ÀG Pç)ÇZ†9¤æÌ@–U_œWÃÿ\ôدš4 žNõÀ£éy–ŠÚûÖ[æ=ã¯EYÔû¶ªä¨7Ö--…Ç ñÉ[«CGÂâ‚qÖÔ‡Bé†ëO;ñ[!³—ùÖÁ¹u¯K!—ù¢€‘¦CÌáa×6˜ã©T™bé àžµ\vEËÕ‡‹)³8Rí¤ÊL³fH}ò÷,"›Q^fXõÂ0öWL{Ä»( ~¸büGñ—jd”béð0ÈP–wžHÍÐñSv -á’çÖKó‚¥0Äsdï\èÝ¡«Vµhq;ºñÁA,Àˆ~õÕÉI§!×,öË2q=ø<Á% «“ì(Î(ž¦Ë@=z¸F4â& ½›ªp3ÓíæŒ˜ð˜¥L*Rôu¡)ƒGÈHݾÈrÐV4SyòX1CÌ·ÀËJiŒYë²èPŒæ²å -•Ãçd@ïoœ|üÈϺ– ¨qþVŒ “Áy­ÏVÙ;ðs¿8”ºº¡fŠÞŠíl˜)'þVY‰©|}‘ÅÛ«µ7#Àô ÑYü-­M 7—銨¸}¢ˆÇãÉ7¯®õý¼ …0z8ÏTElmöB´À"5‘ë…‡tÂ{pÏ¢Ù$Çf®'àËô„-ì1¸pÉ• |׉³sN”¼Hn„çº3}çFI7Ùózûá,qO‹¿PqàSèšM%„ÅãïÃZr?~‚•ŸÑ¨P³çh ÙŠf%Yï.±&4*Œt´1QƒPó=—úJh~[Üd'úÝr]fï.Ïo£œÿ¸.º_–kXÔç[83gîªÿ+÷¶;¬KèÜÞépwŸ¨þŸäoÙù˜ðË>)šM²,{‹m%/©E=ó …:ê[O ÕŒoša¬’\›û3†R›,QOe âù‚³¤¢:æB)M¡Ï!;÷Ã@ •)FÚjõ»KšàØJï.p$”°ï«¡YËzh–S“ÄSÒéû†B¦ýŸH–ä_ûJ2ÑáéòeJ'TMùÚqèÚg€ ÈÁï5ÀªãùO`¢ñǶRÕjŸ"œH÷ÿp -Ã;{Pé€Ö9Ï"ÚùáñÓÏôkL?0 ÿƒˆ1\œ;œxLU$œ¾ÊÜœKõ¥ä_9áѵ¿ì–üº•éo½#Ÿßs­kWSf¢ÙÍDk©«i¨'V(N’ß8ýcàíÿ> endobj -908 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [201.0452 245.9226 324.5156 257.6121] -/Subtype/Link/A<> ->> endobj -907 0 obj << -/D [905 0 R /XYZ 117.8281 740.0018 null] ->> endobj -322 0 obj << -/D [905 0 R /XYZ 117.8281 715.0952 null] ->> endobj -326 0 obj << -/D [905 0 R /XYZ 117.8281 457.4693 null] ->> endobj -330 0 obj << -/D [905 0 R /XYZ 117.8281 337.6505 null] ->> endobj -904 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F47 632 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -911 0 obj << -/Length 2247 -/Filter /FlateDecode ->> -stream -xÚ­YÝÛ¸Ï_áúIÖ<‰¤¾Š"m“t—pÙ·Ü¡ e­-Ô–¶’œÍö¯ï|‘¶9Ib53Î g~ÊÉ"†¿d‘$¹*t‘,r«8NŠEu|/vÀ|÷*!“*KS|á®mž)[½X_*ùëëŸÞÚ|‘ĪŒËdñð¸Ht©t¡³E[•˜Ì,¶Ÿ"õþõý‡Õ:ÕiôñèúñM»û§^ýñð3h_ë\ÅeaI0pc–þô{œÆËṫý’IËîñq ä„_çZâÿáHŒJm©§ ÈôOËms\ÞVå×BUY¡r¥S…ß[=;ë" -g?¯ïæû&\ûÞí›b.¢0îëå•¢4q+¤öÛ -²ï*H%€®]~S0ÁC³Û$úÓÛ$½ÌÃu’(›Z»X›œ¶œ^º•.¢ç»ÕÚfIôîã*‰~áq3ðÓá#ŽªÕ:‰º¥Gªñõ˸~„qO/5‹#¡ën•CÇÏ=ÒW:žYßè «–Uš‘ŸU÷ôœµé²h…s‰·õëŠH»­Åž™ÈŒÈy ÊÀ¿€[F÷->‹hW·uïwüv­‡-ÐÂ$õµRÖY9¯´ùŒ"5“û‡‘ƒƒó;f4Àh‹K4c}xaþeA—.£–Ü€€#8§ú1OajžSÖÕ_ê¾ò³Ù’?aÒ¡×y†{Á;Cóz?p¢Áñ£’m¯q¿ƒPÍÌ]"IqŲ‰‰!´è0:ÞŒhM×2»Ã@f<Û;Tã#jŒ=«€#)ÅÐc¢£keM|kW!YƒkG‡Ö°6QiR2(?ìq· Ø/á2`ßóu|HYY³,Ø”º—ÜôÇýy‰gª_C ?×ýÐtíŸC=W§Iœ«¤(dŽ7¨ aßÖÛ³-ÅœŠXeeæ-hŽO]?έj -%–Š\ÕQ°Ö ’Ƥ*Ó w²9pÜY…ÑýH†–Q á0di52«ÎH@¤ 0áÝíEÖñ㈾å!å%e/ûÑŒ{fÝÆbOêÂÛ tÏ™œ#õ`Ü ÌĆ ŸãÞ<ª]…@¶ç7Ú†atm…ùÛ¨{d†ãÇ·¬DµÓêE>ù`Ø×OD€Š·ž§øâ¢E0b¹±;þo(§`öR:¹~‘:†¤'BkÊD; h -Ê9™èøõ²ìúc…ƳQ+bS@©EëëË‘(Šg>œj&»¯|¼]TÞq™–!½ÛK`áÊfET26«¯‡Ó‡«<¬«}À¨ž*xaê¶~â“­Ýžc¨KÚoë÷{ÅéÀ¸“ön`¶GC¢ž³€\{G®KñûÊFÊLòëŽYÏ{ÎÉ^X=˜éÑQåLyÝÊùSŒðì[û¢¡ç 'Ô¥Ìn‹|ÔVÄä(Q,iÊI÷¢³De1z~‰Øo¾\‚sÕð>«¦«ÙT¥& 1t÷X­îD°;ñËÕÁb\'ÂÀ4|J±@o}8a3k¸j)êû û&ÆÁuÿ n܉ZÞº‘…›‘©„O” -ÞI*¼{»æÆfä-¢ƒkwdÔ®æê£ -ãî+dè Ù]?{–eVi]”—[ -ç8IžŸãŒfü½»@–FÖÚôxHatÇ ”ÂÛ@Eå9Ó #àf³lŠ=nŠ‹²ÖÎ%_ú?&Ÿxÿ›œƒ‚>èdÂê³qJÐŽBnø}8 Fæù…jÕ}aò³? -0˜HhÚ)–ñ ¸Üäã&¨p˜ÝN6†ºÙn™ð!9ØçÏFÜdʤšâE¡2¸& œ G7†¸ò¨ÂCÅ–›²Ú&dµA> s[€Ý^¡ÒÌ´Øk<”t¹V­£¦Ô—¼–k&­Mîzãø(ØòÌii\(­œ ¢ëë9×ušªÄŸxà O÷ :ùZDì0íH˜?= -BX×\&j•ØÒ2ÞæÌƒj·:ø/ïç4éLYm}Nx± T)¶&-#ºO¾ç15ÀÛ`ÈšÃÈTºP`ï‚,7g 8 5Ûpx÷O§Õ ß S-cícz' «ZñÈñ2¼‰bµkð<×禒XCÌàL»ê€ïQC™Gƒ¤xÕ`‘Q« T>„V??XUXmæûSˆ™CU òy•b‰Š½ØŒÌ[˜Œd¡šæM„»Pœ¥—7+P§y¬Ú! ïÀ×Uü¢†¼®ç§9‹Ž=Fv"+¹RdªÌc3=*~•û¸¹-û$½2æ‚ÕZJfâuŸJ"ÓNù•{œ?ÛQ]#OîaQøÜè¿0áZAoªbãk°ïüÕPÈ“­ÜœÃfè< [€9 -0*õ #¨™ÑM›Ð&ÃË)8JÒr¡„Ê _%*覨•Bªä:ðNõùXCµÔÇkü -‚M>fØa{^”¯cž#¢T°l¨ ƒ84 @ø&¢ñªIOÁ.¿hñÓ ëi¯éæ"2Émé0ºJ-·iK…xËk NÓ ’ƒ^BQôŒ¾ÈZJ·÷ÕMêü™g)Mÿ#??Ä ¬×Ó0½JH7·9xM³Ÿ\þÁßq®®S”>Z‡ ¥:‘Ë€®§!•Ë30C(CÎ¹Ðø9g‡näo°XDÿ%†àçfQéƒ;að7}=Kþ:–Xù:–˜ó† õÀ'ÍÀo¡jåó -;{ÇÌúú:Q5Ž"óÂ|nžq…‘1 óµŸ¤Ñpª0¾"à„*_Zpv×3ë7RMÍáÄmÛ«7á—ðãI 2cf 2ë³ý4r…ÀÍã$¨Âhåñõ‚á—–¯ü/²Rendstream -endobj -910 0 obj << -/Type /Page -/Contents 911 0 R -/Resources 909 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 897 0 R ->> endobj -912 0 obj << -/D [910 0 R /XYZ 117.8281 740.0018 null] ->> endobj -334 0 obj << -/D [910 0 R /XYZ 117.8281 307.3667 null] ->> endobj -909 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -915 0 obj << -/Length 1810 -/Filter /FlateDecode ->> -stream -xÚXYÛ6~÷¯ð£ XŠ(RW€Ø¢Ù iÓ¦ØÅ¾$A@K´-¬-m$9{ ?¾sP²äÕn ?ˆ‡Ã™oZÌ}ø‰¹±—‰˜ÇÊ÷|_$ól?óçX|?–I†‰…!N'V]GžJd0w‡B~»ž½¹á\ø^ê§b~½æ+OÈHίó/Îõ¶h®Œ”£óŸ‹0rt¹§ÕƒäÐ©Öø•ΦÖûýÂŽ®Âix1#BÉV 7ˆ»-«ö ˜­€·(MÎ÷E»åʨV–$œ¶„‘ÁQc%¯P‹GfÎjZÒ- Û,¾]„»»Bz¡Jº†ÎÄwV:Ã}·îᎠW°åÏO<^Ó¡{œ€0”òæR¦c)/Pq -ÒQhóX.¤tZ<|k<‡Ox%c¸c}ÇW Y'æö¥'’TXYëæ¶ÖöÆš¯§4Åþn÷Ȭ`*º³º¶€•ŒÒñõÉ9àWúCõ¥Ó[—Ì k¼¿eÚÐÙ½Ùk: K«Íì¸å™æ9® ¬‡ÆcÚ‡’¿ï/ºäqËêvhËr„è–£*¥á‚Å„SɆ«â‘qO¤›6¦4µn‰qöîº ‘^(1" !’Ä?f_¾ùóâèãÌ÷dš„ó{˜ø(/˜ïg­«ºùnv5ûçk½Dw(’bíT¿ÐK#ÝóÑ}jc&±"…%2²÷Áлíu‰VòÐl©s& BH±>wWº!æLÞWÈH&ò®YòBˆ?z‡(l9ÄVi -¹AÍO‘ŸÆ¼,u & ’‹¶¢ÓLÛšš (Ùn¤k]³ÍÎí>'lê±Wff°J9ÆžJô‡l‡;r‚2Ê5Å2L,NhlA -w -Rw}P €ƒ­pÀs¥OH‡Ï†mXbs¦Ý#Ÿî²ÚÊ2wðc %˽"Cá¨éQþ{ ]ÚÝ}䤰jôÉšR^nâ@Î §n”!­wïØ=$WqªÉyý«/Ô®=Æ?oê, Ì5û ¶k­Z¯+¤m¶ÝÓƒÒ±g25CêÖÐçU2õÛg*OÆ€ÿ0õ½XÅñ°Ð=+x=·;dŸ - õ‚$ˆE³ýºpà ì½öƒ’hÿòçîЩn[ë²YWõþ—¦Úý4#Þ7]Ofªœ€ªž -„• ¬.—#vDôÜJ?*J‹ÈP]ÞÂÀ¯ºŒÕNv@©'%øù­k Æ3aY šg-t1¸ŠeRÄTYA;Ê‹[A»íˬã°j5ÝC ©x_S’±vÒ­R hã}q¦_‡ì¯9¶çÃëBp²c>×&¿ù<òæ_ŸÇ~¼9™_ïËÂâ¸ÙR4°€êÛ‹6à‰™¦ò\ Ù_³AÏ÷6@Œ?œXå9‘ëqÄu3Áu–½÷¿G‚з/âGžT]¡¥ž )hDM¹…kå[ó—»î°OW8LW]Š<C06Ÿpc© ,<æ¾þíÌ›šŠ–m±çä~šè­)›Q§¨: _6ýAÿ™™AûGk¶»£v™º¸ÓµåÕ§m¨M/wðâò‚ðÜ :à~ d9ì|·3ϱµ|\>-ËŸËûe³lGëWm=¢¶>?ì>àkH°AD÷/Iuès“:MwL¤h¡M\L;t/=vrÙv ¶¦6vM[ fÇÛîÈíΰ›è=²êgxk},ø ™Îì¿ ˜êŸ,X0ùs_ìòL×ùâU§ÐÐ~z®×쯺½ã{Íïß—£ßÙ~_Äþ«–Â^ÊÉ¿èz÷È4ñ]«±/zQ¨z,Nìÿï{~à×Bвendstream -endobj -914 0 obj << -/Type /Page -/Contents 915 0 R -/Resources 913 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 897 0 R ->> endobj -916 0 obj << -/D [914 0 R /XYZ 117.8281 740.0018 null] ->> endobj -338 0 obj << -/D [914 0 R /XYZ 117.8281 527.9357 null] ->> endobj -342 0 obj << -/D [914 0 R /XYZ 117.8281 498.7691 null] ->> endobj -913 0 obj << -/Font << /F15 459 0 R /F39 472 0 R /F47 632 0 R /F38 467 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -919 0 obj << -/Length 1903 -/Filter /FlateDecode ->> -stream -xÚXmâ6þ¾¿‚A‚4ŽóÚÓUj¥ÞµU«V*ºûЫV& mH¸váßwÞbd÷P…„Ïx<¶?3¶šxðS¥b7ñ5‰Ïõ<•L²íƒ7Yƒðãƒ%&n†ø9"qä‰ö'ó¡‘Ÿß}PáDynê¥j²X óWéHOù?ÎÓ¹Ž1Àtú -À"W§iH#Bcèâjøð§BÏùkª}§©ND îÕnS2€ðìÎu"‹šh&¦¦î) -• :û ƒê§u(3Ç1ÐDüNY3 €ðˆç¾r#¤ J«²l*À]š8«~x³f“G†T^êF©cÈ:>päGèû«]ÑÛöçI´Î±‚ðäžpYè!”|àˬÙîZaHe[$ýjoåÌè¸ÀaQ®öÂôòؘâºBV-i©¥Ë‡AÞ,‰¨µ›³NcØâ7\»²’µc MJžðþÔ»=¥õEÏS8bÒkcPüŒÒ}m:–Ò’ñ‰ð`È -\¡ì6Å–k'1k8ã\üC76­—~X É—²ª˜Që›_ø£’4æI¸¼“ Þówq4[ŠŸÃP¿9[$‚øƒBªØ<[!Úånï B¨R-¼Ñ` ÔÊsýZð9Þ³è¿7|èÛ´Òg…t†eI¸ôRî€M”W‰âÁÒåfÌA(D€µÍºµÆ¶”­YZ™z} ‚ê£1µb¬zâåYø?~‡£”$üXÿÅÐÆr§ªšqëÖHÂGêU[˜\>.‘$)øµgläãd»^…Bý‘x1k LÅ‘¥é3õ ]öèÃÂCÓ2éù)ˆ5’IZrê3`I®V`˜UP'Ýv/»<8€"“e=Eó>øšÛœõz¯¥: ]ÂÔïK †êo¥V—øbßIè—Øo.£þòòÓŒ!j`%ãâ‘‹÷}c¼iÂIèª*w—#c^òöèÙmVrãße‡1wÏ#¯¸8qq¼pzuÑxº?»~A$26ŒÂ3/1µg˧9«"4rs9_¶àc]>[fK·1Ÿ¼ÚtØëÈ‹|9=fl¡ûq¯1³¢]O{Z4–wØ äcÆIœ$¢›}Óš+'ZkH°¢ôš¢ñv'ÎGL³bŒyE+¡™å”‘œÃ2OC -¸U¤0JÂ{–!¥qšŽ]%}¹mêæ:ƒé§¾z…ÎhªZ…®]q—\Ãa]‹ãŽ>³qd̹H» È8&®'fÝ‚³ìçi$×bÊz)Kª„ÂÆü†ìÞ»)äÊbC×ï}ê¹ãksÍ‘yw¬gZž ü&0‹ºæ@Iv¤O¯Ñ$"#ÔðNšª¿E“Vú]Ñ -¡ “øj¶¼¸9-N»â–¤Ì=œõž¶ßRÊp÷¿(àK@6{¼æ7*ÞI®ß÷òìÙ÷ãw¶œewLá-rþ´|ïŒg«Ùqvºì>JÛïFÚ÷¡tsÁП7}"‡( -ÏÈ#:„Å>!Á±—0”Qf‡•oϸÅ>”P}Üs“¼yô ¨ðdù¼eÚâëO3=#ø:²)ÝÉpÃ¥Í^ñƒ¾¢Gåî FŸJ„Bb|꩸r£lEÔRBiÊðuï]¯L(Pã›AŸ á|nc¼¥P›}š+÷oŽ fƒŽÊMƒ×¥÷±×Á´KÎÉæc3¤DÍîÝÈ£‹<™¦põ×zôýÕêÌÏJ#¯¯>HcOYS8zì_hsoü£ƒExendstream -endobj -918 0 obj << -/Type /Page -/Contents 919 0 R -/Resources 917 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 897 0 R ->> endobj -920 0 obj << -/D [918 0 R /XYZ 117.8281 740.0018 null] ->> endobj -346 0 obj << -/D [918 0 R /XYZ 117.8281 567.5664 null] ->> endobj -917 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -923 0 obj << -/Length 1994 -/Filter /FlateDecode ->> -stream -xÚµYYoÛF~ϯÐ#˜ ÷â‘}hÑ´)Š&@ HÛš¢$6é’TmýûαK‘òJ¶Å=fwÎýfv#1ü !Ò(“™X¤:ŽâXd‹rÿ&^l`òÇ7Â)“E‰1Øõ̆:M")¹§›|wûæí{•‡(7F.n×f±Ž„JÔâvõ{ –¡D”ÀGÈ$øÔµËPÉ ]Ã'5A{· üU•öË?o~û^˜…ˆ£<În/B™E&Ñ)íøi)³ ê¶K÷ý2”I ÛŠ{Ü¥íî=)í€zbë+´š'¦ªW0DT…@n–mÓÝJ$êì–ÄÛÇ{è¤<”¶UÛíN£|Ä‚”SùT9%˜7K@KTî{dÕuÇiá8 -K"ú©]‚ ð§è€~¶Ìc`ÖîÛîYÕd̽ϚB$‘JŒ¶ o`­Ê‚bדå¸÷õd ¥ò èù{Y‹Ü€’ÔîyBµ÷ìè¾&ÏÖ`HÈìnðPþ#SUv쾫«ºÄа›j^’b÷èLlT>¥‰db¬(Øß¤Á‡¡çFUt»Ú¹›Â×- -¼_‚Ñü»bi—0Ù(ê*&.†ïQŠÁ’ Û[žßœBzdÕŠ¢²h–´®K·†¸ØÚ]»©ËbgÕg-fÚ÷GÚn¨öh®Xð)Šã“Á1œÅ‡­h¶hV– c‹„Lj^¨ î\)¼IûC1ù‡†¿Ã¶î¹ÅÚØ“€,›žxXòà6ºw²ü‰ž$bׯgZÕ«ªJ‘áùÃDqÅ­ñì²Éé—ÍXà#’Çb¿«n¸×o9rëfÃ[ò a?·”çš–,í”M cd£–-¹æ)Ò¦=ñ_ÅaçÓ¤= 5bÄ¥t°/ÀÅÙbž²gKO¡ -õÜþF䌥¿-34:6Á±Ð(*ưŽu0b˜h*§èÂz{CÀ„=ÔMÇŠ<Þ<ª`­‰ Z¦ùÚLlGˆˆ4(0Î2 MrP¢×­F0}S „i…×d .;¸Ówç è%ßá²7?ÜŽ òH¤R•,ŒÊ#™Édš¶ž¤¯‘:œ’Sú‚|2ÅEi§G:pYh¤ ~uo|j¬ Ï~©0x°õîUë>ÊÒ¿.üÖ·Ñ9èž‘6ZCÊP‘Nµ¡ío·^´–ò8 1Döcv+†Áꀆ!HŽÐ”tHh›3‹ÅI¤vPK*øð8‹„ÔŽÛ¦jªB£(Íá›5Ɔ.~kÄ%e¼ùûP5eÅô·izU¡€"F¥^]öN¦6”ýúÝðìšàuïµ”Q¦ÇôMî÷Ù@B3ËÆ¤Ä2k¥&ÕþC^„§D«ÊÇNÑ‘¤h`Šzà‰=œÉž›ˆTèLlLuÅ"¬]2[˜HÄÚÕ -Þz"† È\`RC>w„ •wÓ,ÊDêâaÇ1‡é߀¾Eãã¡“(‘Ò™o¦Ê-7¯:ǃ!íÚ£o{Hµy’Ï£ŒžàìY@}¤ ã¨8¹¤¶i)W`@½M´ÔuÓ£)& ÿu»¿„s¶žV9¨/ÒÄ[žTᔌñMÌü¤ *Ï¡zéP!P!}Â0щ~†±£ò0žAçsÆOJÖ6Î]µÍŽc ÐÛ*E /,Úá)*EáŒ7,ò(Ë3ûëֺ˸£oO•F*Vâu¡æwy -Ίås?Q]u¸%{Þß׸žÜ}Æõ FoO¸~XûÌåš×Á%†4óºhH.GÃó>± ×\ -‘z ›—×§Ùÿç>øƒKk¤så©'ãÉ5{\b’,êÍÑmàÔCHWt+&ã׉4@6|«GºÀŒŠ .6< ®à:€»1•î¢NTó»8ÎÚë*JÚYŽõÒ¾1œb® wÛ 6ûÿ…õþjS·¾î¢ŒÐÏ{yÀzüPÚ¾rƒ¯d)›#H}Å©yd½Äëí4w¦soÆ”~©úþ%ñºg~ßC‚—p µ”—km™«(Ášñeµö”üZ­=ÒÍjmRk^ô¾°Œ†j¢ÿ2«£ñJs<¯¬ùv2­®O,O<.=ÕåÇÓ¢çeøüD†Ç›WIñh™^šŸËöxÚêºÐ/»6|´áêŽOIÏ2Á$¸¯VØ6PsÉ1¦æÞÍ ÀSc±Ë.ñð(óD¹¢®Yy`R¥r²×çË{9²‚Þj@Þ²Øíª•ï -eš -={°&á”ñä†#ë àášÆPÏäf<> endobj -924 0 obj << -/D [922 0 R /XYZ 117.8281 740.0018 null] ->> endobj -350 0 obj << -/D [922 0 R /XYZ 117.8281 715.0952 null] ->> endobj -921 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F39 472 0 R /F47 632 0 R /F46 625 0 R /F41 605 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -928 0 obj << -/Length 1977 -/Filter /FlateDecode ->> -stream -xÚ¥Xë›Fÿž¿ÂÊ', °»<®R¥DÍ%j£6R,UmÓÆ6 .à{ô¯ï¼v ¾\UE9`fvwæ7Ïu8 à_8 ÃÄO£4œ%:ðƒ LgÅþE0ÛóÝ‹P„”IýØüœà.T¬ý0Èbx3~ -‚C©¯¤Ã0òU¢@: `ŠŠ¿Y¾xu£“YøY…³åzF™¥Qo;&ø‰ëñã ªEÊ;ÎéPsÅܾáçmƒæßU+6ås†Oe#g§!„X`@'T¥+÷pšVáÎpxdŒW4LCa±›òDúQkÙ DeîQWî`åno=QQÁÚÂ…à€…‘Ÿé8×*ßè,rû©Àx幃Öv´ Ý!Hø,óë<Õä¼ ö¶9!Z %ß¹ r<ý‘É]I¤Ú“ïäFäÙÃûmeº¶”’_6m¾'×å-욈ÀÂFÀиuƒ*í­3• -¼¼À8£°j&bP6ÇŽv£÷H¯¬Ew¨ ÅLéþ›GÞ¹5*Ô· ÅÒêXT߆ù:ék^Ú@ÐA üeO(zQ - K8E‚1ÊÖŽ÷œùÊ©» -?îT­øˆ’w¼~È_w’_eª uõ7ü=JâÚd†˜A»$ʪzÃdÆ‚ATBj©Ž ×ÝdÚ¾fÿvŠ œÓ7‡Á ôÀòà)F°Â°7lÌLcŒª³awÚmU~B]£ªRšívf'ív‹qˆQúêx˜¾gë+ÌOe¯;Ì — IÑóÄ7¡¯ŒI$ñ¯G.•mÀ>úÁC[,Ñ;RÖÐÒRb«²]ͳE»möü‘KæTnôJ¢ƒw@ç‰(Svy_¶CÅ0Á¢o—®Qº>i´ò3“©gvÕ¡øS]ÕÉQâ“1Øï?Ðj|¦ÏéuíášÛ‹„òQœ.ìû}¹ºbÃï·e[æÝE³5t„ Lâgš=Êl'76;›­þ›ÙQª ´ á>,±ã˺¡vcËŽT¾ 3[lTÜ£ÔÌé¹4üªö³”š]Éâ³=|X,\þ½µpð# ¹Fm+-%ƒ9G)˜æG’O4xM¡âäFy{êŽXd«"þé0×0å™(Nžëïø“þ¶r¨Tsú÷âKoßMöÁ£p;'w}÷WcÚÏyš3ßóó4§J„Õcþ™çóÐt¬½}° "ºEÅ¥Ðùoìm|£²P܇ XkIÚª—²­ W/ …ò¶ë[èö,—×+&ÃÌU´tä`M÷Ƚ*`!Ùý–—»¾ ij+Êu- ÁJT2jYUGNè¤C,KÉ œ²LL„ƒûrÙBe¥¤¼ŒTÂ2/ŒJÊ>L»˜®ØŸõ×ÿz”ÞÜeNC¾#¹éÝðˆ$šYaÝË’'‘ú%“S¢$ó^òhDó‹ðªšŸ½Svß1ÅîÆ×7Skª¿_@eÚIï+É'°ˆ´ŸQvÂBg÷`säÚŒÍV§”°’9k,VuÁ… 987Ћ˜¥ð#k)’ù„K&`iÄOGÇ+fŽ´H¦¹qAaªáИä œÕ†“frµÒ¬O‰8Ðx±ëœñ.]ãʶ¯ÊîRªØ‡û‡¡c¡Ä>šu& Mà}ÄY  oÖ‹"oÛG> *úŠéÅÂ^—&K7zê›Xsu|];ó&LìÄ+·àÜîJä¤^ŽÒtYñ½PT^‡ÑEëÇG, ¸’–a´!µê¦ˆ`@ÑÚ¤?v72W“Ù8ŸSF¢õ&3'ëÖ‡²Ëȉ߄FEpÒÁ,ix:P&Œ‚ðÁWßÓôžïv,>=ó^É^6"`‹AéÅ ‡ÅÕÈpÏœÙ+*aˆÑ¸—#U?²Úª?6õqC–¹É!‚lÈ©6Š¿ªÈ¡'°º†ÍA‰z7>ãžGˆÈ+Ùu×o<³åemÏ¢X–|è–ç(Ñ´èÝ'`“ÁXTX­¸• €åÑ@ø õÒÞo«ú ü½b*ç:¼Tî¾ßçîŒR¤Ø =ÅeïÑ2ö^'R|E,ÚêVjÜ„¡ÐSLÅhžÚÞÉâZrL®Ž×îZÃN·œ'T MÒî|ùÅ/ºïàõ‹æå ðÞ5ý¶¤«ØíÑò6Ì¢¤jøý#Ãn"(‡G„‰Ø ­;ºžèó/%¿}x<¸3*áˆB7¨oEç~AŽm/›’:(ýòS`T‚°¦’¿)”NºI‚Fþ¥²8De[NÞcêáÏ?Ãk¾mø6T>ôã{&5‡¶ß=ºÎH²¥–¯"º*¥kÔáÈà wàˆ™´å—Þ :‰R“¿ä:™ÅIˆ†ë³ÆÜ$ÝVˆR¢ÏÔ ´¯TEþ hFendstream -endobj -927 0 obj << -/Type /Page -/Contents 928 0 R -/Resources 926 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 925 0 R ->> endobj -929 0 obj << -/D [927 0 R /XYZ 117.8281 740.0018 null] ->> endobj -354 0 obj << -/D [927 0 R /XYZ 117.8281 280.2683 null] ->> endobj -926 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -932 0 obj << -/Length 1715 -/Filter /FlateDecode ->> -stream -xÚ¥XIÛ6¾çWø(c…‹¨% -´A'IS Aë[ÓÇ–m5¶4•äÌ8¿¾o!eÉ#Ù-ŠF\ÞÆ·||´œ ø“3)“0U©œ%‘…élux%f[Ø|÷J:"mÒ06§#» G¡Y #¦@اzA-¥ -u¢:À§cä?._½¾’™a&29[nfRe¡JU<ëè–ë?‚•mç.ÃÃÈDÈÓ¡‰2E›o‹ö4_e‚ïˆH ·ï÷Åv×2Á™ô’i1*zs,§õ¾«Ú]^>ëíKº¯mùes¬[7ÿTÛí1çñ›qµ¶þò^‹H8úæŸ5^(¼"ò×ÂèdRä…ˆ¾É$îõ½4ýø,”‚qšBØ!¢"áø,wE3_hm‚z.ƒã>w³êØò …e+ƒçÖm5v®ÒàT”[VŃ4Ð06T‚ä·ö pk“uÇÁñ¦žTž½U‹:ØGs£‚-oµ|c§ÃE‹4Û#Y4rB™Å¡Œ3§9dkßWhíÓ‚sE«$”*2COç_‘†NYߡℎ½Ëk²= -˜5<´¼¿A+jjÍóUU®a¥h‹ªä•ÎM°¼e^j[Þ/Ü÷€dǦe’‡ùB%AÎ[0IƒªiÐ2´áaïvÈ/@¾Bæ%ùXm0¬äh•uIŠc’Ì]X`\”ü½Ÿ§šò3 ÓÇmȌ˞³áÉ --³Žíl;ì*2~ï÷ùš÷­c²üyD2UµaŠêÖcçø+_¡‡RG›&$>ä›#¹Þ"7y(E_£÷½I2¸cú§:ü–;^¡³Gí3ýoW“Ù°ÿ@’xÜî˜ééìUÉ©þ¡ZµUíI)Ò)åF æ7cçú,¤Aƒ¶;ÔÒ6!½úiÙp‡¿`U¨,ù—hÝ'¿†ÖÝM´þÐ|‚T,(e> #žïNwß^à$ìHÜíÃÕ3F÷°~ýÿ íoÙד®ʳÅ÷Ó2‘ÿ8‰Ãýƒu²:½_'ù^úš —Î -á3òëÐŒc¿ î ¢NmE÷D]LlÂ,Ë é—˜â2 €‹ƒßò†».ðÿª¥ZI "–VAµÇÕ¤õj¤ÆÿpÓÆ`*B¥¡‰#ÎÁ€&€=`+ D¢Õá¤‡Ô A-."$0 Wgd4×äÁÖŽoW}¡:±ÛÚÈ<[»{lP *Rxzén“ßIÔˆõ`z¬cOvDzí~σ$Z¬ðªlز§óüMH$È /¦ÂÝ0Zã!_@ƒkµŠ ‘SÙh»×Q-úd rxsCß–AKÙÑ9€J^(ÖYGqtC±§z©XgÅqRˆl¨øP••OÊžÕ˜ûäÐʹÿ »jcΔÏ×¼Š7YåYæ<øXÀ½=éW¡BÓè–_{dWýêénûõªâ³_/Oùµ¯Ø—èé¶sc(ËL˜ÿê\Ê~ç\X^óÅ·È ‡ÊõŸlÍ[ j4TëW8k©3ÅQÃ]ÆÞm`!?òÐkÅqgÑϽò;ž>õDw] Ü€AÝ?J#F¯Ú$ÆÈg¤]lÒØy¦†®ªÜ—tÕO _êŽyPꇪžDH…‰éCç~˜EÜ7ij¢qºê¨µE9vHiD)¸ˆXíŠ@Ý6££ï é!„)™ùVš0AY9ä)™ßÕÞb«E ݇Û;7’°š?S£Hær'LŽ2ç8¨õ;·a–a—÷šSI½•}öÒ¡ù<ñøØà3††Üñ³Î·ÔÝ×§©nÔ=*°‰´¨Ï9¿h†ˆåm:¸ºp‘ØTP @…ìOÍ›Iø‘iB{v}zT×ÀÇ“ÝÄž«Z;è¹ÔzñóÈÓ×jÙ tp??Á9c)H‰/UÎÀÇúœì¾Êl›OTŒòõ‰å€ù²vúN}˜‡Þú´•“‡˜ ÷Åæ¦üÊ£œá;y(z2”q}yr3–=²«Áôt·£yUñ9œ—ЧâÙWl0ãKÀùµx«œ -ØQ9¿ù†ë»Ïïø(ä½7"úÐÁ|úï¢Ãn”1|:ì U¢.~yOïü(͈3‚§~ù‡ªëG÷¾DÒ'h͘¨¡{ObjðsI¬ó ­ ß ˜$dš¥oYaÜ9)w®"S¼m+K/é‘VõœÈžÅ§ÂØŽÃÔßé¶•®¤òMíº8¦ÄùÇ‚ÿÍeª2loõô?ä ‚ÝDÈNêKÌ¥Â(‰Ã(….ã¥ÂÛ ü}endstream -endobj -931 0 obj << -/Type /Page -/Contents 932 0 R -/Resources 930 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 925 0 R ->> endobj -933 0 obj << -/D [931 0 R /XYZ 117.8281 740.0018 null] ->> endobj -358 0 obj << -/D [931 0 R /XYZ 117.8281 418.7777 null] ->> endobj -930 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F46 625 0 R /F38 467 0 R /F41 605 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -936 0 obj << -/Length 1637 -/Filter /FlateDecode ->> -stream -xÚµXYÛ6~ß_±è“ÜØŒ(RW HÐl€èCŒES´¤µ…µ$GGvÝ_ß9([òÒ‹ô¡X`I‡3ÃáÌ7#Ë[þä­”±H‚DÞÆÚ¾/“Û¬ºño·°ùþFZ&&" -C\:vW*ÒBúi³P$À8åzÆ-e T¬€;öᜊ²¿]ß¼¾Óñ­ôEê§òv}?1mä[çz™é­‚]¡C‚<%B´ùá±ì³Ùì‹Å* Bïç²Îyö=òçì?–UÅÌ2ŒŸs¯œ:î‡úºÝÉ€¿÷åv׳¸ïx¸´nÂá4o"ìÞÔÖÈ+²ˆáª¤Ü^t4j*éì„k6±ðÓDOlú­ž]ì“ú3 -º¨’W«ÜF?Ì·ßd}ÙÔ³­k·Y¬” ýÿª~Õ¯ÔþúN†Ó°¿Ràßñ»ÿÉáòìp¦Þ›œ­Åy×ðÛójVK&>”t»qij:šX˜î±¸Û7vÜY‘äNÊ4×Z°Æèj,ŽŸF[gn:P,7ðp+íûãcÓ|*€uãhxŸÂ'{zžíÙ+˜òêof,!âiv@›ÙÀ°?2ë'_jX⥑¥z«Œfm±r‚~ß–Y?¦Zã]@²E ‹ÃÝMAU!ƒ‚‡poÚ&#%/Á U´$ ÒÔ£}(ãÇ¥ =gk“™÷ÀÛa„/*˜|G^hOr¬=¹‹^·XºnÆ!›zw¨²®-ÂÃ0 úFNÖÖ•¸‘7ö1;ÞÜ M=ï™=‰hxµþhY(Ø‚ž2yÙX:c:cQ¿iÐÅu‘³d†Gro¶®ë2¹ÄØÛ+¥Ù ø§ctÍ-§)ÄuÅltµ1aì"Ò0 lªXÈ$HIƒ”(P$ ì˜"ïã"Õ²”·\ÃÔð ­ë¼DEhŠ#™F€r(÷WCÕ‡ì¯L_fPt d¯nzÃ%PO° 燶ْ')ü*zó-n©i’tLÙ ¡{‘Bª~mÁ(X6Öq¸M)á°©Ç7Ø9®wói-VqåmKNFV'ø î°`Pe$üì `32mÉ$ÃÃ@‘Éö·”µ#Ó?S*p~”6½-žÒþÖmc“•ô–Ñê›wëS |ꀼ~$õW¶ËnW·¤"H‚³Pô6Fo¦°›y†è-’höBo£ç½M Î©Úã“E\Du4/¢óÇ‹•“DÙWÁ·ãH¥Èq] ¤±ån÷•*%=Öi¶Izct£} !Wˆý¹ÚÍuÇ Ê‹•óäRŠÐÎr,YW´³F‡B¾‡ä›:Ð95ô??º,QˆU’Xþ—ß*`zâeÄ…°PD¥ÎãŽjÂÏèœ_äŠË T -¸wò’kRŸf‘å°{ÏàÛ…2œ{f ØÆêBë,ðé (e…Ù¤þ -Oš°“´C/ÎúŸXµæ¡°Ò1VÉE,gXÃÏc‰àNAÇ1U0;Jl²+‚N p?áÂUEÝߤ’¢VcÕPÍ.öû%ËÁÆÝ]9¯Y'®È4¾ŽÕWË”ý%d9ñÑg0")¦§9åéÒŽ< bàX|ŒåÀN‹9_–ÔúѧìPO>Ÿa"úIc}äI=T›¢ífjÍø oyÚ¢Úº…Y•y*«¡â"Ixut~üŒŸ¾=º ÿ¥ègl¬c4`Àè¶XØ/ήªâòš—îûRÔ–½+êÏ+ÔüD“çâyhØßR ¡#¥œ?ãœxVg& -‡ ÜÝØ—'Qè‚8ºT¨Tu¢‡Â7õDendstream -endobj -935 0 obj << -/Type /Page -/Contents 936 0 R -/Resources 934 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 925 0 R ->> endobj -937 0 obj << -/D [935 0 R /XYZ 117.8281 740.0018 null] ->> endobj -362 0 obj << -/D [935 0 R /XYZ 117.8281 406.999 null] ->> endobj -934 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -940 0 obj << -/Length 2140 -/Filter /FlateDecode ->> -stream -xÚÅYKãÆ¾ï¯ (xØf¿ø0`»mlC€ CÖŽDIÄr¨Y’Ú™±‘ÿžzt“M‰£È§`€a±ºº«ºº_Sr•ÀŸ\I™‰\år•™D$‰ÌW›ÇwÉjƒ¿¾“NHÛ\¤ÖâëÂhl²T˜\«U.òáþÝ÷¿H»’‰(’B®îw²Ä©S½ºßþ;úØ®cUØhX«¶[~‰âç?ºã ÈK.nâ<Á6a¬1«XAPÊÆçCÕU,>7PKQd7Æ¡º]ZSI¡ŒÎœy5ÓÏp<•§g±¬ãŸ*rq ÿ¾Ö[<ë²q ”4²d•4)äYž;oíU) óÂIݱ¾mRM‡Àò6=á‚h뱯§ –‘àá;ŠöX©•GýóØ&:”øÂ1yÇ,N+€ãÊmvCa~ǃl(̨¾°[j¶˜GŸ:´½5Í,⽺¶×¤É­¡Š_ ÝQnº?™EîEÔ.†ñŸØÀÉ\¢ߌ•k,;Nrèª+îÑpˆ™-nuO ~Õ=^Í3ù“Ôæeîï5Ç~¡¼¾Á)Öe1ĸáÀnØŒÃÕÓí6(ÊÇY°AZv”‹mÙ9gb\‡’Òà-×a”`Ùmž ¤¯9΋áÎÐ]£ïÈ+Èq^ú1`‹ÛCè=Dª6´Ï1 ÑUå†IË™ý -Ý£€ }ay®•DR<ÅìLx ³9»Ó˜Ö¸¸ëo¨Ÿ6þ†ýúôH˰ÒyˆÁ³nÙ>&ÔŒJ à8—:oõR>ò‰Ë¨ÁÃ×E†¥ódMÐí©9;ÁëM×N†$ŽÈ˜¦°çp# œ±©{z6ZxYDWï´OÏ÷ßvT‘í›Ðäja<úξAÓ•ñ=hÿOd7Ùƒ‹+h9oBdQB@Œ„Ó©ÀÓ#-Š“†Ö‰‘¬)êvÏbÕËT’{2™#¸¢fpea#å–Õ°!xûм©éü€¢¼D2›Š°wåfðÜÒQÔ²š×àÅ Ÿm&F£Â͸£Éê9âbSm…hõ {i«j[m§š Â"Ý@PB¸pÐlKd|臷À}^Îj¶"M}›o— €ÅÌN„¯¦N0™­• ™K/ùÓ2¬J*v–J‰™ÊÔ„(p[>æˆÆo˜>Nð½ã½Î@:hð!ƒoÃà;÷®ê*ÂB¹ nÈ,Gœu7(GaÔ8€r`¦ A>™Þ‚ô¬Ê¾³"“ÓBO·;¬KnÁh*G×ÞPÂÜ„¬pôØqäNHŽÇ$){î(©àÊÔ 4šT— Ç;æpvM€‰¹yjRǤåÐ5´nÇÝòó«{?ºñ7ª–ˆ[Lš8ñ?µ<ÄÀé`2&6ª·UÉÕ:­ÃÝíy0¸¹ÆðýK'é dZÓFý««n°Â†Y(KC7Ø@ ÁM[ÎéÏ0{ŸÛñ†Fù¡‹0?L& -]— ¨õU¦ +Ü^!Û±w\³rá+¨5Ø…Œ“6yžû%…ƒÞpƒÎU–%…•_¥É³€Ê£/'®[cAGf{ä¦I/(Ü£ú˜qGñpñ¹­ðJغU›zì‰äv¾—3%äÕÆçr¨§!qýʾØÅ/ZÊtù Ãß+Wàå4;´»›€ B8özëo¿á}™Ë€“æ«³ŽøÚᬻO÷ 0åîM@¨2+´1·"ÂPü$åþ?·ä­!`ÝU⹫‡·ï -ºMa!*oÜ ~uÿ^­Áhœïÿà ÿÑÏ^¿A·|Ãôwß9L=c}ß&gBè¶ ©þ?·û:‹Ì£#Væ¡$0+ó ĽcLTïÑ M 5s Uðô8í²  Y·$×ï|Sn¹Øx ¡œnì¼È©XÉ ¶Õ3¿þ²”Œ<›Êw†%ãÙFEja̺Úž]*pF²ð_OèûT³eËŽ»Åo2©°©—ÿ°´d'å+&ÎõŸ6ÏxuÚµoN­SyV¤Ü™¼ÀíØå>Ãûª­:¨ŒRT*”JÓ¹÷ƲhtÆX3^Å–®Ó¨ÞñÁ-´57gþ% YÇ›ÃD¨ÁµËgRÌc4ƒi¾jU×íæí–øóEKb•(°±Ãß³#FîÌ‹Øt†*o€¦½šâõ’o]\O8h– 8|öY 5X¾®2Š´rü -ëOƒÐ.àÆT&U¤¾=^W·äP• •J}m»oøw8î+Ø5ô8#mô\ƒe@:\`P’#áólÉ× ÝJ-§¬ »Ë?‡nÉcE.³lD)¤?í£r:dü/2SªÀ ‚‡Åp€{ÖþÓ&v€¥Ê2»òÜñŠS±Âýª0©>¬—ßÜ—l09ì8W×ëNµ×Ša©¢ÊþìKçB×þãñš¿_åK8ÝÏ*…©Ö‹¿ÑŒ2ñ$´ð ‚Ñ,‘ãRhw–+ð¹Tø_”æM endstream -endobj -939 0 obj << -/Type /Page -/Contents 940 0 R -/Resources 938 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 925 0 R ->> endobj -941 0 obj << -/D [939 0 R /XYZ 117.8281 740.0018 null] ->> endobj -938 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F41 605 0 R /F40 642 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -944 0 obj << -/Length 1206 -/Filter /FlateDecode ->> -stream -xÚ•WKoÛ8¾çWÁd4fÅ—Hu‘Z )º§Ö·$Ú–c¶åJrbwÑÿ¾3|(’#» - ˜¯óø83¤è(†QªˆfšŽ”ˆIS=šo®âÑ,~»¢Ä¥&‰”8ìYðD§ ô$Ñl£Þ )e„+hÃ>žp„™^}¼jDc’Æ)M—#ÊRÂ4KF nº¸þû#O$“Ñ'×ü[—®ó§kªÓÕ_7ãÇéßï¨l 3ˆB€Íœ%¤^åÛy6†)Õ«1|oÝ€F¦„^þÓvëúÅ1<ªÇLGÇÝxÂTØV,æ·„$Jk 5þS»>ûXB¤Ì£ò -1W_§ ‹ W„j%rÞ†_â¼ÁYÎß’:œÓï@HtTFiT⌊^ÆÀUQ.`ºÂé7]¯2·£C;r}B»•ºt­qÍ–ö¸kŽÐ:w0å†Å6hÊC§®zż=pceÓ@è„r8œ”Y÷p'W­xQ2šÙ((à_G‹£_/ž2ð¬t£—ð¶g\óST®8Ç£eQv0¿ C%Κ.îafëE?¥ôBÌl¤’>§«¢BA2–f“¯í4LêàôNÃÐàmQÝrá7¬ÍÎ"üü½ ·‘ ‰ÇwÄÄt…)¸÷—’}{væ&—bƒ$íð%Tg'·Qû Ðw‘¿²Êh°‰knÎRNEBÓC¿!ÚðK”78{­¯× eñ€PCfG“€9Íëû×ÓiÄ·æUßoNðñúyKŽÿ0N)Ü;¼÷÷ÁL^A–“› VULQH‡Ò§ -<…æ¬Gáÿ`“#endstream -endobj -943 0 obj << -/Type /Page -/Contents 944 0 R -/Resources 942 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 925 0 R ->> endobj -945 0 obj << -/D [943 0 R /XYZ 117.8281 740.0018 null] ->> endobj -942 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -948 0 obj << -/Length 2524 -/Filter /FlateDecode ->> -stream -xÚ­YKܸ¾ûW4{PÓ\Q¤^8°½ rà ‚$›ƒÜâtk­–f%µgÆ¿>õ"[šÑ>Œø(‹õøªÈÖ›þôFë\I¡7¹Uëbs8¿‰7G˜üøF ‘I •¥)vWf÷6Ï”-L²ÙÏ™ü|ûæÇ:ÝèX•q©7·w³Íb«´ÉÌæ¶þwôK¿KŠèa·7iÕ;55¶S‚qÇãG7ñàt -·ûÏí_~ü`³9÷˜§¥B®mtÛ¥:ª†æ[55}Ç«–2eFe¹•EýÝbÚùëþ ©>·~ç|Î#OT‘yk»”*‹µ­éð`0ìy lžd»q¢­ºã+å¹6ÛÇíÚV c]è\ˆþÄúøI7{cŒ*m^löÚ¨Ô– ‡ê|®†hKáÙ«]’ÃÉEÿ¥‰ºž¿Ã¥eÕèHÈïðÏN§fü‰›Í$_!û È.ã4Ûb¨÷Íàj¡ëøû¦>0©¥>Þ `ïpÄÅ1Ƨ3Šýy·‡ÿ} 'i kX`l·°‹HÏý†M!±¥·KϽ -‚‘ÈÏ‚z(Ù@¼Ž²ËD‚"ùà"ú/æ®~îÌ ÉØóaì^Ø‹—ì×Û_P1ưÏsõYcÁQwZ$EYª Mt4ü´óbUʳO´JuÉAy»+ º§ÍRQ¨ÃNƬ[é°¯ÄbnTŒ¬Ø ï9 -G·æ¯&Vi–zÒ«™Ã6©ˆ|FyQ–ŒëÏwÃ'„`Eõž j܈úpõÈ#“ôKÇlrD#x@«Ràèt_À!FÀ…&7QÛ³Ï}áîÅCžD¿ÆiLn¶pUÍd3˜'1º‘â‰i@Ë4ýÜþ÷»¹þ–ªNâL%‰Ç–ª{ZSr’¨BJˆcÈy™{…!šƒ×pWL€r àÁ´H÷ HÒH’*Ébû,§k\“Ç{â8úx3Fó¾0¦× ½Žçç&ljÆ7“¨ù´ &Î&ð¥ˆB²Z¸–¡jEŠ®jŸ¼h°e…O«'ñ†î„_±MÈýæýmHŒZ' -Ô–mÒ R“…,3Ëž/²h ÞÏÉ)‹.“€NJ•ÉŒ-ŠõÇÝ>MR†>ûC5½ýÛÐûnëÝðöÐ×î+á<nÑ;ßµ-÷ÑÎ8òÈý·³áíšÂJ\ô«6VîE’÷¿ ‡£5ׄƒ+›Z‹ÉIÁiRâŽL=ó,:÷µR0ùT5„î0Ü#v‚ï¶l]oæadZö×26ˆ+ãÄŸ‘êŽ×²S.1½ù? Ù5äh‹{^Qkfî1=OÓóôšEVTY G\~&9–o^‚z[ ÖQˆK!¶R+h]œ§‰Äüñ âíÉš9Ò\%y€Ãù¤w`À¢u¦\šªÀ¼€êd‘GÞ_M‚Ë.B·ÜÛ¦*5¥ß-U"è@&¢d=¡*¡.¨:ù^³&ÌåpÕ‹,Çü¸ÔëÛ§Þ—uË#éÎØÒg±áŠ2àØ€(#ãÐjiàÒ^ÆÕ0WÖ¤W­¢0„8x°“¯Î´JâòYŽ™¼Ïä+U®cÏôÐw;L$××`˜[0#Žs¯ãmÕáa¶˜"umûaÞkÎ÷TFs-ã‡q 4òhÛõÓŒ<Œ£Ï¯ˆ›h«lRøÊô÷ ØÄœDp7¬J»7±VÚÂMa¡“­{lƉl¼…=KÜ|Gèí­/Ii¢m· -›yô÷QðÇOx°ãÉ û~¨ãÂKçý|B’¾yŽŠø/ý;–›±$Kaˆb³Z¹I}J5çB³šC„×rU0X‡û²`ç@‚"x «Qÿ?£Ñ¤£ÑB4’Û§\2À‡¤èƒâB x2ŽFÐXÉ¡ˆc\$¥¢”ðsáÅíƒ`¶ó×±Pa¯s´€ïl–‹fW7“Nþ íC A¬"È1¸‚A¡£¿V“dÇ¿@4Þ@±ÝVÁuu”5ÍOÈAм%¢U(ýaÕÓ|Jƒ(áQèË$BüuKë¡Ã5JÇ̪–4د¹–ŒTÈØ-Ða..#aæ—Š–¡ ×JÝ#yK.KÎo‡Sîqv…=JA$(®ŽH[TÝI¹tæƒ>Í‹'Idá¾3úÚÊ/òêZ9Sç|\P !Àªp)ò‡“T¶wûJ® îñB¸ÊBAþðÁQ@ZTe -Y‘ƒÃàe9)iS­)¹•;,Ųè“;‹N¤H ,ƒ±ÁÕ OôtÍ[E0ŒÀn8œqŠ* ‚*”Ï×8"Y=÷xrýß.×lGmó%,Í£»nqxp “‹_П<‚Ö^”¿Fá0Ö´ø¥G–©öÊ>¬¢YËhˆÏ+”1çX'¯€é Mà‡òÎAÄ” ~"¼‰píx®¡³M*î®îÅÍÈ5 u~¾L~¿+/yð¦XsH„]«%ÆtF/´Á¢²ÏÆetò#VkôáµìíDg!}Ÿï/Ó*CÑjlæxQŽùßQíy .q‘ŸXÀ -ƒþ) Éæ8(iÇPI8Dqß3üâCœ ©Î¸ëåùjeÂo&K ¬¶ü™ ù©¯2¸í7ÇD|}н”0{ -WW¤pÃÙÛ ?ÑíÙû°á$ÂçŠî†Ðj^MÐÀÔù@³6õ×Mk³pdfjÛýUM|Ⱥ›'.!OµöuP½avÓi¶@œ`߃ÆÕ÷¬”éAEô„†C +b¿¦ >½ˆ:ûçZôÏÛ<>Ï{4ðÐPâ¡h£òæ</Æ/´)¿J•ZeƬþÄhöW¢•¸˜Íñ‡¡Âsæåó Ãïe/7ü/H«endstream -endobj -947 0 obj << -/Type /Page -/Contents 948 0 R -/Resources 946 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 950 0 R ->> endobj -949 0 obj << -/D [947 0 R /XYZ 117.8281 740.0018 null] ->> endobj -366 0 obj << -/D [947 0 R /XYZ 117.8281 365.5544 null] ->> endobj -946 0 obj << -/Font << /F15 459 0 R /F46 625 0 R /F47 632 0 R /F39 472 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -953 0 obj << -/Length 1693 -/Filter /FlateDecode ->> -stream -xÚX[¯Û6 ~?¿"蓃5ª%ù"whnØ)¶‡½4À€­{P'1Û™íôôýñãEVìÄɲ"@DIE‘IÉrÂOΤL…QFÎÒ(a(ÍlU>„³-L¾ŽIÇF$qŒÝ‰Ù…N"!Ã,*‡\ÜR*¡S Üiët¢‘ý§åëÇ(ÉPda&gËÍLªL(£’™ç[®ÿ -Öùf¾ˆUüžo™xÇÍn~-ûÑø»O-?Îÿ^þöêQÆÃM@ÅQº‡"U™¢MžvÅj®L°›/tEË-42芹 ö{±ƒ‰Ã|¡Ò GrUXǰ²4—s¯ÞpÛíæn,ÊšÅòÌ6¯ò¦_\WÝu5^½æÅ2øÊè -5B¶—é¶ó‹àØ`ú…Ô"ŽÜQo­ƒmSH*Ç÷êQgCóÄZèPÃj\t°]—7¨ŒÑAþÏÑ‚)@‹ºj§,›%˜´_ûY~Yzx$àf©Lz'h†ì·@ãùzР¼³‡¶h%ä 7æM=‚Ô—~Î y¾øc‡Ž«÷ž¡+G²NsÌ9^=àŸF«R@3Fërþ•u¦‚y¤<ˆ°L“³¡ß•LíKæFpÒ@Åý .«Vˆ% á¶±e‰¢jÕ–§ö¶Úâ»%4²P´†  žÝ¶õ”Ý65²ìkŒ²'`”ŠÔ”;sˆ"B0i#„{h›÷GÒ²å™c…r:.öS æŠuØ:­‘¾-;„r;I´. Y¯ôê“wU‘ЯN‹Æmã¯üH÷0ºš U‹0‰’;sáýV.ô|£ŒtºðŽ3˜òZÂ1ÝLw£š~ÚéòÖpWá¨t_r£2ˆï›¢:Å]Þûª$"ãÙ;3oœ·ÁC-‡;¤ÃXfü…—eÇTçìÊ=ÞpÀ?¼°³C¬ÒhÍ-ã1çùŸ€|ÅW - 5OY¾‘ÖÇn2-Ãc81*ú¼¬„Œbs+/GqB±êÈ‘î`ˆg§LÓ‡äì!’àw5ö:dìÉJ&2¦ý-fú^¤Á½ÞØrã<Ö´÷Û.wm­ÜsÚ=]Æs®'x"²¦uÙUðÒ?0yåN Í÷ŽW›¶›¬-1\udÚ›‘ëG•Sö ú«ƒ V8Ÿ‘2g…ô väkx¹8œrÚOÙTÈ_Þ ý*€çÓ®$F)s‹!$é4ŽbÃ(Ý*?Ì ¹Žr_Ñ9Ëà n”4,tJëA -£îº>9Õ 9,ÀóÄ`l ÿFTé|¾Ó—<•b$rø˜iöféz#0 ‰G`hs="ð-‡â‹ªíN/8:%yì‘RŠ -·%ñ²BÕTöçv˹žÔÛQAà§.WGÂeâd ·Ú}§Yà5íC&g)Xó™ MY 0‹¯öá8C—êEÿ®Ì»bÅSüu‰ø'¾Î¸Ï‚ð.H´žüìçy'&*>g©fÓPzQhžo¥‰ˆ  ärÃäëù;endstream -endobj -952 0 obj << -/Type /Page -/Contents 953 0 R -/Resources 951 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 950 0 R ->> endobj -954 0 obj << -/D [952 0 R /XYZ 117.8281 740.0018 null] ->> endobj -951 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F46 625 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -957 0 obj << -/Length 2253 -/Filter /FlateDecode ->> -stream -xÚ•]ã¶ñý~…mÄVDê;A^äÒëC´ -´éOâÚÊÙÒF”³»E|ç‹”lˇ-XRäÌpf8Ÿ´ZÅð§VJQ©Kµ*Ò8ŠcU®êó‡xu€ÍŸ?(J²2ʳ ?vwIžF*®r˜eQ €s¨;h¥t” @1à%y‚à?î?|û1-V*Žª¸R«ýÓJé*Ò¥ÎWnßük­6»LgëoxP›ïÿ tw*‰²´Òâ~³8†×°³åGH0ß‹ô,þùx'¥‡tïTôíG•Íu ·¥YšÂ•)TrAÔ÷ÇÖmvð¹î6jÝmßá'LŸxl».×£ín©µ9µ#®¼1V Kž@Ïã¹,Ïì+€?“õÓ£úãÑNäŒÍN'¸ÞwpŒpbÁ'NŒ™ŽÙ Q“j.êŸ AÄÇq“èõÛîy±`Üᑇ%}•¨Kg@ i<]Íšõ“ı£áÎèƒ9Ÿ‰yãÀ['ÓÛ,.äk¼´;zãAF†pÇ…{qd;ÏÊ•T„€Ó‚…{}†…Á’òä²o¯iÎ:Ç…ž\1K°c’G”¥íh]*b€O#´Õ?ÚÑœx÷©xÂ,Œl!¨æp¹A#€9öK†þî•DIµ&³«™‚ŽaŒA*a -ñÜ5†eÐ…å'^yÙø³h^Š9[^z“ŽMÇf dàq0µðlx¥FBGãÙå/[÷d'¨¯ËhF– ;=x÷ŠEŸt)“<Œ;ˆžà¶ÁšŽüuã[x¯t¬mZ²6Ë®äx nñ刦H3D¸¹¢xwìydeÛ%I1¾$IJŽ’$rA¿_¼KNŠå}²U›ö×X%v°þ8\\´ó-ï½ ?´^z\1â÷xzc\Їµ£d§7¡úûÅœ"Ï»VQ¦*Î<ÿðN™Æ±7}œ’{! ÌGÐZÀ–£ -PUëŸ?òx4aýÿõ¼À:&Òà öÉâš¼2ö³#„óÙÛ>¹±©Ùx–ÒΫּ"5ˆà€Y¶þÍßL=™ˆw?aœª| "܇믗 Âzc»4¯[^ Ѫ*YÛÕòI ÷™æêè@cAóÙ¡¢Q¦åL0´fŒ7”kÒ«“uZÑɸl_Áw!¤‹¥.ä …PUåZò'šg`\³÷d€ ó£…A­¿ˆÃfÌŒsvöÉëkk).d,ÌëYY ¸÷³4ò q”v`{Ï%m§Î§‰Gögª%«ôºRšõŠöÆ#o6þHAéšÉ¡>D4܆‹ MoÃÞü(ä“ÔâżÒÊÙø¡€C­ë^ ÐZä( Ï.â¥=e‚ÞïÏŽÄ‹)Ê H5Æ`Êùm€uBÏÇü0TÁäA,Z°kŠL>˜ÙY ¤øé·îñÆÇ T]”šá£ Ö}ÍàØ?íC±jõ4N"§ï­ìçà_«ìÊ÷ËÐctÚ‹¢¿6 ô}T?BÁ¿_êš¿þi‡~^ž¿¯fUÐ{Q>P.lüé&}mÕ—¥ŒüRòÌi£w–Ìb¢×e”$18Í>›Áà1ÇÁ8»jr•eì³ò`Ofb×öÕ§ü -‘ÂxºÜÀºYyâ¾Ãf± %$e1\€ZˆS”ãok0™xÅ`ä¼G&1øµ³T*½y,ñØ¥&¼³f+ÂܳWq—be‡lk)êp„ÕxH¼E"TÚ õ¿1”•<ñç/XS¢ hb¤ïDÊ|bæ$Y}S{¼Á®Ô™¡°ŽÛ§¤È¤‘… ”“!_R·¼[Gìç;,½ÕÌòom&Í¢m—m i‹µjšk)Ò;wB_$,ÙŠã(-Ãc¹hx÷½åï—#?ºp'„+¡uÑ!èáüDÍÄt­S¿q-æ‘Æ§ÂëRÔœ}ç–Å,Š-P€N+IA—tR‰öN¤fz‰Ø2Ð9Æ,žÞ˜ž fÆ1Ú0LçáG6:D|ê¥kC™}s¥TÝqô0þñ*Õ¹¼dkŽÂ&«=\ú‹·‘ˆw?u> endobj -958 0 obj << -/D [956 0 R /XYZ 117.8281 740.0018 null] ->> endobj -955 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -961 0 obj << -/Length 1887 -/Filter /FlateDecode ->> -stream -xÚµXëã¶ÿ~…±8 2°bD‰Ô#Az¸w¹‡¤h÷>¹¢àÊ´­®,9z¬wó×g¤üXí^R¤ð‘œápæ7Ù¡å"‚Ÿ\H™‰<Îå"S‘ˆ"™/ÊÝ«h±â÷¯¤cJt.R­q:C U– -•'ñ"<òç›W_¿—z!#QD…\ܬO‹”Iš,nV?Ÿšz)ƒênç]†J%AÕà7>˜Þ/˹êk&ÜŽ0˜¹¯vUm:$?2uh™òöã{^øéè°µåi‰âÚ6ô8:åÐvL^H"¦5k›žåd´Ëßü e"´*b²ag:Vtµ “, Õ°Å‘ /|ޤ6Üúõ{•‚Rh‘d‰‰(è/ÌrŽ›YœÅŽl‘×,´!u@ÍÏKÐtèÆIù¶c“, JÓ0Óí2Œ3܆³Zy+Ö±# -´êqÜ“¡m°gëT°‡9£BI!£HŸÃ´2ƒ™30NEšç©³ð¿hÁjcw¤Wƒ ½€óTÜlQ •=Q –È™ìÝ4f@í™Ò®y÷³Žw|¦s¢6(æ~ -½†·÷4ÙÉtf°õã2WÁ5ÅCÈ&dçöb'I#VUC;çөȳ¼p`ÎÁ‰.×P‚ó~t‘‘$Šm6NS{Û[^8tÕ`y¸ª: åP“–¯ÞÝL×\Ê5]¤ \r©’Ó\ð$'LÜá);å„sÃe\ˆ8OÄNêXÿË’Gßðç3ð üÓÅ·s˜&Bi¥`£P™Ò$ÿ°­JDl˦W=ceFP«û¥† P{` Ì4Hhp·'x)KˆBGœõ˳`ê4Qª+˜§ì/9ñùhúŸ°¼ÌrG¯L|ß]JvNHŠ/;á݃7 ¼²ÂQï3쥕:)¤ ~ˆó8/‚¿îöµ—±;sR1èñ‹w™ý`»ýã0a2&‡8Ï1ãá´ßÑ…¡jÃ+kôhSeãV1 tí¦3»]Õlx 7™&äŒà5>ƒp3š V¡¢p5G®0u(šæhĸàrÙºë!åë(¢ªÞ—&\ó&JK1â´6'ûWÆ/[¿•Ò‚àÅO˜ØPú–²'ʰíV€ÏL ˜[(1¦$÷ÇAÿÈÀšœKgŽH5»sÉR•¼ge¡*„²röNÜ÷¶Ç/Ü1*¶§/‘jÓlІW¯yu$åAî#jÒŽ³Z¯ ï™7e½=ú…’ª;ÊѾÚìMò˜˜‹j8#–BË"ùÂ9ÑYp³ÌJ#0Þßù@÷åmCÍ™\MMun˜J8d®3œpwÝR´w¼·©J{ÍCoƲXe¢P‘/ÈÇKSÚ•mJÛÏfÚ¸ÀË]<­¾ÜZƒ1×ã"¡˜j²ð -!i5˜mÛúC¹ìö¼Å«2jõHm`Ú¿¿‘qà -¤Pö[{™Šš 3@óšÄZs*FR·q<ÿ8ív=xºa¦Û}*øKö™ô=†»”–¡›îR "+!Áœ#{Ûû‰³â¢‘ªT-4%Y–&³]ûÄž²Íuí PT²£8<œ\÷çû÷®&ºò·6eUcÌàKävJZþå U@K»ÀÁê¢&°³uùã%?üSݨ“$6ª|¿ð‚.>&Ñp×±»¢I Ýs”ŸÈ’¤¦ÁGû€EÀõÈØ«ƒ\<«1qÌD<&€\èŠ0JGq>.ñŧ˜úèZª$¢ôö¼0uf -ÚÈ©-ÇmÜ›´½o>‘abÛ“ËkuÕ, Ý_NÇëór· -LÇ/ÝL²ô7OðünéçZV%E}†Ë!Y6‡R’‹¢Ðþùb`«à³LBTêˆÎ‘@ÊWÇDÐñ2½cu¦'ÕaÂÓ1!XÂÞvøÙ !L·,‡TË‹'KÙra ½1Àé^6ÖuÚ&»`ç' úvçFíz°M8ú4h½ óp¡ÍþFÃÛ!óͳ-dœÆBg:û-ä)ûK-äć(г Û»•]›±vÍ_Õó÷ÝB/æB‰£â;b°³˜w¶q ,ôvOOªOoÝòÞ`±¡1z¿ð⬫†KÐ3ÇÕPÝ¡™BP¥†ž©º³'Š^»3Fgf0²¦ìƺSȤÂÐQmÂñQ.Î:[¶›¦ú”~^•{Ó1ûÕ¸z¸º¾zø¾¯áóúÊ©âÎCQnÓÕd;'ï,¿­ŸQ¤Ü’&äkÊ-oÂUȬÞjïP×å“«^’Ù®¬3Îuašþ²±uý•“Œ_À]8 - — õ¯Ž±¹kÚCs‚æ¨*s[[×›7¿ «Á> Î.ßТJͽmþ7H»T‚ßýoƒÑP/{;¥ÙWÖ+Fb0õ¿Œ„€‘fúc6‚_6~N \ÿ?hqžÒÜÿƒ…iòLÛâyÂ#ÓLÓ5‹ä$ - Ìã'½Ÿÿçòé¿Ea;ºendstream -endobj -960 0 obj << -/Type /Page -/Contents 961 0 R -/Resources 959 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 950 0 R -/Annots [ 963 0 R 964 0 R ] ->> endobj -963 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [409.9608 437.2081 477.4795 448.8976] -/Subtype/Link/A<> ->> endobj -964 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [116.8319 423.6589 144.6426 435.3484] -/Subtype/Link/A<> ->> endobj -962 0 obj << -/D [960 0 R /XYZ 117.8281 740.0018 null] ->> endobj -370 0 obj << -/D [960 0 R /XYZ 117.8281 408.2158 null] ->> endobj -374 0 obj << -/D [960 0 R /XYZ 117.8281 373.6311 null] ->> endobj -959 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F39 472 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -967 0 obj << -/Length 1649 -/Filter /FlateDecode ->> -stream -xÚµXÛŽÛ6}÷WèQ"†Q— )ÐÙ4)òÐÆ}Jƒ€kÓ¶°²¤HÔ^‚~|gHJ–mew ´X@ÉáÌpxæÌxY@ጥ$ã Ò˜JY¬ ì`ñÝ‚y!!3’H‰Ã™Õ(Ng‚ÑTÉ›ÕâåUœŒ’œæ,XmÆsÂ3ž) ‰V›Ïáj¯—‘ä2Üè­êKãEçÞ}uW·›Ž,¿¬>€¹ˆ "ãœÛQ_•ú^·¯½Ð2â léµÖQ§Õ*£7N©otå>Ë¢óFþ¢’–Å>1“ìQkFßÃþ˜Snëö ¼2å=ÆåWî³é«µé•)êê…›Y«¦0ªìü]ܵªÙ»áOÍÏZ^×ýˆe·< ÃPT;o©¨6º2Ö•g°,Œç1@8ïÕ]÷Þv«õ­_ïL ‡ ÝªÒ ¾õµÑÝ“G›³‰óÿŸÍj1LÒ¥ªôJ,”¬’—WLN±1FbÇA$‰ÓXZÕëvÉBÐ"DÖ)`TW¯U…"¼†S¦ƒÔ¶îA¨Ú K<œÁ³ä‰SÂçp´´×eã|Œìaæ|L’™ú -lÌèå Õ²Kµ>JsŠÓÎ.2¿ç•1Ä$—’ÛøšÉ`2)aÏ­,ãˈ…ŸŒ'á§£¡€Çz Ÿ "E¸6xÛ"MB5„¦kì ®Í¸÷Ì3"8à@,sæ$lˆc×huƒb‹·«‘ÒX -<†D%¹ ˑϾ->¡Áèï‘g2¸ƒ%,\€‘Äø\|Zü~¤ÈQa4Ñ8Ç)àV){oeÝ{{íQ©foÉdìϵ®«ƒr¡ËÃι‚`"QŠŒB`í«ÃyóHðܹYSû÷Þ:c«¸ö¶àsïuãÌC…Ø5{mGˆüïV°½ˆîPs$xO“Ü×\jw^æI}å£é½Ó\*ÆH\•è‹Ñn@±b”ægnœ·QêIãêÐ8qiýÞ¸wá©À,y>4àW±Æ i±°|pB½»*Ï·(¤Ü6å¦ì>¼‹,Ô¯.£Ë‰HE`Y–9br¬Ëã ÒÑT|¶v2%,rx¼®4Ù¯-à ‡ðü{`ãJ«¶ø®Ofm¾}u˜ž£UIRžòSVµžß“+ ±Ç€7‹×ëãZWC;(uÝV­MÝú™-rqë¾ßV;TPX¨"ÂÇþèPtű %A´œÔ„‹¸/ -ðnбXxéMï3uy9å/0•$‹³ôô¡÷u‰‹5âÇ4& ®Q›ŸGcSñÇhl”;æð×IŽD¦=¡-p¶Óÿž°ÚìkKÔ–Íyx‡U~eL)kBýÛ àGÁá6½ÌÖÓ‚ù9Ìõ¦6Xšv¬~0â¡ë:ÐʨÖ/#E¶./Ñȃ߄ȸ]JhÅŠR]£»^»†}kØ·7ö °\Z`Üt^k{k§ Ùí¼pÛP«mø&*˜k„ÏÛwç-D£ª}UÝÈ<°éº÷g«§©wú¨Ï÷®°Ñ¯w°rEæúW:Û· -ß·~„úƒ]SaCeŸÕ®ÇŸØ¥vÐ -A+kÔ½ë•0µóáÙëI>ˆ:Bà`a’B7öTÓ4ÈGÓ s}Ë…bôà-"´0GžÆáŸÝ?}T¶ÕÃóžfAœæg^žØ õ”o\$ ÈÅ©oÝÙ"ä®ÜµAXˆ ÒÃUã·¥.üÀìA·mMàî>Œm^¸…»!—Š¡©u³ ¸no:7ܱÀÃgš€† ¢³SˆP b±4…ÍVÇÒvyuW“$·í_û£DþU·žJ\ë(Bß -v•júD×k3¥ -î L ø{sëÛåú!æÛß±÷> -ÍVFRÊFUèz&Î Žÿ(º4øãv*endstream -endobj -966 0 obj << -/Type /Page -/Contents 967 0 R -/Resources 965 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 950 0 R -/Annots [ 969 0 R 970 0 R 971 0 R ] ->> endobj -969 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [116.8319 506.9524 141.0972 518.6418] -/Subtype/Link/A<> ->> endobj -970 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [269.0442 404.9349 294.6731 416.6244] -/Subtype/Link/A<> ->> endobj -971 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [138.6142 223.6206 234.4442 235.3101] -/Subtype/Link/A<> ->> endobj -968 0 obj << -/D [966 0 R /XYZ 117.8281 740.0018 null] ->> endobj -378 0 obj << -/D [966 0 R /XYZ 117.8281 571.6773 null] ->> endobj -382 0 obj << -/D [966 0 R /XYZ 117.8281 275.0994 null] ->> endobj -965 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -974 0 obj << -/Length 942 -/Filter /FlateDecode ->> -stream -xÚV]›8}ϯàÑ‘ŠÇߨ¯Û6£V]u[e¤•¶} L&A ²mÿýÞkÀ$«HÄǾÇ÷_àƒ8O¨–G‰b”1n£¬X±h“÷+Þ¤¶ÔhÝ…ÙX*G¶ØÒ’27Ý䮩ÒJ‡­¢Q?ÌÂÈ•”ŒJ-œ‘ÂRnÍ0}÷®PÑ›jõi}:à’S—8¬¡Ž#òíênÃuÄu@)Ú>Ï*µ¦Âpmÿ!ÛÃnK©È¾^s’똓"­”¤z -ÿm@IÒà|‰Ècs¨Ú0˜ÖÝO0QWEè´Ðe_·ïWo·çdÂù¬¶É™…ONÕûóyœÝ,o¾1ïîmwȹT§§ cÇ4[ K¾¯µ!é~ÆX©„*£Üã  ¨[<çÛ!OŠQï6Ò‚Là&-Kᨑo¨u:`¹@úTÁ“ C^Wþ4ÅZ2r*ó,m±Ÿ—{8]bÈÏ»í{šÜoB )'Åà4mTâ|4'CÚœ"G/ìP$Ûy4~º Ó¶Ó²ëTÀE$äk<4‡Ó@Ä“p½› -lú%A‘ò1 òiwõ±î™@çU@§è¿G<ç’jå„'ž>7U0CûMÜ ñ`l32òoãH›þ -c>Î#`ò¶ªi{EgŸžÃÐÆuºïnÈOœÒ…)¢£ÿ/>ªï9ÒÝôýæ|c.l6\O¡5L-ºlÅ#”7™â“».åX‰zfx'³¨v¼µÍ£&“¨JSΘ›D¿¥mvXrL¨p2ˆkNGï² { ãHoGl{C» ¼CxãcIÓÖ§¬=ù^ØÁ›uâQx·yU†}¼YÑaqÏrb´¿ÿüÐY Œ@_–’9ʕ巴Á®ŠÙãn«y5ðYÎYàôŽ›%1¹†W³×ÅÄŒ•އ؋€éoþ.(NUe¼«ëª+ÎEXÛ`aî7J€GüO-¸!—7´îi1ànjq=ð Å<ð²“ÀqYe¿åËåœKnëñÛÁäC—żèªe^úZ˜ùkAÃm0ðÎJ„†kÁwçˆí+Ý©¹¨¶EÕt²6ùó.Tô¾hB;Å ø»[S…ÿIáÄçnZ7óf®¯ 2‘&âBR§4¿öñèx _J7¼y…£mñ {øÒB÷5-´›îbÑ~ò%o™ï Zøp0›0>l…„¬š}­$†*+ÅBÀÿŸœv{endstream -endobj -973 0 obj << -/Type /Page -/Contents 974 0 R -/Resources 972 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 950 0 R -/Annots [ 976 0 R ] ->> endobj -976 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [329.8624 352.1445 448.4611 363.8339] -/Subtype/Link/A<> ->> endobj -975 0 obj << -/D [973 0 R /XYZ 117.8281 740.0018 null] ->> endobj -386 0 obj << -/D [973 0 R /XYZ 117.8281 338.1626 null] ->> endobj -972 0 obj << -/Font << /F15 459 0 R /F38 467 0 R /F41 605 0 R /F47 632 0 R >> -/XObject << /Im4 883 0 R >> -/ProcSet [ /PDF /Text /ImageC ] ->> endobj -979 0 obj << -/Length 1411 -/Filter /FlateDecode ->> -stream -xÚWKÛ6¾ï¯ðQb®ø’¥[ì¦ šKa ‡¦F–m!²dè‘Ýͯï†ÃÞ6—àsÝ[D´L—.¤î¥ôžK«i†8½ña1W›þa*.]5€@t#&è‘GpŒ-'ó茙p -)âMQy4̬B7‰«)`r-6ZšL9ü{)0áÐlq’à¥C¾}J”Ž-\¤e®&¢˜8»ª[Ú³íÆÅBðmbÇ ¿ín·¼wuÿƒʯx©!E‰ƒÄÏ‹ù¿ÌÏØ¬)ŒíØMã(OÑ_(±Ê†B‰u£ ÏšþTúyò¨ »W·3±ù”Hƒu† èoWSH[-”‚Dø±šÃ¿—B½óWùx×Ä4W2I¢õš}7¤é×àCaÙó¶.…¦ï»ò5G˜lŠ_dHÜt -m[àV—UÑ6Ôµ½+“ïƒûRî©¿P©º0pü9…ÕÅÃ18GÚ™ðç •¿Žæ!ƒw×8'=ãüÚI?Ϙ%íÅõîs?t®ðç¿j÷xm÷;ŽÜÜUàç¢+‡òÙv¢÷cS mçøp¥(ý=6âØ¿$ö…%vI¼³ò–žÚÝXÿÒ)ê¹HŸ|cˆ÷‹ WwU¾ -R¾s¤³\ž=˜¸|ÇŠÛPîJT¸™uŸszB¸O‡–˜*1G¿Á©áù çG$µà‡…‹Ü¿Qs)R­¼f}Qå}n˜‚ÕM"'Vh^f_ -œ^ϯþùЭendstream -endobj -978 0 obj << -/Type /Page -/Contents 979 0 R -/Resources 977 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 981 0 R ->> endobj -980 0 obj << -/D [978 0 R /XYZ 117.8281 740.0018 null] ->> endobj -390 0 obj << -/D [978 0 R /XYZ 117.8281 715.0952 null] ->> endobj -394 0 obj << -/D [978 0 R /XYZ 117.8281 198.447 null] ->> endobj -398 0 obj << -/D [978 0 R /XYZ 117.8281 169.2803 null] ->> endobj -977 0 obj << -/Font << /F38 467 0 R /F15 459 0 R /F47 632 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -984 0 obj << -/Length 1180 -/Filter /FlateDecode ->> -stream -xÚ­Wm‹ã6þ¾¿"ì'eI~¹r…-ì[zåà…öÊ¡u”Ä4±ƒ­tw¯ô¿wF#;ö®“MáÈë噑4zæ…OBøñ ç K£”O²0äé$ß]…“5L~¸â$TÊb¥°;2;±d<Ìbh)–°zæTA^•yí,íq°Áþl ¬~ddµØ7î1Ý& ½Ãñª±Û'‚>àÖ«zÙP÷ °pk X š|F£÷¼¿ í·Önqs:§mšâ2Æ)í"…K+ û gjm‹ª¤˜ñ€Ñ$*X¼"œ.Ž0¡âÀµÝ1uhͽUM¨p¼Î YèûeëÁ¦a½agäåaƒ¤ìȰ¢;Vå©€>Êãõâa}u»èD«Ó,Å‹¤Œ/T¸>üœÂu8"‘5õJãñ1k!q -Wí[‰øüT¡©]”gôLêÓ:f@s¾Þ 4ãæŒÀ|ùúé×¾í~'…À&)S¯0ŽCã -#Y‹ì¨0·åú„È(;‘ÙQdпE¶bãÖiŶh6Ô/v{§šÀ  à: €»nºZí†Çœ¥ ”ÁWn]ÉVð`§sKIî8¹> endobj -985 0 obj << -/D [983 0 R /XYZ 117.8281 740.0018 null] ->> endobj -982 0 obj << -/Font << /F47 632 0 R /F15 459 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -988 0 obj << -/Length 1448 -/Filter /FlateDecode ->> -stream -xÚµXénÛFþ¯§ Œ¥k½¯-àvš \X@€&Áˆ”ʇCѱÝãÝ;ÃY^%¹@ â,çÛ™ÙÙ¹haqø–ó¥/,Osƹð­E6áÖ -˜¯&€”ã3×qp9ÂiÏeÚWÒšõ…¼˜OÎ.µg Îk¾´°=åY×L(WYóèƒ}‘ÆÙtæHÇþ‰ï®èùãôÓü5‚iGk st ëMi’×ÜQæy‘„Gz< Äg·×D„ytó²È¿ŒaI7ʽøçð¶ÄÜáÙíËtŠa×Í9°ÄÑ¿Çe±%³qÃÀº¹zwÜ'#ïìR8}—wP¥˜ä®SC6©@Øï§¾¶Ë¤Šiëð¶´bžP`)îø5¬ÖùŠ­–cZIO -ƒ=%áëd*ìÅTzöšÞàzƒ¤´¿y¿©è}˜~NaWadVIQó¸],Çl./p¼ž•¯÷بæ ÏÚX‚–Þ‘† $ÑÊ|EŽVÜg2ð¡§«5mÓÊ §Ò·«Z -\†‹šÞ ‚ÛŸ‘ q¥e;ã¤$ò»J“Íš`½ÃOÑ%F#î|mœ×è4dg -·3ÜaîÓÎD”·‡Ö ‡9ic‚㱈¼ßÄEJ);Ä+SÚiYwD ԡ̘pINüWðîò”èÁ"Tô¬ ׋n “|c´‘¼¸ÌF¥y®c"Òä3::,“¸–Ìð“‹y[“„Lyʵ-™ïýºµS¿Zð¬‡+_2`Ò—Pô^Ñea~¾!Kˆ†ˆmÞ R»¸kÊÈõS^…¸á”ÖWaFÉ*Û´2ƒüsìŠ@P¹¿ -RÝÙ**f}‚Ì“õhPtÚÝÍ‹dŸ<»"©`OEr™§%uØ&^¥„á@ÀO׎7UB©¸Í`¯ô™ã áv—Q`̧¾²c“EØY•aV‡lXš8¬3—Bõ’žMª"]†˜Q‘Q@®â<.¡M똥PÍM†ÔÁZnÀÔý5Œ ×÷ž‰}ø¡Plqè…ïèJ¨þm_éÏ&¢è1¬ç{°«’ž³ÊÑ#}7&ªmÆØ»Š ¯ë‰{x{ÓdÓõ×°Q2Îþì:Ögu­äýºé/ysõ¬›EY™nÓUއˆªYXšú„ÁYÜÓ¢-ã¸X†‰¡’åVBíÇÕ7ü1¶ûûj7RÍ$(†¸`tœµ¨YF*ª`Æ `lqè\x;ŠUÀ\ ;¬¸Aí*Þ„€F/€?T¼(Ê2®;N…Ž39Å`ΛN×x 󿯡Á=溮oF(['‘®Fðð$_'>q+‚½™p¦p˜x€¤m¡˜MÓ -ŽeÖéäzò[wêV∻¶I×gJà 48õÛ×/vlô]&…vÿC‰Gmôá -14ñê|þËXBIrÕ‘Æ×0ƒŒ]ˆ[¡»4÷qsÁþ°†Ät|¨­Gº;Ö îxXTÜ…õ¶â}aÝWÜŸ˜S3ƒAÓ‚ââóv6„FÑ º›â¾¬Çò™áA-‚¹ÿvê¸v¸2Š’„,Ь™“4ŽhG=QšÝ%µ[J›…Ù½ÄîDª\´é°#—¹UŸ³ð6>ô¸Û™'=5ˆ‹3°³¶c&KÜZ²Ú3—(3—œGQÒQ,Û> Æ0väñi˜¯îÑ‘Ççd˾y ôË-p@–®[®«$‹ UÐ3Œ"‚„´Î›Û5Òú ¢6Â(0_zð¾ªe¹´UÛ—81•]›ê¾ØKñôˆ—ߌë#þVð=Ͻ IDx/Ëxß§¢/ëúÃÞyIHJþÜɽ?4/µ¸ÑÙÌþw³;lØžÝ[ƒÙ}´$‚¹J)Hh¤*Hàz\´¢ðTþN)jÿA³«ðÜ -.endstream -endobj -987 0 obj << -/Type /Page -/Contents 988 0 R -/Resources 986 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 981 0 R ->> endobj -989 0 obj << -/D [987 0 R /XYZ 117.8281 740.0018 null] ->> endobj -402 0 obj << -/D [987 0 R /XYZ 117.8281 472.5502 null] ->> endobj -406 0 obj << -/D [987 0 R /XYZ 117.8281 203.9023 null] ->> endobj -986 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F41 605 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -992 0 obj << -/Length 1096 -/Filter /FlateDecode ->> -stream -xÚ•WmoÛ6þž_!d_$ bIŠ”¨ Ð Îb/ê/Û2ªÅÈBmÉå:)¶ÿ¾;‘–)Gr<yäCòt÷ÜCšyþ˜ÇXBWÌK%”2å-ÖWÔ+`òç+fA‘T$–Í‘ÙP$1*â^ènòãüêÍH> endobj -993 0 obj << -/D [991 0 R /XYZ 117.8281 740.0018 null] ->> endobj -410 0 obj << -/D [991 0 R /XYZ 117.8281 410.9784 null] ->> endobj -990 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -996 0 obj << -/Length 1597 -/Filter /FlateDecode ->> -stream -xÚ•X[oÛ6~ϯ0ú$1+’ºvØ€HºÛZlŠmÚ¢m!–dHrûñ;J‘b¥Ë $x.üÎ…–3þäLÊX$*‘³8ð…ïËd¶.®üÙ6ß_IǤÃDDaˆË‰ÝEG"H´š-†‡¼[^½¾•áLú"õS9[nÂü@HéÙ2ûÓ˜/´ÖÞrgqxå\z0•Þ‰7Ns{U ÔŒ yÃŒyqâžx [ÎUâµ´ >åååüÏå¯oƒx¤F‹(ŠÐåÿhnk+¶æ«JAêX²\Ý,{Û¥TBÇ:šE±¾ô£¡ƒ.Õs/†ìä¨'ªT¨D ŽEéÕÁÖóE¨B¯Ê²¿Þòô[Š;·~>1yýŠWßLÙzˆ¬š„TaÂ×Â5(pÚϺûÄ‹3ú´:òb®5%/ZÛà²åÕ)owŽŽ·¨à’ìCkˬ»ÊŒw÷ö!_W¥u›ã¥Ïá«Ä[mQ‹sw&CÇ"\uêÝçu…P)âníg/¤†{KYÖV€†T{[ëá¢Î3žTIo^µw@¢Y5mmÖ-ï4gb®»o:óJ& V÷I ÝÁ¥=ñäO±u“WeãdnFN±­MQ˜ºy‚!ÁÚ_Á!û× Øó¡ß1¬&5t{9?™vwSn]Xý7ïc>ûuØÿ‡‡v5ÅûGÛ_üÐÿ˜¹Åï¶®€ ·nî/㽉Óþþâ+='ƒëÊYÞ´Nu -3Gt´¯ñ÷”Œž“š nž˜Î˜K‹úShë Ò0TOB;†Ð†TK¡­¢BÍñú#ïÝ1ßSHæå`GžÁ!ôŽMçš ‡Õ–H¦pÓ!NÀ•ˆ0 -b'J(ì……¾÷ U‡ÆDp\ç+(5Ñ$Ê*Uq`¥lÆT‡w^ÌzgÜÍ£À3[;•Ôz=\6‹@‹À—ÞosøÙ„:˜™#䜂_yÛ*Ç„²åæ dXQH[&ÔÉÅgžcÔSHSD#å„"vSåG…©HÒ´«)ã@¹¨?±P±’Ž×)”¹±¬8ß-4V«1²JK¾Ô>'@ž¦{Ö¬oyÏl Ù.x¹dõÎL,Œ3(œ&Èe0YsZsÇ‘¬5}Ý4,ªS£ËšH«¹Šð­qŸ¯pi°8œñþ®§"ÇBɱ5êëÇÐ;ôеjð,?aû€ÁÝ2’ bñ>oÌjoy“4ƒñ€`K2T‡,p †¿,ÐÂ#z¯Í÷ •£Ù3Ë…BãÏCÒ}s7£ºO ƒòQH @KKT ç_|ôŽ`¶Ïè·ÏÚ3|‹Y‡KÙi>#ÕX`$®‹I,FØ´uX¤ì„úÐðŠ`ä7Ô o¯™é´³%“NŒ­‚,¥TŽý±#˜Ý÷|—$dª½$~"œ&á@ç©¥P²²ÿs ^6¤¼÷·LkZÓÚk¦­°_9w¼Žq]¹DTRÃñ\]×Ð ÇI¼°®Ù¿V×{¾A=£{Ú¸ærŒŠq”œHÄ*Æu@¹:ðyžFÐtµ£ -À®€É÷¦¹Ã o÷M dùÃÊA¾6üIU¾$ëÇ#Ä @*"1xl!q¤á‘w„0”ˆÄÂP>ݾëÃ.üQöXùåXŠ]3¥™Ù!¸˜Þemü’¢ áW×nC aÉ»c&3M6•SW}¥Òôb¡W#½Zw2¤ÇÚ¶ø¢Â=jÀ18kÛ] .kÛÙz¬ËÁS÷&cš2~Ýô2žo×eEé ÃzÈ>ÖÝÓºçc dG¬Üdç®å…\\÷…HÅÿÎÐÓÒÙÞÿz.á¡3Y¯†l·‚ Éÿ:Ÿž[ô¢ß¼áñÃÇÇ^¼ë¾Ç^ræ¤R`MýìÐó,™&~tP°û²? -JÒ§ûß0.þ ˆæÉendstream -endobj -995 0 obj << -/Type /Page -/Contents 996 0 R -/Resources 994 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 981 0 R ->> endobj -997 0 obj << -/D [995 0 R /XYZ 117.8281 740.0018 null] ->> endobj -414 0 obj << -/D [995 0 R /XYZ 117.8281 481.1552 null] ->> endobj -418 0 obj << -/D [995 0 R /XYZ 117.8281 449.8673 null] ->> endobj -422 0 obj << -/D [995 0 R /XYZ 117.8281 297.1508 null] ->> endobj -994 0 obj << -/Font << /F15 459 0 R /F47 632 0 R /F38 467 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1000 0 obj << -/Length 1346 -/Filter /FlateDecode ->> -stream -xÚ¥WmoÛ6þž_aC!+’¢^‚u@3$Ù†VZ[ ²D;ZdÑä¸öãwÇ£l)VšCÑPäïå¹7šÏøÇgœÇ, ŸÅaÀ‚€'³|sÌÖ@¼=ãŽIª„EJáv‚ê‡qÄÂDŠ™?rµ8{}Æ3°4Hùl±( BÆe$g‹â£·ÉÊzî+¡¼7´fþyñp³P…jæsÉT˜ -˼nˆçGŸÖUYi±n²Í&s”óMÖݱõ*ßœ[1ÁX@eÌ–AÒýƒ³ MÂ'l——´þ¾«ºòv¨Éÿ‰Ö_ßÓú)Püç/ªýVgÛ±¯kݽ+k=%¾¬;ÝlÝu´ÿ'"_†áC×”õúû¡yÖöo…©ê¯víøÒ6kZý¶ªÆ‚ÏÿhÌöü+åY«fç¦Î³£ë…ݘÕÀ¤p,âãç#„xÛ]ø¼s‰~^›…“yÚ]þ=†r è:3~ %«Û½nFG+‡Gj/IÆ^ë£z‹˜Œõ]SM6¼¾Á}Ämû2Bííû¢ Î/üˆko€é‰ÈúU;=â0Íʼ~ÐõóBõú}RßÖKÝ*N…¡éù^½š ‰aÝ…ãð l:DçºÒ›'…UwS¶.ëgb£_ŽÍí_º1c}r¿¾ájØÏHÁÂ(Rö6OØÜ—Jy‹;‘×>Ös‘x]ö…]3çhüi‰c“Õåw”š£ļīîâñ - ‘zeEyØA`¤eÍ‘¯6]Ƴl.boOûÛ›Þm…´Sˆ.wp $„Aâ™%€¡¼z ó®u„®1اéà—¬½G»-6 ¤YÞYo8–ˆ¥[XŸŒÉ8f<€t(¶6'à0•eä¸鸙'Òk̆ÌÈ,F´A‘ÅMË ÚeDüð°²~Mä‹@±8-Ó0ÿ¬ -ÀÅ~,v[½½#·h‡±±*0¬X©i¯»ÔDƒúÔ[rÄŸcR(úìzqx,q.˜Œ!jB¥ðRñðEuò²:pûCö©—•H™HÄ@,ßOŽ~(Û¢›7wº‹ÿÒ²_¹^óÕ˜NW<º„2vHÙJvgYÕÆàŒrÉVÛÒú¸8 ¶p¼f²‚°Ž¼ʬût˜ ¦n§²UÈ„%‘ìo½šr„+Æ9<$7ÓŠIIœ ©RdzõEA+Ó“¶ÅAχ~V¢Õk7Ó€IÔ8ÉV6É6”<=šK§©J‘®>jlxÞ74Ú¢s.]/GÆ{F®Ètè -t>±²È¶qÉC1þpxÂü쌄ÞUV¸Ø×žL$µ=™„Øö€é~.…§-KEçkk¢+Šf -FÐ íLE!e.Oq†„Ò»²õ†°R’„ -« pÍ`ª}œ%‰êÛ矻ú™d–!“Ç<¹ …¶Ùá&ô6¸Ùµí,t‡èäH»'ŠYÖ 6š¾-§•²¤~_Ãñúì‚uã*T¾{@4D˜ÄãdÙU‡ü8v+ƒMª.ÆXÖ–tÏ Ä=ú“ Ç«!)õ<ü´Î”NS¿.ÝT± xoAë‡ýÀ_c㔥²•pï„2ÕÞL _ 6p ç®и²ÑÔl^”Ú¶—ËÓ^ë~n¦œaœ§~»xü#“í¯OF-Pã€D¡qiðTáá‡ð©ÂÿÊ߸¼endstream -endobj -999 0 obj << -/Type /Page -/Contents 1000 0 R -/Resources 998 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 981 0 R ->> endobj -1001 0 obj << -/D [999 0 R /XYZ 117.8281 740.0018 null] ->> endobj -426 0 obj << -/D [999 0 R /XYZ 117.8281 196.5821 null] ->> endobj -998 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1004 0 obj << -/Length 1487 -/Filter /FlateDecode ->> -stream -xÚWYoÛF~÷¯Š>@´â¼Rô¡.l§Ò‡Dyjû°¢(’1GEû×;3»¤uЮ[øØkvvŽoò…?|ÁyÈ"ñE¨<æy‹€ð”ꊚsÁd(:ôàž $’ß®oV÷*\pÅ^ÌëÝ‚‹˜‰H‹‰n½ýÍùÞ]úÂwÊÚŒËÎŒ«¼©Ò•Öm®îW]›Ààþ±~.¹d¾ŠÅ¼¿nuÝíÒv…lV÷Ü?Ô`ÊW -t–L…Ê'æÂc.lHçׯ‘sÀ…rŽ8os’èÚLÚÁåŽ÷yj&ï~6wÞéî¯Á>wJÿh?iª}k:híõÆŒû`÷¶È=Ašôì åìá m²VW »¹[O¾™\ɉW:ò”ü%GNt'ŽÈòÄzbYéÇÔÎ3VºÏÍìãP³¼{½'Ö—ê +kC4‹qƒp6d.K܆íz¶Æv‡ò C‚+*Ë )I´sÅ…˜Š|0ŠÄV¤ÎŒ -R1€·é ‰ŒÏ´Ç"I 7F /Ò²C!üã¾çÜ€”¼¨33’ŽÆA€Ü)Œjí8Ý }ÑÔsAЈˆùèC¸æˆë tî]àØ´fœƒê¹/uÙÔ©ÙÛàµÆ—ŽË¦.æÆ¶€Ÿ6Bl¥(Ãs”xÃð[ôâÜ„“ÞHù»ÇU™vsV—ÒEà)kÎ猾‰yY*Ta†×R*μ0–çIy²l—TsŒ}Ÿq_„#ã–à‚¡n±•nÓ-¥ ïÄœ°Ð†®k†6±w^´\±XädL`Bu•Öh1r¯}vk®õÓULËQÜ31*Bs/+E’¤ šÝ -V> ‡­I<É0¾m÷ 6dêÔŠ2ÉÄçáî=sßÂüs7bø æÒù ]Ð?5øx ´‘±Âù©Ã‘áó†n{³@…q!‰tä–BîÂ-б9wÁðÆpÐs(ã1]#n!:¤»b^z1¡„%,:ÃÔ¤,zxô».É´t¼Æ#ùÌãa€ýW¼½”hCHägX)ÈÑ£Kc³ºt7”f~ÈG‡×fcÀWªqe³§|‘™Ó)ð%ä˜=•E¢ÑŽÌüÒ›±ËÉþåvà€ì4þ;væþd\ìiј]±)G“\öTO•tȱWÂT ØM¿‘èÉ€EAoÊÔlïÚ¦2³)‚•‚÷EL ö)‰÷6’æê™ôü§Ìõ8ë€lìEñT.ˆù»´µ‚?àim–UA±kJUi%”%ŸMy€&¸ºHy/‚Ú>Žïí³mö‘B©ø•mÅ)ùKmÅDGù¶,I€I¨3-Ò$·­ÅwûÊLþ4Ãa÷ÔrPjÿîì8³Çàø®ÎØéú¾Mq=¤Óç2ÛÚìÛ¢îÓöÇ:¼´,g…xøt¬{ý :žy)ÎêÏå£ÿ££’ÑЦT ø!†9øÈ7l9µ"pî*ê–ÄZ¶ŠKòµ„²n•¦ug©òÀø^»#?c6¼JÐÞ…„JïBTP#ûú-H?˜Ò£û±=Uz³ËÏ›‹Öúª>]ÃÔ~ - hw—ö3ÚÌÒ|<ª¥_ž^˜êcÔ+ïûýÛÕêp8°¤cI®Ë*m;Ö¥«¿6‘,mûU¶ƒßåýU³¼¯ÊK‰•CãÇ_ÔDu-ç¹á'9y³(Vc+€YËØðöËß®ïyزLß.·æC„òwÚZ·d…É춨šÖúˆš‰Ý7©ÇäÔX^ãøžrøWׇ¤Îæ ê]`sê Ø÷n¬œGÎ7ŸI<ÚJ5µÆÿŽ»OGÒ‘¢¿±î¨À÷ýìúÜ~„}péSè]¾}\Pê±ÕŸsÔ žˆfÜ$°[ðøÄ -…ù6BüöbæÁ#·Ò endstream -endobj -1003 0 obj << -/Type /Page -/Contents 1004 0 R -/Resources 1002 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1007 0 R -/Annots [ 1006 0 R ] ->> endobj -1006 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [116.8319 217.993 410.9122 229.9855] -/Subtype/Link/A<> ->> endobj -1005 0 obj << -/D [1003 0 R /XYZ 117.8281 740.0018 null] ->> endobj -430 0 obj << -/D [1003 0 R /XYZ 117.8281 572.7774 null] ->> endobj -434 0 obj << -/D [1003 0 R /XYZ 117.8281 480.3299 null] ->> endobj -438 0 obj << -/D [1003 0 R /XYZ 117.8281 298.7338 null] ->> endobj -442 0 obj << -/D [1003 0 R /XYZ 117.8281 181.3337 null] ->> endobj -1002 0 obj << -/Font << /F47 632 0 R /F15 459 0 R /F39 472 0 R /F38 467 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1010 0 obj << -/Length 510 -/Filter /FlateDecode ->> -stream -xÚµTM›@ ½çWÌ‘2ŒçƒöX©¡íe¥-UmS–’T"Hí¥¿½ÂKB–=T‘Ç~¶Ÿý"aø ©áˆ–Œ2†$ù‚‘ ƒÑZP†J¹ç•èª ;ƒg4 ª²ó0€·-9Yi&)ˆ@¸„wñÂ_KM€Ñ…@â_¤v¸øñ›·9öw¾:hRÓdcwyZÕ´Ný¿ÖVEêGkN™ÿX&þoûÇF_>æ¶8ÚÝËÝòåøÓâ}Ü1Sh qC^Óv¨Kú ®Ò §è†ýCº\W—Çj ^âlt!¼¨²yîÞ¶:;>#à©ÀO¹¯·µóIï;S¬,Îñ#†j—°u ì쬦Êgƒòmƒ»ñzÒPj=[ÌaÂ-1;ÜL1ýÝö§_¥n¦$]a®_?ÍNœ†»ñ2Ä?!—0`$b‡º¤=%¢©ÒF¾QÅ÷Kn¼¯‹ûþìíuäÞÉù]í¡WR6žë]$ЉÛôÉmU¿"$ÊN3[ÈAÂM!Ÿqÿ[ÈL 9¦=!¤ -ªDhÚѺ•©Ì›eïÝb³ÆœÞ¨ÒŠ2Îæß¹a­v¸¹Å#7f)ð< åˆåhmœ *@nÒ eôuX?BˆGOL]:ŽQÍH‹rôC~!¨(v㤯õÜðq¯‡endstream -endobj -1009 0 obj << -/Type /Page -/Contents 1010 0 R -/Resources 1008 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1007 0 R -/Annots [ 1012 0 R 1013 0 R 1014 0 R 1015 0 R ] ->> endobj -1012 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [116.8319 700.7158 542.638 712.7083] -/Subtype/Link/A<> ->> endobj -1013 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [116.8319 657.6772 496.8203 669.6697] -/Subtype/Link/A<> ->> endobj -1014 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [116.8319 614.6386 496.8203 626.6311] -/Subtype/Link/A<> ->> endobj -1015 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [116.8319 571.6 342.1856 583.5925] -/Subtype/Link/A<> ->> endobj -1011 0 obj << -/D [1009 0 R /XYZ 117.8281 740.0018 null] ->> endobj -1008 0 obj << -/Font << /F47 632 0 R /F15 459 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -641 0 obj << -/Length1 754 -/Length2 1036 -/Length3 532 -/Length 1581 -/Filter /FlateDecode ->> -stream -xÚíRkTGEÅ#.Õ‚ø¢hTSˆ˜BH0 Q„PQQ w'°e³ËY61ik_´jµ h)/­‚T±UGµJj«h‘Ô'‚Z+‚¨XÁW¬ÇSüÙþêéΟù¾{çÎÝ;—ÍW`Ôb¨¤H†/ˆä H¥ - » -.7ˆ†§È™ÊH&ósô{¡T.ñ”K¤Q)&OLb€[¯$ -¤qTC•†I‚:VÕ šBqȘ@A ªïD*ˆ‚©6@L€ˆDÃQ,†‰8‰xôy -!µ¾lcú”WÒ©¬)àÖo“X“E&€A-âN±·AÖË¿ak ¸ROá]Ÿ|RoàN˜þbPº=i ¢0H“©óáKs*ˆázÝ@4„Ñ8ª  ø"/ÐëeOUâFˆEà š´"ö÷!‰ tÂæ×ïÃ#jf¨Rãþ×ÓöƒœdÔ¦„¯Ùýµèu͆DãF+…"–È®W»ø—“(…ád"K¼†¦5&„"¶’³à$YÇ’bØ#€Mf)ÐR4Ò÷®Þbà‘Ø7jlX,€¼ù'”ÑÌ÷¾XÂ* ½|€T"\ú7"ª§iH2ýÓÂæñªÖâl„!ŠX›(ÔwåG[ÊW§)ÊK³kå©Ãr|w®øŽ:OWü¬†ïÞwÌpüßã}7ô[L+¹æ\®H³˜£=2š-#Fó -¶EëDïÄ}8¸>¯îØÛºÜµ·¬“ÚR*Ü;Ü}Õpxè¾°Û"i¡óÝu¶Åšž=HO^vúšÕ~+6ùF6Ÿw(, ÎûíêÆ{ÛgQE”ugý¸¸mÝNÏ­ÎÇ.7&_‘#ËÌS ù%Çïép!Ϩm9ˆ¶'O²Æ|-›-·›à}~^~°yÇ“ã_Uªê°k=Ë“µrrÞj ùtiöìù!s¹”ŒB‹]¿Y;Á²c kuþäÑÕme‘ŸŽJ.;#öûR”R‘ÅJèyƽ?åsÛ‡ñOž\ùãE¦sm'jæØŒß;x¾»Ïöƒ›ûÞ)¡óÐsk,œš¤Í·EÀì+ö32ët?´¤U=VÙ/ŸŒnÚ½f²UŒÜ–÷è¶äOS-tÿ®Ò²).Øh#[pœœÞRxï÷ãµ™ÛÅ*ƒb¯$T«/¸×—X¼Þa¿SZ}u‚9¼ž¾¨©µLUôEؘ­éè:Ú„<6ýöéZr:óÕ«='B"w~æC¨«Ã·î|ðö»‰¶¦ÕÄO‘j>œgZd€ò3¢Îó;ÞÂwìWeŽ)±ã·u4Ü|„Þ<“·¼ƒgêT<éš–›yßwɵB›5wÎ;Q›Ût/੼<ߥÎòtm9¿·»@éê¹éÐEñİ“»_<}«$9jÂR¾^hè[æW•Y÷Ó9¯þf©_ alv÷nCµ¹‹“Ÿ.pàÌnø`qñWÂø!ÿ ü'Pjh†ÒièdäOC@R×endstream -endobj -642 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 1016 0 R -/FirstChar 62 -/LastChar 62 -/Widths 1017 0 R -/BaseFont /RDKFMX+CMMI10 -/FontDescriptor 640 0 R ->> endobj -640 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /RDKFMX+CMMI10 -/ItalicAngle -14.04 -/StemV 72 -/XHeight 431 -/FontBBox [-32 -250 1048 750] -/Flags 4 -/CharSet (/greater) -/FontFile 641 0 R ->> endobj -1017 0 obj -[778 ] -endobj -1016 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 62/greater 63/.notdef] ->> endobj -631 0 obj << -/Length1 2362 -/Length2 15462 -/Length3 532 -/Length 16756 -/Filter /FlateDecode ->> -stream -xÚí·UX]Ͷh ÁÝ!¸»»Ü=¸ÛÄuâÁÝÝÝ5¸»Cpw‡@ Á!‡3ÿµ÷^díóxïÓý.áÖGê­ª—ŒP’*f1s0H:Ø»0²2±ò‘ˆ)¨©±²°2±°ˆÂSRŠÆ.VöâÆ.>V^^6G  + èž’DÌÁÑheaéBB#FûO#n;ÐÊÔØžDÁØÅ`êÃÔØ–䳃©ÀÅ“‰DÄÖ–DõŸ7œITΠÀŒ ž••ÄÌÊÔ…Ä`aeÏü“Œ½¹ ÷…Í\ÿç‘è ’"¡ù—&- HÒÌÁÞÖ“Ä `Ϭèʹü¿¡õ¿;—tµµU4¶û§ûÍÔÿõÜØÎÊÖó¿[8Ø9ºº€$ -f ýÿnª ø/9€™•«Ýÿ~*ãblke*boa aù¯•³¤•ÀLÙÊÅÔ’Äè -øW`oö¿@3÷/f5ÏÒâÊôÿ]Ô=T6¶²wQótüw¯ÿ´þ³¾3hz€V$º, ùe5ýûŸ¿ôÿW2 {S3+{ 6N.c ÐØ´|@ÄIâÅJbeoð x€„™™ì\@¯€æÄ‡ÄÜÿOEY¹H˜Í\lÎÎVÿ<ù¯  ³ÐØ ðá%a66Mæ¿#lœ 6 ±½™‰­ó¿Ãìì$Ì t¶Ævï!f'W¨á{ôº½«É?+ÉÂþ=ü/[[cà{ˆ›„Ù4Ø»¼Ç@‚Æv ¨3(ý{”÷¿ýתûŸ0 ¨c ÀÞ`þW”õ¿£ÿ«1¨gçºp¶y‚åhëú>JÐLììŒß# ñXz:ZÞÇÂÁõ/q+‡wCÐXœm-ß# ‘|Þ A8Ø¿Ï3'ÈÞÅýý9'ÈÛÅø«HÙÜÁõ}Æ8AºæVU¤ë ZOÿf¬3Àí/WÐÚaüÇDp‚Tí­þáùg̶½ÄûO7vVÿå ÿ³œÞ c€“«ñ{ñ¹ØþY_ “ ð.ÍÅþOñÎÿœvïA¸ñ»È[ä@΢ïò{'¬ø;D%þMÜ AÉwÙI½ÈLú@N2ïÊ.÷N ìòïÊ®ðN ìŠïÊ®ôoâeW~'Pv•weW}'PöÏïš -µw¹¨¿ÈEã@.šïÊ®ýoâe×y'Pv ±© Àå?öè–a6…ÿs©ò²ÿ»õîÞªäljeej4u}ßø¼ IWÐt6u¾/$Ð=Àü¾qxAseòN [Ó÷S‡¤köþ³’þÂþ_ò³ø AV–!H毎4eÖ!ÈÉæ/IÙþ… «÷a±‚Žrfû¿dåð‚¬ÿÂÖõ_²þ…ÿìÄ¿dåò‚¬\ÿB•Û_²rG6•Ç_²òü AV_þÂÿ®%à?êÎÊÆñOáÿòûç”ÿW»ÿ¬8+èä¿JîbeköWIØ@ÆfV ÀÙ꿆õߌ¢¢^Œ$Œl ;€›´#X|þ£™©+t.»üë«t»þ›[®bÀ` -¿¶ì`ÊlÖZá+Q4[ E.jÑ¯ØØ·Ð´šn[:.çD·Ý õø5ùÔb÷g|çÈ.o•)É‹§øô¥×nF?2¿´ãk]g*x:’Ý t¶,þ>åWšßž¨HÖ.ι9)P¦W;‚Ù$ë×ukêÏ -æâÖ’Ì´U i b'UEMwªçÛrGMN„Üš òµƒm£ß¸rèrE,‚ÍOz5{0…Ž -dÍ]m± ËdÄåÙÒ·xØŠÖÇ#k,íe¦4ɪéϨ‰Zì°_ë¼[ïÝûÜQßï ¶ø¼gB7…{ôMžf–×Yó æ«$’*ä ŸDk•ª3Dut [™ÄoœäOYJgú â4êò&´/o„rÓADͨ-!8©³=V­æ$» U[I×âýЧÈ:Þ²Cä‰÷à]¢š¯èµì¿{%À¾¡Í¤a*,Ÿ:õÜМPpR>a÷ùÒLræü!µñùe¼eJý9¥¢ò'ìÞ(#OÞé±U†g®EE²Sr;œ\Zå¼,Ëš=V !þ‰u~·*¦¿€Dîh¶ò½Â!ã —Û‘cMQ,áÐsPéá™Üs-H·§o…CÀŒ¤‡ˆ~ÖÔòyái`ÉÎüÒ®‚G‚†lâ×¥ÐÏ_å¼qÔö}kt~íýP̲>O%˵¡Ž'\JàÛqãOµËÁ|VôM®é¯•Q%}U”4AVú2ÝÄ_/Ž­2῟…4EN‘åb™°gŒ ­q:Ë®¯Á4éG[”]*ÒÕ<œm~FþHrÀF¶û¼´€ŒõÐÁ¢TîÉË´ÛÕ·WJäÒXðÌ'ˆóáã -…„ÿ·J¤}\â’W‡è^#JøIj ¹^Ø´q¹øì s`J˜ê™œç^¨‘›–Aèeîcž[ÈõíßQwÕ°Fd«mEMô£Yvi¼Ï…Žôej NФÎñ,34«í#üê©MôìGkdɲ„Ôáϲ”ŸTJþn®Oµ³;áVŸ‹'·÷©F>ªAž¾e V™e¼Tçblß‘Ee~0û::ÊJ8Âzþ™é«UŸ±»ëŠŽæÞJ =­7â¾ÂÌ'@0Gïø!½±…n+>í®“¦5ܾ#ºmÉ›Ž L̨#fþ T§~ò»•±:ÝćV°ð¾ FmŒVQ^ÈUœ¶h½&;v´]Ÿxã÷ð6œ]¼Û ©2(÷Ü꨿ÌÓ¸W”ýìV˜[ŸP`ÚpÅ~V/…NYkî_ˆ±ú¢ÀFÅ*|ŠE¼6ûSØY$¹áÄ=ùômþÓ™™s+iö#1>&µ‡c,Šx@@åyœ -¥…aBr;K˜µo©ö^˜yðLq(­·èRœ/7Õ…ªþœ|>D®Î;1µ”÷aûþk¢„÷í’t CZ!¶’{WAŠù¬‘݈©& g{PJ*þ1 GÏiï~\ÐâcÝc!H麎ɆÅùºº¦±í‘¨=ž(Ƴ÷K/;`ÐñF’÷œ"‘u‡R׬…ð™2H«]!Q6½ÆÇï ûgM–Ć€­†k-È2¯£„ù‡‘ê€õÒ··Í±2O×2óY¢@íX ö‰01Âý… -õÏb‡|bÀroƒ -….lµÌöïõefQc´ê…j’–‘Å¥¥P9¨ h™½{ø[¬q“S ÌÖæ»>¦¤+3q®s¸z¦ÿy¥"C°,—]‘¼P¨e´§“µ´Jô>^V1‹ -=tãâ<¢ZÇ[Z®ÌÇÛÕcº‘LÖ†å¯*_…áBJfÄ„Ÿ¶[\^3T‚¾á‘ºvhö2ퟳµã§ÅïjXów[ú0òYgVÂw¢Ï06Sol‹ÿ³Û„ès[b Ä׈C {7ª¹òW Ô©,Ô°n’Dx§¤üÛ¯5\i9œÓ jÌ ED0›§æè‹Ñ1{dw-aŒ(*÷$ 1Úq´Œe ª‡nUÇù› õØc`,\D~môVÁEtr¯jƒª'')6Û¨Ç\#\ “e±V¢Ò"kÆÙ.¹\Ý";ÓAÕT<ƒ`EÒr=xÍ™WGíù¼–k„ÍKF‚Z(_ï’›ìûnÎ>\/þAüž[SÎm?`vƒtÃbêa•‰H°:fÂaY_EKãT-dq§];(›1h\`~@¾Dµ7ÊéCàýŸBˆÔò}Ì»{#÷fcŒ8d”¤"ÏùGÓ -Jº'R—h廽âzDè5ëôFðÓ€‚´ÀÇom”ÕËàÅiQp½27¦œÃŠá>A.Ç\]­Á½¬|l=ˆ‘SÅ5pØç5y¿E«`‰Û1š¶Ã­¨-…½Æï>5üôè,µÆa5p·dÞO꤉w¦œµÔõ¿¹Ü"üî¢n$2‰Q#/Çú«#~@™r!Àˆ›“‘ŽÝøûL\8¡m(SâS쟮œr¢./Q™¸°mùèŽ-u7%­wv•8}­4lõLýŸîõ¯%ÜìßÓá…T½Ê« -t.FÚ¶ª©Sf'>4ò½5Þ‘§:‹›Ÿ𩝤mX» « Ô ¯ŸÓ±Ûñ’_xø’ü -~Õþc°þjIvmÍ•9P”+eç}×u±,Šè£Œ“>ù¢/§3λ¢fuS,õo4Êó÷­}^±+ œÍjC7wÊõ‰&& -"¿(£„H¶\AêßÕÈšªop)Û«Ýal°'T%ÅÁU×®÷…¶(V´¼´I´[„i$v#»TyCǃ»+ò]I¥ý[¼¿ &Æ‘|.<Ê`FywqÏE ‡ë1ûÔq‹\8_0X$4özñÛ)ú#ý«ÿl\Õ† Ôq“ÃA7ž%“$é`±±mJ#¶£+Ù0—zív×/œ¸4æ´`ê/9%Çiaãv[ý -·[¤¾_Ômgh®Ÿ©– i ŒýñºåañK0>x/å›u,vñ×Qëöx’49='F{Ïì Áôú¨·õOOÉY}«˜ÜñÖ(ëâO°7ø‚5éB9á¥Åz/\Õ@'Ñ„êÉ%tçoÄà‰K¦Ûô›qˆ³`±? -cü‹mƒyEã,²ûäA·g½"á¸ÈUçóNM4¸È2þ¡=ƒ¸C`…—*¹Çrúåk`õ¾3ÏbzOÞ¬¿Þø g4ÌçÓy7jÍÛFß~×*o? ùa˜—±¤Þ. ~š-`z.• F°ö!Þ¦ ã¨Zóõ©º.¹Šð—P¨KÀù C[ì3¢Ã‚ÌÚv;Y+w»†mX;¹c3Qœrà«'¯¦t/lG”)Œ#Ÿ€lDY¤ôw +­S½-be‘JÑù«Ìu–þóܶelƒ²Ó6~Ô§·r½¾<¤€@‚?~û½¾ ‹£îTؽÅĈïßžÆñ>ÍŠˆhúf -qÅèiîñ´e¿ÕÇRÄÓßãVm¥Å¤ K%Y7šÏSªÿÔÑ _ÑCÿÑvŸÕSØk™åð ˜ ·íôêBx^y"š»ìpó¦B/ñBX™ŒZÒ©ñ(ŸS2wæ$€J¹Q¡]óé[볊Ԇ~mnæõà]—ê‡+»$æÇqùh¬Cö¬ `ˆê½4í'BøŸ¹ÎyEÙ”V¿UèVGó › aŸw’eŸßöÉcVà/áÓ&ýXäƒh”¤"`F -~Ðà.»T-éø¬FlKFì /Îå›õâÑhwçVD!4“¡‰–æºoÊÊõ+›„“à\'ãÇõ7;ܵf¸»›*ͺ”Ö•ØËâTR±cæ/UÍFbò†¢ÕH+¼eÀ¿„¹ŒéÞý$hï<8w&“ùr³NÖ‹gV‡FgtBM+WÖHpqø–ß7b‹0=æ‹¡`/^í§kаæ×Ò~/xÛ—Ñ.Q±,›téɶñy}DóJ5À`þÔ™ô"™k”YÉn§zÜ/ µÖ vFøåÁ© Ì®ªùþ1˜é77tÆU°Œh_‰¦ÊÍÃgSbœ¦G3»¤B D 9Õp£>ë½Nèœ92ùnÄ6m©¶[î-”vSˈÖî~(j&3\nÅ`EYŽÂƒe¤ÍóBÁrÉgKõÛ -Wm±Ýx¿Iæ@ø©¹ð¢÷\Ü" WBí¦Û)–ôÌù^|·sä~¹_qgí8oÏ<¹ïôlfFH=]NÉ<my¸oQ†ùF8ð^;Òº(«P âÄ+Š8w¥dsP4Ôž5 ±±¿Pü‚ŸÖëŸþ ¥~;‰}¹bÛ`î—ʤøz‹ …š5¿Í’ÓoÃA|ñ±)òíu‹Ñ»c´¦ÑÃ_w=ä¦Á>7Þ.Aÿ†^b×¥š¼Ïܵ¨ Ἂy+IÈÙÞ犔½-YúloØÿs*qæyÞ³~_ÄÜ—a%ŸáÐeªI‚…e×%Íkº¿jjÝo‡hVeÒ¤ ´Ò½lÿ¶ÚG &oo¨Õ›JKË, K†wÈÚkÜ?P®š²Y¥ë›”¼L_váÜü¬I[3¯»t\1jO ‘=ÚR‹}þxôI¸ŽÁt³ -¾à³Óz)€Œ£^é-ÓgÛ5p][PñYìÍèIÁÉ™ -J´p­0€?E¦Œ‘0u:AÜp -š)\tSû7P¿ºŸÊ„0‡ -%€X®ÖÌú§X Ç©¸ÎvÐ -m¾õY‹)Ýd©çû~ûåË0|ð™s~¨A“r5Œâò@Þñó¦ŠÐÍdŠ_ŸwrÂ.QˆþÌ‘aÇ]Ë¢V¡*S^q - ™Ô¤D¦˜«öŽë×T¶LoŠªU‡?d?ÿ1í“å|ñLn 9qǣǃƒ£#šeŒµ4«…<ľ¹‡Kâ*𜧻7Øïír°½±¡íÜk°6iÈ-8ù¶ÈÛì×’œQúçÕ“UŘk÷'™×Ûonó]°Xâ -Û€Ÿa©Žˆ‹ẩԬ˔ -Óùà„‹Ñ¸^yò‚ÎÚÙ2g¶ÊÑLPÚ~Tsí°¤¯I¢S™IˆµIÇx—ÚáôôÝEƒwó¦“BW¡‹]0bEC]ˆŠ[ÃÜ¿™)Íu.)C$ z>€ŽêTˆô¾g †90Í#2w‹=t -ýC¶Úäûu6/F½yíÏáYøÎÓðÂ$ñ -hY=‰h¿¾;<ò9W'Cè–•B³ð÷Ü$ÊßÅÖÆ—ŒGêùBJvYeÛæì¿^O>:Ú·(‰uÒ­ßÐÈO x 3kËÛÙU]yOÏ<µNóR¹òt³’Y}_z¢—øšA±<Ñ'iÌ‹¨{)å@Ie£X^I㧯–eq¿[¥>K¨}„ðA«Qý)¼ðº%W¿v忳z¨÷9»ò§[θ#„tºØäKOFusÌ—•* ¼6έϘa±ßtéOÍ49#~!ë|Hc=d)0)[YuÑ9V#êÐIJۻö¾gÜñ­I±°ÂýðÜè˜x,{gÁm«Ìäâ™uÛšf]yåð´$ }¹¼Ô¿v«Mnå‹2’1òSZ¨öE0w›€ÍJx'¿™w7/ùPê‡aé„…3Öúf -N²ññ£‚kÂÊËg4Hq €‡­óЧrÎB¦9oÑÖƒæûÎF“quÉ5Ûe³¤5¥Rbí'kB‰O‚Kj¶9>°(ƒ]öünvw-mr0ýZ굎‡$Ö¨"ûç}Ìè_òvK§mšŠ«·jYDÖg5Þ賎¡h/¥´+3jLÑIDÔªV’`ž¾k™Av›Äø‘VA,qx‡@En%Î|­Èƒ×;´åŠÑ5=kxF}$ˆt ·†ŽúâÌnßz]gO•ˆ»N†f·z)àò»ròePDõ×»¼ÿšÂäDþ‡Kxb¤}síùϬ•ø*¨fºÊúqI«p¾8t9 -ºª_ÑqEƒ -õÏÓ÷ ­³1Mùn3ùâ‚Ü–+äM~,u| œâ5%ÙÈ3B´,z«6ë+ü5?¸Ë[ã°ÖDöp>ȳ5—+7ʿĦ‘þ1ÈÁHOp‹-lšÉÒ9pÍÕÚkù;&äiôM!)Qfî…”—jß΋4T‹ô1ÜSHÉši–³7ì{ø‚XL¡çw‘’|áÙVÇÊ 7ÆïZ}_){TÕSÖhçDˆSûKisù -3ú¯ñ7u‘Ô™GiZé. -]º.Iï)F³pqy÷ŒÔ!„*„÷–Ðïh(ŠW¤*éfc/­|kc‡Z¡ÞÖ‚°{¦ä‹À’I!¼ -V -s\Xv²à¡á11"`‹a»½TôhëÓ€ÍÚÚµˆZ˨]ˆBš„¸mCSvÐrcš&öÕ¾¯3É¡À{#”£^T3`½~—1í‹\ß´Q âDz¨Pu$"übOáXqÞƒÌiÜýÇÇ\Û2¤­´7ÙOMWƒÏ'z3 R:mØ‹²!c8š¿!zF&ûºù9>—”Ùƒ‹¬i[Ïiy4v$ž¥w”úo¬½¤c¯æî¤wNBÕPÖ l·o~ðžxì@äjK=Y8¨éò"Öžx_­’Ñ”Ô͵ñ­gàÁù»µëÊÐÞ^æïümL§Päz¬éJô$ñ·Î‰ŸÃ<£|ôçp -á7m_Ý£êöÈó8j¥\è´“V -Krb¾ÐªoÜ6¨2fmYøç' ¦ÐÖQë´@Α{r‹ê¦}›iÖø}›ÉD™‚…ýÚqä,'eˆ³»)é8NÄ9óEb -#x¥Âßß¡V!uË¥¯‰=þϤƒ—}‰Qé®aÅ©»†v.åYC̺$Z ÎîÁˆ¨ró<¡5}v»¶ÎºBJ/«¯i*Ka›M¾Ô™3bë`ô/PZÄ>µ`/bEK¤Ü‘|µnb'-#Ý÷»øõ±úäøú‡ÈÕE§ê4ÿú#•#aVuÈâútDÅS‡CKjâ Í„â^³Þ“y.5ÅáQòÓqSgÊ -ôBÁÀž½°Â¾ ^ž[3á(nw?N¤86yH8ú´…8CSL‰³¯ -¶îÕ_‰î³®Ù—n²åñ^'¡ðºË¼½]õŒ{­¨`³èñEQ­ž¤È íš«a•›àh…­ƒë––½yÜE1|—ãcÈ -ô¼ÃI~DtJ·’––ÖMra„ÿá« ’x}¸IlÆ–D}ÚÅeèž¼K³°°.»I ç¶Fàûãi«z#¸j2âz9•À~¼lÿ';Ûª£K»w!ùG=‘xãÔÈTÝeëwm¨åà-¼9úÐvýW›¯U‘•«ëâãÖ<Á‹áVÖ_^ºð?>0ÔˈæpyE'CIq¶êHÁ±Ÿôkj¹ÀI4\5†h"hÒ¶,óëdníDîY‡•xO%­ú‡8;8'‘æn(Ñ=`É  x¶‡°@ ÂeôÎáÊlÍøÏ¬v ùˆêTw‰Ssï…üÞ×hâ^ƒì\ÓËLµhväÇ }« €T†·ä ^YZï‚^úÆÌ»>[Õ.œ)“6H¬ÓºUØZ0÷ût ¥¥J –N­z3ƒMµÏþ”ß%ƒºÍý¡<Ò§_uQW ¦ÝG)½³{e¥Ê«ýâƒ.ÒOYA0Ș+âS‡(!îÛAԢϟâ‹g¡Ü³s±×ìhµ“—‡yÍ©ìlÙ)Í-£”¿ÇU¦†Ó¯U?ÂéåÞëÙøTuŽ;Ï–Â*p“*²+ ,qáDiÔiŽêg¢ź¯52öDö ­3Ýœ4kÏ ->þ”|]¼nÿ&”®§`=èÍ º»vLÃGJ× öÕª€qVí­€N¥à1ÜÜÿé{_l³±³½MQfð|;óJ׋ók¯5x()iyÓ| ª?~T{„T𨳠¥*æÎ©ý‹»ÐÁ'AUlt“—ÏÑ튤”Kåí‚™¥m|¾ÁRfÄNµ0±èø.Ç -ì=D¬dýùÊÂ%{Êâ(8iø0ÄJz]ÇFLñ€C %ô‚c-: a Å¦IÔ”Gc¦½FÖ¶‰ªJm(…h×8‰å":û¬íK¥ýƾ´Ò¶h¨Fë*õ*ãÝÕ$ïæh*sØ\Ä.ŸUkSeÓí½ Ï£n¨Ø->-u:?Ã#úâ«L'“ø)*­i¯H¥†«Òì.&%&rÖ¨CYôÏfX<'Ve§:p×RTTõ—‰)™É´Â«²×ãIF©›¡ñEO•P݃½pnx¶Ñ…<¸£9®ô8ï#ÐQõD(YrxCîx -m¸çÜäA$GV¥6ø' ÿÁ¶FÛÂ>ï2«úf£Ãë¿.uÒ8Eó—Æ¥h GŒÄÁ™5=ÎÂ&ÍFRàåy-ÿ–3%F½W4Ñò(*, -Χñ‘sŽF2L‰‘Lm”± wBñ9€`~JKY§µ$ ¾‚‰Ëjnœù ek]0¹”",sh'#&‘ª c=Ó]÷âz -öy -B¥Óè´WÞrƒ·éãVWNÐó9eLÓ«äê8T¬“ÈŸ‹<ÑŸ Œ oo§\¬‹ ú†`-Ž=üÙ¬Á)e ›{“z±9#õqÕ’”„?„.U`@ª妛`ñ+¦ê½­9éHš»§É•@>uþšì¾³Âã82!¸†„Ÿý#¼ w™-®cúÒšFÅÅàÖ°D}Òc'v¶qm~FˆJš©ÂçHç^Áç%Œ³€ äâRÛ®¾+â_•÷¯A€}ÙîÆ 2ÎG<¯WoÊ»d- ù"ˆ9Ù³³óâËVŠÓ7‡Ædb‰ÝÜý]œäJÉ8„P -^Õlx½*鬔‰†¡î3öŠ!mSìeÁGÞ¢$pR,›_æÂZ5†Q9“†°oÔ!§ÆFûLCV˜¨Z]7["FH/ÚágG>üKè¨fܸD3=Kî³§Ú>ŒRúÄÜaí=¾Ó…²Ê[ÃKû¦‘+Ë;ÅÌT*§ù뛓àl ™Ö·Ú3êüx õDá-æà -Œ`ª 2üWcÄevÛÑ…I"ùp.Ì ¡RÅFÖ〯¾¦¾9yïߟ*`Z4ë’oÀäÑ^Y:ÊáiØ0²dfÒZšžË,°ËqR²¯ûJë(ÌêY§)…Ι#fJX´úëŒNLãÈTõÅC”Åóinu3Ê„V|ÛÞX$ƒe0ä0Ó“vtÇvDëä<4Öéãmw2æ­ÂÒ”Û·KŽ:Üñé¦dËúXâ¬PdêcܱðÞñý-JµO*RÜ´K*vÜgŽ;³# ìöf:¶¾ë:yËÁ‘ú·út?ŸŒ;à&¿YO\ò杻„¹Ž~MýV'ãÛ‚ö%²4gÆ à0KxS~ï²9'ÔãóysW}eqè¸cª?"³ê[Ö觸 §Uýž‰o|±øš -tx4¡f̱%Ê TÊYŒ¬–¹;)?óhìN¯æ0=¶¾v©[î(‡ºÖ~„f¸Xÿ ÎS¤èVûo¨>rêÓTuâè3©%"¤^óN¼.³Ÿîd/Ñ÷'ì¨ÎÒ˜nÀED{¢EFN²Ëiˆñû]§^ZøGXµ‘wÊvº¶(DÂB(’2Ñú&9Úᓃ¨:ë·åÀ¿›p‡GÊM”"mR†ª7ž²$›ÇI'…Ÿßi„žg™MÛRÖ<›—M&=m•Šƒœ«†k¸Î^1O$+§¹¸…äsãD‹O/¶½ù¨§­¬ŸüªEµPà4w:1ϼ-¤t_^ -–šVb^‡hAcaœ•ˆÝ·s0Ÿ‡Jšî“{ªÌ®av/ƒ¹ËelöDUH4ji‰½­’µKÒÒãB¢}ì´LZ\ƒ4îæ¢j_T¿?©ç¹§ÛÛͲZI´•˜\…¦±%V,ˆ -í“TŠßTFulÚJë½{¯ÔgêCw/rNP‡ŽÆ{ §®â7@IŒ•oȪ}aãÔ¤#ÕÁ,pÚ ñ[7rKga®·Yc¶C›¹?ÏÃs»Á³ ^îÀª$xmI ‘v–èðâþéVVÄKÚR”ôÇ¥À¦1BW:æÞgä0¯_HîY &$þ åû£«Œxº2Ôìj‘…š~ì>üÚ–ºAWÖo³±ïMU áñ(a¤Ùè@½ä´h£Š\Ë„ˆ+eiuuÕ}€¥fƒ2ä³ûÜÉØ:\.Oô)} F§Jžeøæ®Yw“m:È´÷|Ê÷O€Bx¿²nku×¥ÌëòQd¹½‘Z¾P&ðGE{ôxÁC”÷*ý~¼ñ‡Y~ÚN§µsIN¥Ø"—¥Á.ŽÂ«sÞ€ÞÆgîCÊå/¦¶2ÉXw:\L“’ -õ`Ce×uxÆ^è0˜ºYž|<ÞŸîwkQ¿ŠÉ’Øã.Mÿ"À73ÎCÑ–\vHRýÕOXßä»Ã]¼×€ &C;Jkê²^Ò¬LÞŸeΨ!ˆˆ¬É ^R‹:æÍ$óLýœAÏ $ñíãRTŠå¤D6]•sò,T»Yû -z55Á]e§+sŽÊw £eiÉØ?WgÖ51˜¯Ái /Çôk;‹¿D¡8>HTįCÜúË’t–².ÿ²æ/d 99}ñÊ4­58sÒv»_k™]E7MdFyë‘ùú@¤Yy‹; ‹¤^²šE¦GÉâöTï]úíéÙ˜¹X öÖ›Ò(u˜r]üs… ½ö%=Ùû²Ü¡ LëÆF\>U àëÏÁ•ƒÍ&œH÷bœµxØ[‚ñubŽâ|Ù -)Ê\€v"3Yöä°fôÕ÷‹ë ¢zÉV!%p£ï‹P†¦ -ù‡dÝhb;Žõ|ËÙ².)Š9͇JNY$û¹íú˜O+øôlüNá »ÔsôáÊÍRÑ• Ëì¹}V”|À%¸ÀÅ{k¦DF?¤òsxÖ“ÜÜÇF M 7þ×õ¥ßñÌA!?`©“–ú¯­ø—¼}FóOVzÕ/¬¯BLì.Œ’Ï“Ox³2[2Òbï˜"BEG³âsYÕ“—ÖÑ̼G®6o ¦q¢¬ZÝÙrÅÛ‚sõJ6Z{GR©u‹-xÁ¯  ÄX+‡~ˆ¬œaÕ–fß–u |Ùh4`ÎÛ’ÚZ•ÉŒ;å^ûm¼z¨cvy†¸ð 7w_õTçâßfjxôóeQæèõD…'Þ¢¥û³’›%6G]bP×Í=Ö‰}q ÇaàÖÄÏ{OwÃpʽïœ^Ô[}ØÎ{ºCšåhu¤àÜ®­'o>ðÂ6s·"Þó·y¶~x4„í¹þk‘dM993ªéHËîýãrW×!Øä­)‹ûÅlQ†øFc&ý²s5“6…¦äÐÖcs”*T;,'4¾Ù?ÅI[™¦l¬?8WÔ É3¶[jbcúi¯?²ÛM ±Ä.æ*þ¢6§\oŒÊ,E†_„Á˜ˆ`yLW„”9€wsiú¸ï©©¢.'KØuèìâi¬ïEµ ý‰¹ -ú -ð›5m&ÈÅËe‘âò -IZsPwŠ­m=¼Iº¡L Ÿ sv×#R¼"äê飯žÜ³ ¹^E5¦ß3íK?"×_Å÷b‡î, -œ³¡Åî‘eòК'GÐÿ~NCØÇbº6"MkX¿U«>†˜?¿, Ó ŽûišõñÛçÙ1?iŽ~áó*?Í´Õü½4 YTª2?F岩$Σõ‰!)“S»û|ƒ¯RñKvŒæ¯vs‚9Gϯg•‡…“°wðsòd Šl*Öiéå|ßÈÙÀ˜°d®ná4y·X¶Èušy{~Žâ¢µxˆÝ+9Q\V (Z«¦-ʉ-°ú7—C,ɨÔZЭ¥bÀS|aëó?&±ùÈ¢*`º…v ©ñ[\ûh[•fï׫Ûë4à³&UߎO»’;oÉÛ畸?®áAáÐÀæ7v^L·ÎP޳âL×ì‘-C³xÿ:KÏT k˜0:è=£›*›^%A<+˜”©´é¢ BO{¼öҼؼGG&+ŽÃÁeü<£‡o¢—…êkúºmŸØ>evþÖÿ -ØŽ‹éoe<àVa=M—±¬}Ù#ºÕ×ñ{VŒeå¡yzÌâPvcJ•lÓP90ê´µ¯Ò$¶a ÚÃò Ý"ßk޹Ûta&À#¾æ¼ ytêðzõ¨DqV©l£4HHDZrUÌEâA{†Ÿ­°Ûç³e"S—V.,¤ð牛”>Â,÷ɽùT¥ýÖ_Ù¶þŲŸ¸TE5ýÚïñGÈF‰Öîñ“Q6›S³§‡T¿kûª…—5’˜ ùX$&@Ijt]2óºþ¸¤=MžÅR™Ÿ#'G5³_²ðcðO¡žnïMf:ÔèQ!I3|î-£Ë ø1¨÷ÊÉE~ÍÒžýrCÊU¤úøUɧåiÀŸ3\½1&:KÎÁ$l¤X»\V7XÊuÃp5qUñ‡ -Ý_Ïl>>ÒáS/!0¬v˨)¢kRÚ´Oe[¯ =i>4At|ØþÚÛÆúÌö£È>©¢k¸l;€—‹†MˆaKJhçÚÚ{¬?ïÎOŽkÜõèPÕáÆ,åª)DsgJsŒpŸ¦ß™î.fÒæ¡Wýn•øt-Ç…vèÔfµÛ¹/ÿ¾’š4•£ã'&€ï>#_Éç+àºÖ5ÝÕL¼Ü?Éët;Ôá\hNŽ~ⱡÀ²ÃRÿà Q”ÖåñÁ݉P¤Ô‡¯÷8ZtN=.J(´ƒ$`š¢èÚœqî—‡Âøe¿_Ô]2‰qlöÃp¹=úüÁm?ƹöû6<؇ÏUH’ ‰áèzùdGl£ˆ`pÜ&7Á/ë½êÔéž²CªKð7Èëi²·Ìô¼71ÿDŠþžÈìCc5wû“Fr—OŽ«­(tKX·¤šuq®@èkŠSö¬.»j­¡ ½ý'\¡p™¢ð‹‰úåì%ím.¾Z~þ—œÄž]ìeùý¤Çð•ÆæÏ©JªÓøœ|!l¬äõJÞ)£ îº aN¡æÉMå‰ÛÏZ\ë,úLå²õ^þM†niP<Â}~QºÉÔkkSú ¼ÏæŸ=—Ëä ‰1˜[øa„[Á{¿»ˆñ˜ã ü˜Dc©U”>½±ŸÐ]ÎY³—=;tÒåŸêî¹ð‰ÚB(òË- EâF6JüÃü5&üþû7kHÀOç^|'fSËÅÞ¢UÞ?Ÿ~wø¡4„ BiùÞ0®Kz,Œ0Õ=œ›ZßðNâã« ÛÔO2=¯À6È+'nsBŘ¿Z:ù扷ãD ÖȈòzL¾ü(•â?ÖM?Ûj›moze®î8²‹ªP¯ÐŠ ººÈ ϸQâÝâlhš0õôl=–)\BúòÓ²A>È/]6"8}ƒ&Dôˆüg,a95»ÿ3[-ŠUÄvÿêDúñQgÞ¥Vg‘çÂvœ­‚Fÿ}"ý¬¡…@SÜñÀ¸­Õk^¿&Úa$¢GÙÕzßÞÑÚ¥ÚÄ.q…B"SÁŸb8ý?Ÿ[(É¡‹1¬”n‰30<ýÿÜe³7Æux#Ïð„ÑT%^1|h ý¥ ܶšNÈíöÔ¶-™¿ß ŠnþÆ-hSö”ÖLî^VÀµŸ£<ŒÿèÞK'k› äâÐʳ‹ƒ7D7¿šú~&m>‹?Ü盈lS-‚sÃæz–9±æ?óÝzœ úX§yñ¯®µz°C¨ð,ð÷ùyéV[âÖq‚ N›öÅbæØ}TÙÇ -îXŨåÌ>ñç)Öóþ(Ÿïã+ÛÏþ¢Þ±±x-Ó”s““ Fªˆí„¾•rËûº²~ôkÜÛß-‚•EÿÐO - µ½¸Ì.0ZE)3ИØ0å’<¿ à]úøBI?œÿ™Ønê{^Ã֟eV+ -:]rg;v¥ÂcßÂö]š9ŸéÀ…Ç"‹¸9A?PŒèªGºj4|=‡èhY«Y@r;¡Œ¦4üê©DŽK‘dËëƒ ‰e‰ˆm¤ˆFÒÓ#ßóTgcškªÈ>ª. ã“ô¤î¥~ Ö6&ñk|}ô4ŒBáAÇô*â¢~ÿ‹›Æ@rzß‹±L]ØlÖ4›mÊmyÞh£r¯6æR%°O3q(…§£ù(òxmì‚ýRj5a„gh0Ù‡95 ÏÍá"¸Ãym\5 ¥·9½ô°š›ŽV¹ÛY–ßë:äTf›!¦N(Ù{q|¦¥8¨÷n— ê? ŸÄ°Ež–Ø|Îvû%ÈŽdÒæÂrÖ,–§ùöAø×*b}@4~ƒÃ´‰ó¢ÎµìRD·Žö¾÷­ôÍ÷†Äiåãl8±íˆÓ]”SÐãïÔJÄ…ÒË`ÁÁÊJ†ËÖï51É`ù½náç~tÙç¦ß:HÁÚ ¯O † %,Xtž!¯Í„oû¨Z#?/ž71Qíº¯C<%”áømˆ¤ÓRÐyëvM-'¿ÂZõá‘ægÜÿ²älËZ£øútr%º¡…áìòèeå7~*¦.Î ,P#ËåÈž3ðLn-”"]­hQ?£á"ôaX„E‹÷°žLU±­Õæ¯ôÍþ#¬B!ðãáú¦FrZQ6¼è ‹¢åûèUu¥4ЏFÛ¥ «Mð1´òÅe›:æ¶"½µá‡à¶d€åÿáüÿßÁÿ':0µ]ìŒ6ðÿ¸i~endstream -endobj -632 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 1018 0 R -/FirstChar 16 -/LastChar 127 -/Widths 1019 0 R -/BaseFont /TVSHDP+CMTT10 -/FontDescriptor 630 0 R ->> endobj -630 0 obj << -/Ascent 611 -/CapHeight 611 -/Descent -222 -/FontName /TVSHDP+CMTT10 -/ItalicAngle 0 -/StemV 69 -/XHeight 431 -/FontBBox [-4 -235 731 800] -/Flags 4 -/CharSet (/dotlessi/grave/acute/germandbls/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/K/L/M/N/O/P/Q/R/S/T/U/V/W/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/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/dieresis) -/FontFile 631 0 R ->> endobj -1019 0 obj -[525 0 525 525 0 0 0 0 0 525 0 0 0 0 0 0 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 ] -endobj -1018 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 16/dotlessi 17/.notdef 18/grave/acute 20/.notdef 25/germandbls 26/.notdef 33/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 74/.notdef 75/K/L/M/N/O/P/Q/R/S/T/U/V/W 88/.notdef 89/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore 96/.notdef 97/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/dieresis 128/.notdef] ->> endobj -624 0 obj << -/Length1 1675 -/Length2 12909 -/Length3 532 -/Length 13890 -/Filter /FlateDecode ->> -stream -xÚíµUXœÏÖö‰»whÜÝ!„àîN€` 4Ö¸»‡àNpOpw— ÁÝÝ-8Ãï÷ÝÉìïpæh®éîƒçwW=kݵVU55¹²³ˆ)Ø( ¶ubfgaˆ)¨Ë°³ØYØØD‘¨©Å€FN °­¸‘PÀÎÏÏ¿=¼ý¸yØy¨b`;w¹…€NŒþŸI¼ ÈÄÈ `äd´y‹abd P›€€Nî,kk€ê?o8TŽ@ ) ;;Àdâ0šƒl‘Xÿñ$ckðþ[6u¶ûß! ƒã›)Ý¿lÒÞLš‚m­Ý¦@3$VEð[6à›—ÿ7lýwpIgkkE#›Âÿ«RÿǸ‘ ÈÚýf€m윀°)ÐÁö¿§jÿmNh -r¶ùïQ'#k‰ˆ­¹5ÀÌÎÅÂÆõoä( rš*ƒœL,fFÖŽÀé@[ÓÿvòV¿ù`•SV‘güŸÖþkPÙdë¤în°ý™ý/fÿÃoEr¹>±½U™ýmâÛ÷Ÿôÿ+™„­ Ødkààæ98¹#½m¢7âx²@¶¦@7ÐíÍ1+‹-ØéíÀ[e¼f`¤úúÖzV³iÿFŽ7ýAÎ7´þƒ<VS°“5ÐÑñ¯9|Vs#à…ÀjdòVÿÿ(œoн3ø­#ÿ*üÿÊ\lV;# ­5Ðì/•ýÔÿšÌ`5ÛØýQ¸¬îv@Û?Ò›C»·,`Ó?Ò›? ø?÷[|' à{Üÿ¬ììðGøgÝ ¿–ôVMVG Ë_™xÞ‘?ô–Wô?Äû¶.É?ô–Oê½å’þCo‰dþÐÛeÿÐ[¹?ô–Aþ½Té?Ä÷–Où½ePýCo1ÕÿÐ[1´ÿÐ[ÿÿ?9˜8Û˜Y¿mšÿȼoÝüCoŒÿÐ[“?}g{óaú¾-ü¯]ÁöO•ÿ·¥›ÿ…oÙ-þ·ÅÿµÇØÞLXý…o.þÚ–lo6lþàÛQcµý ßl€ÿÂ7vá› û¿ð͆Ã_øOßÿ·&8ý…o®œÿÂ7W.á›+׿NÖ›+·¿ðÍ•û_øæÊã/|‹l -:AÿNÿÞ0¢¢`7OfvN37Û?Îyü<üÞÿ·™&ÎoÉé_×øÛEõ¿lz»Û€@7  ÒÂ,ØD0È2¹>¤ÄG"o¢–Þ‘8µ(h´=¸6UåhUsÚ¡a\Hz‰Œa *{—t"WÁjjƽNP/â5à©Æ<1€ŠMŸ›¦fr¤g5˜Ýßn“ùeolÛ®ñl‘òfÍ¥¶Jþ€÷ÁI8LÉÜìó••ïØúrŠ)åN’~v‹|"Ps-väáX -œ^(ÄÓK»ÁzY è^™²ZFMåÈV€žIzBd£w3ÛCbO·"[ÐÎâ—~ý^»‡NÎ2ä2«œ:¯ˆÊ[TdßóŽÄrÊ‹7†ü˜G >ëx}¨L½Ö•E8`bº|àšµök)L^‡,Ñ,ÜñF»~{Æó!4ôþ¯}6Ú1‡äi³âýa4{Óqއi®§¨éÜá#d挸9ó/l÷çŸÎqoêF±äà“NáÔEY›5Ú:2a$R1wŒ¥ø¥E=Å¡¯f¡†HxÙ•×<ºG§Rè,h™ÖØÐ·e÷c'QWþÞáäkz•@ŠtÒÊâYY'óB¢‚‰Ã›Ú¿þ¥nfÖ€X‘™Q eìr´Z?QOa>˜ÉΊ©Z/ʉ LŸÈ¡þ ¾X¹‹6íêMÐ:VçòýÁßþÙpNð½ÖoõVø£¡g"oF‰ÌT>£†Þï ‘¢ í?ƒŸÐ†O¿8|°>QÛ2rä4a>·¨<ñ~Ôâ\Ìç/ÌïIº3ä(ñC<Ü òôÞܶ¹üœòj`]˜ÈN+Æä£4M¼b8»›¦ý a{ÅçVç…[d2>Ô~L o;¤Öúr¦H:¶q(vº”¨uͲ2Î_©Ê@Ò=Lëð]¿]¨K×_תê¤'u ÑÖ™Oe„;l“žçñѤ ‚>£W?€OA¾ -KðGkáó•‚²_èƒvŸBxƒ6ÚÖ‰ve£ ÃH,ݵCEl‘‹Ê~€’õâY= - Ç´ÍU²]¬>û„Ê+ÃÏ‘ „8’÷ÝŸÜØ¡·¿Ù>Ï›‰(Μ¯Ðå·aUÌãÉ’:W=ÓñJ†hm †9B[8ã'ã£Ù}¦+qg±—`hÌ‚qóú±j?Úqè¢æ^‰‘¦ð9õ6J¤ /Ò+ú—êzîîræÍ{5Èwèy”ò$Ñ, 3›æýq½pOD•ÈüH§Ól5棥¨½Èv¯ãý®Õ^ †ˆÑ‰MäلþPÈ\jnM´–µßQK·gm» ê¾tú¶ªæT`¶8XœÙ‹Ò' ãÖó%ËjÎ&ÌÞZB -~›Ÿ.DöÿvÞØèÆ€IµtÛ-O„™};)„ÛŠZVŸYS=òDR;,9ÓÔåµu‚\¡f“&²9I¶åêù»2±¡Yø2D²ŽµÌÂVÿF¦t„m‚RqŽeïhû©}èPEúc9¨œ–áʵ°¢G©ð®­‰â6|ˆKxÏm4ãù’ôM}^ ¢=9-àä讽_ÑYeþ˜e»=£é—‘4íL‚lNMŒ7ânRãoDÍšúM·Å-»Ÿ—ÞÓ_~£Üf›©ÌjõÔîÍAÊU¬vÓæŠÐágf>Ü$Õ& -Î4bK?qíJîÙ¯ -Öñ¸1Ìšq»ÙV- 7ß›Ør6±”¼³M7 [ª‡Oóê 6£À­ïX «zQ)Åf@‚lL"ëcÕ ÔÔ{JÉe:ˆT,ä-Á!}TÄâS6(>'ï×¼'…Zožô⋉S ×4E/·ö–„x«­×§HaH¼."@€õ]ø(Åž®[#úkã×,# -=Òni™ o—PN˜ªòÖT™…%öà…Ã/:QD{JfnŒ¤šNSÍ€1Ä4qiöøU¤»+ñ4OÇÃE¯˜“—6 -ì<ãß-ŠïWñ—{ÛÈ«ÓÃÐu¾ä>¥Fùùdg¡ÉãMC9§`”>ϽôqÉ®wÅúH)M³ï‹ÍžÌKK‘åF®Kx¥FÅOQtO)A¢5ù]Ýw·¯ª|àô2ê£_¸/‚ÌÜêH¿È°ôß~'ÅEÉ…»CæÂ•“=ò[ fãwëó½cL¡Ëⵘœò &VÅâ–º[XXõÅ‹jÓ˜u0].3~dÉv÷[Šä 43à -Ü'ßÞaÚ#Ó’Ÿ<Ús5Ëý,ÍiÈŽ{Ù¶T a3ÕÞös¨ðuÁ>ÛÅ{ 7bGqº°›{ šqý/8KÅDM<}ãóPÏOí&[˜¸û „ml4BÛ[X¦ +öÌ0öK?=7_ iåa`S‹>óÊ"fK±-ቭnº-Y=òÅ£4m¢¢LÍðÒÂl€Yd }dIfYµp½fŽçˆòcûˆb«C/«úDËÍ~ôIÝÿ´‰áVYh6eBº"×ß_û)8sÖørj#boqzŸ.ñz‹zž·£¦Å‹DÉ@LhF½¡²ë~v—h"ä‰ùyÊxѼŸ[)ôY”YÐ;Õ¯ÝÝΠV+Op]¬+ßW=É3“ýT@Á,z¼YóHg+‰*ðøžF:#Ò”±I™²!¹´&;2t®ºÃE‚ƒ×Ûð#[´'ïóÆ÷žL#ÞÃD N ÿ%Þ,èðŠ7/ÇjSúŠÍnûaí~wä¯PK+ºÅl¨Žé[u•ñ3K¥_ÎÀ<•ÅyvD±I¯—‹P@ã¦ø. m-9,ÿD„‰crùiêH“vÌè”w“?¸ø:D|èVŒÙq –|¥æ+xBýÊõ9^ &äÇ) -*¬æÝP¯SZ‡!®ç-ïšÎ I4[î»/ˆª_oPí’ìÄßãX¢UK¶O«(ñ$ßž¹Ê¸"ÊõfGÓ Ü¾¯ùå±&]®j˜˜ÒQ´â¿±Eç oþùPäjgE¼ àw$†©UM]·®>LN {´³êRž‹){o®|ü %b°¥ä’c%ñ⎦¾­)@ËÜ®¿Ü¬e=%rÝs)ü•´Ùl¹úƒy® Éâ”5jhòè3‘‚µzœœPÐó2Ùd ©ç™°È Ûë€Þ?`šå^A•·çsŸÏÂç—Ÿ,H{3Têgs_´ |ly§áŒ'E;Jøö>ŠÉ{ñÓÈ‚"ÙgƒGØ£òLõïè>¸ÁÎ4{Œ}eŸˆŸ›·„ŸjiÆM} zÔ ‡q>xi{ |·åù=w$)@±!Ñ$Y»ªU iïÏt»÷s¤´7³©ÀŸØ“ö -oRU öœÈ¹Æãaé ÌüIdõc ‡×ÅÏòÇ¡w=v›~Bïz´Õ7$Ùžr`xá†7ªÙl5ä8ìæ1Þ "s(pušË¸"yý×’íBhnAgò£f'.óç¶µö\5:<3]•äTÊÄ`°*ˆ +]ö'š‹`š"2ÌN•~‰d$k l{L/Þ™Œ8²]­ùŽJ †–FQà†VÚUk=öe—aµ‘Ud:þ9²Z–«f´õ;õðRÌÕ1èYËfÕšO7 -OVŠ4IØ,³„ ï úäKý?$b‰˜9YR÷’-©$Óblü2>gÔ0o©%À’{E«P¯Mæe4\Ô…<…Èõ%Ëê89¨Œ [)‚Xϸ&ªêXÎM¼<~>@© Ð×ìø÷›Íïks:hï‚£0§9ÀÊèSÈhJÁ1Z›O&Wýw@$ŠîÉ”uƧÕÖDɳÛ‚ùù!²:{¿  $í!ƒš„¤ˆ¦–âoC ŸÉlXÇoâxd °í:%iÐ|¦ê÷áC.ò(KøÀ\¹Nƒu‚“]íDQù;åî—=Ía\÷[«'š¼ÊO \~M× -”¡Ýk2ˆË@FœiÂëÊ8AKrÌvRi³*pSàp£ýé9#±d[s·éå×Òºø‚é^’Ò}ÖÈu¹rÄún€žYʼnÜ^ ™òÑþú ÏÃÁkXô4qXíû=ᓟ†s=½}ºp´×¸N†tXÕ qQ¨áVöqÅ:Õê0>JýsG§E«ÓçuJÝWq²Í .~qZU/–… ž´U¼äðÀ «˜ÛŸi Î!„Ö)¡}¦0GÉd“Ýf¥éyj%h"žeö¹S¬„é -$}€ŸÈBäürFœÖe(÷·›¹á/UøXéÙr|)á.¿± ]£Àª7^:ÁøYwÂTãвžÄÓ#Ï©³ƒ ©ìÍëu¶jt©‰Õcµ¡óº'sÍ’_‡{’M¯»ÈwL“ Ü=ìû ¸·”®1/¾†ámÞ£pèÝ36o|$™;Ú²I>C¬Ú¡Ö¤o<ᩎ(ÎÕA…Õ¯ÐÙ¯(ðÈ“Oi|Eü yUc14¦¾:áPh"ŠcÒ~+/ôÊWNɈp)hœ§I ¨c†}· –’&UXS0ök“p‡/DJùdà0|]u—ýŨnh~½CŽòèà«pHÿ{ñT¸ò æàZåŠÝšZ±h1½ÝÅ¡+©XÓƒŒxEøzã¤𬛳aj¨bv¹¯ -¢4‹žZ·•‘H—LòB€¿^lÙ§€9-Sœté¯ 4_4±mü$& œªó:(MšTíöÊ+x1´y—!¨ä}],m>@FnŸñXŒ#¸–ºIêÛœ¾ZŒ0cneewVlHJˆtüÊ ÈÌ7y¡ZRª0¬š!°þÀ¹Ù2fž·ÂÔ1íj-<,_;}ˆ•·EqáäwXj|òSåx#ZŒsk@Q œ9 3ˆ­nh¥ˆz%ÔYe}*öŠœ!.»ðü7%uÎFsÉmÎ+ß²½{z‡p¢õ<Æ—`!ƒ¯¨£å’Æ„³Ä½ÃC‚&ˆ5LCÉ'vÖ×è~f;®X†eQ1\&²@ÙtL¢ZÇ"1lˆi~4Â$7õn<@qG K;ï´¥õ;sètcPae£5ú®CǬXÄ Ôºz®qn *b£Ó¤rG§°Í òÓ¢NÛsqšÂƒ"Z~å‰^Ržu8«…ä„%…H½ -\?8çc‰IYQ Új.\ܽFÁ;ÿ'ÂNJ¨·#”mgó1³^¼²ç#Æ 5VÄî8êûÍ·.úâ²Ää–ÐMú%9—›]=t?kv ÁÇ2ãÂúˆvïÚ¬oG{š£w•Žu°Եâz4³¥ÆC¢=UXÓ­Ô[ן6ñ}a4pä÷þò0¤qM;RÞ§Ú…±q§&ó‘z’†ÙVbR e #¾¼š¬Q‚?;FÊ‚ JÊ¢§‡ˆüLl ÖWŠrN&e+OátÂØ8¡åî>ñùˆBÍÔÒòt|§:©ÖКwÆL¿„y§Ìˆo—ÓíÈe Áqpâ™iê¯ý9Œ½1:¨.zí¿S4¥yL†/Ð6«²ãûD8L8›cXൻ)YÿNy4dré—«a÷J8sçì÷ý·/ ƈlsW8ò‹ë&Êk5¨?X…“Ç:µ}´>Ëywèᇽ ÎÄ×?q¨4×õÁÒ/8&Ó+‚o%¹k ¾i”hÛBt¦ƒô‡ÆÝEM›Õ¡˜õ»G]gµÍ~MV>d.Áâ®!ŸLR«õY_¢Ö4mø nÖì5bigj4@âó8z«Ý-áÞ×X%Ç­´Ñz;ÙNSÛ²M2Á)á:ߔʼn“ ¾10bh@éZ×–ÿRˆÉP?bHR“äŽõ‰à'èû’ãxžrÕ8N8Ä0­¼×†o‚ -O‘ÇV‹Ö»Ïr¹†+¸ø¢IOÇ¡2¥/ÏÃ.ú%OS—Nïn#¢pnÝ - p³’ÔiBr¡­=ÇÌ+1ÓjOÊàlønmC7ðöOgç"Ô^±6NônûM<ªvê;‡WKý—=@§¦Ñg¨ÚTc ÍT/úµ+ý¿U¥ŠuºÂ9—ßìëŠÚ…– ¢æzhkheGvu©e›Ê~TÝ`¬JM˜Y°ibMâgf†*òãø¢ê/ãªd[óÞºïuÝÍü$ítXÃùñ¯Ó–ôÈ™¾Û´sWþp?™Á÷”ðãá?´Íɼ?]ß²:TÇ4Ò¢ÛMa;À~äô›k˜š.:y$ÿÊa·å#vSM2“Êù<`Î8ÇWJ¦Éá6 ò<‡>r–iÃ’J[_Žžø…¾jÐxâ¥+ùÙsØ7ȯ¿ÿS[µB üùd…ÅTwóB¾|„ZÄݨƒMCµ«6æ¼ì¸…a–àoÆZráó5K¸”[)Ó]kSs1LZ,ñmK}<î ÃòXðcÄ÷í=C:»žˆÑì û‹]ÍkÛ–'ñ€ã ŽXÀŠÍ{¸¢6ÜébzÉÊšþÔaDNIøáAÕ;ìœ7ŸpçŽE*Ä.É¥ÍQ¾Z«ã-†…'­vxñtyñ¬î4Z¾·‚ý¢d7ø‹(шÕ—¸I©œýѹF™Ïâü¹ÆÓuú1ä xjMêBÖžÜhâɰÝ#Ì,¼6¢ÒFIG,ù¼sC'þ.]ã^ 3 ßv¤(©æ˜-›l­«cq:ªt}óÒ/âÐ]„#Þ./Ð;äÚB™„ U]´øX^iWú(w^WŠK[^ýÖGvìÎc_†ö½ÕçX¬‰P ê¢n°/YÑbñ#’¤»9TçºödE_‡–#¤uRÇ® ~> -eÂÚÅÈO³ª’àÑÈ/[-[…ERi’Aóí;Á)ÉX¡ òA[ì+¥Ù% 9‚®›’ÏéhªÅE 2G4uçàì?œêÔBEk¡Þ‹‰}ä®XOl;f‹òez;õ|¦.êºàP¼bO»9¢õË6§½_ØJ«£¹¼Ê§˜)¤ý ª,~§âçwݼr[RÞÓÉ{˜ËŸÿ¨Îýyðòh»Šw±E¿ ëý±&¶‹éFËš„VÝ©hÿ˜wbEõjÔj:Ad C&©d›ND+òWs±»Ï»sz~J< “Y÷‚ô¨SJ,Ò‡¦²ÕU´œOFÖÑQåûYò½ÍMCÁ"Y«öã_ãE#‰E“äÁÚÌýv z±†Ãâ sb÷gЀc“–ë€piàÒ¹|?y?hè3bçœgz²š¾¡O5Dº‚¾€–»+¶’, ¨ Éš:gËíhðZüÁè7¯ƒGGqPµÉì¦ ¡~èãùr’Ĥõ ævÇ`Ì+vk1ÉÂK¸íj®Æ¥V÷¶\KÙ2¶]ÙeH»ÐÇ,Á€ÃwJTt ›­MC2éÃéÍá›Ð¸~φ{ö>qáéò˜L'Í"äX…™çŸ*a{IV7ÃüIŠÂÆGžØn‹KºG`86XÚ¨&úbY¹M¿ËúU‹–´¬H^¿OVÞ<›\Ιeì~È4¢‚§5¤GJ§ƒ– =÷`L¾5­ž -Æ­Ïì2‰ ˜ð¥íâät#5Uﯯ–²£°&± -œ“\VG$wl€Ö.D†€÷Å;2¹ -$…}> Õ«¦à¼HÂ0wÇ€»Scv² :NÐIâföÅEé§ÄIÛž8þ<°2€0-&í¤(Å…$TwݬÎ]™—|]©3këëWÇúáI¨üáÞ'Ôþ”FI¥ÈWx=ävé‘Y_‹OÖ!›)Ê`7óGWk\÷­%qì]êé&-g˜hÜDdz!_AtqR’‚ 'ìýTÑû-wŠ!Ž„®ïÍ æßfåAÛÌpMÏꥳî?b=XÚ‡úläùá0xfõN}鉗ي›©+®ò±îçjIXÚÒ‚E̽’ìǺ ðªýdQÞ²è2G(”Úaî"ÑNyt¸:é0s~PãZq—ý8(¤¹/»RxŠ(¹n¿üyyêµÙsŸ…¾]§3Ý’u" ÞØ£]¬â±AÇí«•b–FØOrÀ﬩Ú6mN$ƒ¾èœ½¯•ÔU‚‹õ”×}Y¼áÆbޝ€Nv¿÷›ÙIPYþ”S´4Æ?¢GÆ3 .ó[hÇ›¸mj²³õ¶À8 vü!-ë»}×Ñp(e“µ¸Ë2×~xótó}˜äkZl¸ç~OáKB㋨RD2ëOÕÙWÎYÑØ§1siÀ[…¶(ÝEüY+ZOBl®˜ž5-+5±ù¬ŒîˆŠ6‹zÙÛ¬;ÍßÍ<ò\{‡aªÖwANô¹¶ÇƒûzùôHðàè£÷ëûâ¢á§|šU}츩÷6ú§9 1£¥YaH7wš@íŽ+éÙøfÁ8 Y–~±\GÊ …¦ïŸM‚lDL3Z2™ðqRÝ!BjÔ nmŸ–'áý—Z܃íÍC#ü‚‹‹Ê[åÉf–’™ìZ¨Š“©DÚr¡ÔZEŠ(ã¸DµÊÅu!­—asÕúò‡Õ(î¬_¿kó`ÔÓLÖúN0¦ƒ»=P.Là>tÙù–ûy"ÈM¬ŽŸ q²aüÂ3*·ˆvÝ…#V‹vz‡…µò¾z[iS»=°`Ä?“Ú+ìA=Œz.}$ŽÄ/W>¸ AŽƒ4ªVºíÒ«O…®Wïúåáb’Ó÷…¼Œ›â”ãWÉg× wýYƒCJ€ùˆ\CÖ~-Êî™sõzÀuîÓ·[¶ßj…VÇG" -°/¸pË8tߥd×Ðn.Cc¹öK]]o(’·<ÎA8öáÿò螀.ˆÏS†–œQU‘$Ç,Y¢â®¨K°q£N·ݱZJkˆ&]šÿ¾×ÐY)IíY¤Ìºw$×ÿmÅöãOËd˜ÞÉM%֋жùVc&±¿+‹¯¡ò舞hc¹ÍÕ‹„ÏnéÛ;ëKKÃi¦ï$[âÍFhŠH=Êãã’Ía¶º½Þ54Í{oHZ0Ò"1ÆÎUMtФNÌŠâçÚ!ìån°Sj]ÂÚ³pyǰMkÉîò`Œ2*—ì¥P" ¼Þ.kʳ° -ዘͧ½Ñ¢?©ÿŠéå,ö$„0û~ñçó 6zf“&ÄD][’еJƒ}n¸òÝmPfÙ -·?Üý]_™„¬èG iµünÃUÎüYÂ/îsÊßùßjk‰&hæ}Ö’¢7[cw4$¢ö «?Å•#1EÔ5η—“¢–,®[œÕ«ªá;Ì¡iQ™ûÂ'¸&—…!w乿ÅDjÿ¨“ùDˆ:žI!±;uÇ/,W÷ xƫȤ*ê4u4ŽŒÑèR±ñ1$M…wï<Ä1›Û¯;ýu§òþØŒ;B•ÚÿÛíÜI€æÊuX cäw%§ el×Ó‹lžF¦Êß ! -}·@ËH§pcJVîÖõañ>±‘e`PŸÃø*ÞÏblÎgvw¥- DbþªšÓþìƒwËZe±–B”ÝÚ¤¤'ðõÜ$tÁëW\ 9Î/]?[ÄØ6*O`ËôèÖJAã^-.ìAÂA݈‚¶î_ï-. hR©A¡¿ÅO÷ŸÜܳy=Æäǧ”úLWªUvsƒýÛ?Í8]Q´š|PÎYø°ºÃ™ƒï±dMw(i£Íe Å$[Qª;„k´f¶‚¼þòüÌ騣m[sú>¸†miíFrôdªÿi ¢LºhpÉÐ0”†•ÐsÙ¨êŸC$ñ©u\…aŒÇ²r\“|€\²?¸xäJNI"HÞé]sŒ9[—+-ìJUþL- ÝLÝÊâ²h˜™FB1àúeÖ #Q€8PÑy+KÞ3"ü©ÑùR~LÑ·¹boe¢Tôº™[C±¢¯IàUÀRT"÷wi)óûÌ›Š°ÕûtVÀá€mïe°««=5AЦMsÔÈ"iSh(º/N¡G>ôSÿ õè±üóEòòWv‡ãÆ€|³Þs²ä÷s×½¯>œçï¶ReåQÌ䑈µMV(&Ey„µØ¤ASú’_|ˆX ÎóÁ¢OPWœsl+1sþ¥U¸Teæ/jkè?}‰ilñ€yŸIáqˆÙF4¦_à‹åЭñ!Á] -zßh^ÅË,¹ÑI¡Ú¥•U„: ïðç Ÿ¡<Àé "ÿ¢ÅÔ~ºgÇMZþm*~£`$¶[>¹ÜŠ\”"iAšBh¼yé¦^ëWq°ìˆ¯:$‰Àæ¿ Åÿ¶¤u·ü‚x×_‘‰v*u¨g]Ÿ Ñåmokîx¡DÚ¥MÓ\߯ÃÁbfh‰È4QÝAèÊaX,LJ‹sH…Ä©ëVêhÛ¾²®:}©á6Fmß•Hø°í§—¤D½Æêé9¶mŹC~­a‡ù.昢d Ê/²(I¤Z LE ÿDÖLŠ^®Û“£±¼…0ÜÑ&LÎ{á6îšãÏprúÉ÷|kÚÄ“«Ôþ™ÖÂЫXv –Õ%ÜîJ~"ºLÂ40ÐZ3…‹ &£ßÇV’ß¶3„‹D9‚â¹’/—y ÚèÎ!î‚â‚PŠI¾íY~ 8Œb«Ô§ §/gsÂ6QUÏ¥ý˜L!q™q¢±Ï&{úWUÙFÊaøÑô vëBŽ›FèœùDû"(9.b–±j]“Jçt5°¾`°•ÿ\ü"ªÌ-7òkC3þÑÖ9ˆ’W¼ tê•^¿5>Òp:x„y,{žïcŸIx?|“˜#f¼-¥;·/g±©ÈÑvG}üGMž²â¦:2Óeu˜8¿äÝ÷m!ÔB q§°ÊÌBJô†©pN´ý»D·%˜‡Hjoçé³è§Î“¤x9E¢ÎX¾{¡Yõïž'D]¾iülÄöq7¨‹éqXf±cC'_¥œq_Þ©|ÔYsyg~²Çh³’‘ŽÜ:H‰z†š¥¡¬¼õIJЖ±ë‹ÂÈL¶†)™ ;øN›ÝÞÒRʯåxsš­Æk$¨Hë"¹ãÄ–Ÿ×¦ñnçC Bƒ+õ¾)þ(ìôÕ/Ì5) -ãßwŸhž¼Î*>ö-vqæUãã_Šòœo -ˆµÒuíT&psålOX Ó^´[íÿ”F.êdÒ®„°iù¾Or˜[[ |,y·< -ï˜Ñb*ýˆ^ûDhZ/;}àÅO¢çJ®‘Ü·¸ / L@€[0ð`ÌÐÕ³Ý{´Ï†·'€º-êgˆ¨®\#B·F­4à ੇç'_ê+9ÔJÐ/QîNJôXÔµg3UÜzÇÀGQ”N–ÊìÒ4{ÂûçnZ‚¦¢÷‚|„ÁzÅnPüü3½îÜF:Ùô -Ì>šõ9êiIÞ¹ÓÙÎ~º1Æf!QúJÚ)–vq«ø#Î0¹YÈ)cŠ2«vø¶œú´úÔOzð×QÇÀ­Ö-=ÝK8y¹_1öˆ•æû.ˆÔtÊ…±Möâá±µy:'•ëÊŒ-+]ƒÁ&´"™ëîöåsã x .%*ÿŸ5¬8åÆZÜÑû„€|ý´®“âSWöûz©[³‚ÈÍ‘ñüKÊÝÜ‹ëØ7d0PLz&Jq­ëô;ŠÓẔ̌:‘Í û¿«+•,ún4fºŒÕ¶)z(|%ÝT.õ”¼BžÈrE0!¶ëùøL wðšqìÇê|lV`òÚm¯Û#wç|¦K”gñL8«žLÞ ¾ïßáx9R)dÃ~ô„óì†AýT´‡ÊJªZ~ÃB›·º v¯§›ïŒA’dW¸Ú0_²C(:h¹è¡áiM™¦˜><É?þúæ´I€ÿÅŠ> £‚Ôë4‹"sA`€>‘‡Ñ9yT¶4 ¬YÊA‡ë¥Vü½èãÁär¼ÝdœO\Íñ•çqxüy>îÖ/t·ì#TsŸ¬Q.&~ ÎŽv4P½ Ì%ÿ¤Ÿƒ€H®ò1$xAD Ùé=ÀÀ#*i Y¯µlÅžT%¢Íì$Ñe¿wž\:( -”í9)uŽ+u°z€“!Y•šžÛyÏk#–ñÉÛÝv¯š‚ëW¥ÜI¦v ½åíŠÆšN£,žs¦ÊF_õØÉ²ÍïÂt?„M=¬,‰¦²?Gè‘›>üXAfj• !ͱŸÕv ¥7áUjÎ^ãÞZïÜV›D“B$+ ;þPj …HØC}1“ë¨Lá"ãm·Ür¼+œËH«¸ªh*[ ËŽ ðßrÌåc\7j£ÔÞšî& ÑêÄC R:çùp#9ù;ʶoÉF§eÕÔtÙáÑ›ú6Õ¦2|€LXkH Š~<›»ìÛfæø{F"¦Øz}ú;Nf£T—Ú¢¤³çà)ðL}C(ç“ÐX:WXdF±”„@4×+Jl¾÷"ר‹Õõo9åµéÔb†¬úŠjó)o+Ÿ:€cάøp¨(v©Ñ70žIr¬½ùp¿ó")»‚§ýUÍþòî½½>KZâ{ÒŒ³QÁ¨Û„üG_¥rc; œÏßASúã0(™®MTÕ¹‚ËÛ´3§!ƒê<°ô.Rô”·âü±8DM¹4ˆ+Ç£"?+²÷¦He.U7^…”i »}ü€ßàÕ5ø -Z<‹iøfýÞ™Jf3i ¦È¿>%N\GQÕ– ‘«ör„fmîs‘†'Ñ*ü-ÙÇÍ.aß®¿6; ѹbç„ÎÔâb[g“t#!Bü¤Kî$pbs]-5Ûõ3°0«>©oE‡Ûצ¿$ùÅÇÄ?•ÓFÕyÅçÅþc„QÒT‚O1cnÝ‘àJôË:¯ Ü²PT²\–Á2b4ö×QŠ+— ÌŸÒúYÏhâ6ØÄßÓ“j(F¤wÈÓµÃÞGñqx3êÊd¿„ÍÐó4$g–2HæÜô(LÑ‘ó3Zf5ãZ¬ÇxùÆåœÑ&w¾´Dm2ždFH–áÅÃÒ^„µ5¦oÕÅ{ÎÒ‹®ÓOºIkÑšï$“~ܾÀšùÛ÷ˆ«N>oyŠË-ÌÅl÷7ß4¬§¾:uEÊgMî0©XÚäS»¯~Ø ]L¹¿´Ä4c²£xfZoÞ–˜Wê¢ï ¥PlRä+s"Ê‹¾÷°Øžµ%™'}’8δQ -D"¢è.•£Ãn^ÜÒ8ñÒÀš&íªw}LíÂŒiä‰Ç|ì”°¤%èûE´|Ê0òÒr‹|Ù‚†CØCŠŸ!¹2¢½ý¹Ó~&쳚¨ÕÙsüh£n®ÖÈ>va}/î^è€\ÅA„¸(•rƒmÒ&.àîÐmö^›.W7÷T)„NMRß«v°Æú)Lãè8„ÌÌûyb{LÂdÚäÜùLkeÙh¡±ñ9W9]I}lÈ^Ñ’=èâ>!;×2L‘ma ¿4h’zn¬à`Æ¡£åbåN(Odãtr°¥ÿk·õŒ^¶5b ³çÙKÇèõ(÷ó“×–¡Û¼cA©JÖ-…LBAÆ ¶›oró—€EŠu#ª -˜÷ÊÐÎébž…Ðm>‰ÓªƒµßA,& _ë áa: '?‹¥ù¬Ù#—¨€ÑÌ–¿y³[ -}&o'›ŒKZËÖë -à”®¤÷þíIJƒ€jõЪL;Ln–€Ú9AH¸vwÖF×äNz§=õä‰þU¼%º–^‡"Gâ^/k¿aKþÐÛ¶en›gï·y¯}£ð˜—‹ñª¾¿?jÚñ‰Ýj–—ºÔ-{Ç®i»¿ïK8CGÒTo$)$ŒV !-ùü|-üÙ·!GCŠ ÛâhfºE{¨œŸïÝRصfS ¾„qB Ÿ¶C÷¯ç¦o²}ÒKÃBþEgªÌE“” “€ ¦ôÙóœdɇ©ù…#`¯Ž;@c –évÖ5Rì1gé?lª¸–Í{Ò3­K¡aÄ=:2û(GùÓ»·øΆ1± -=¹°R™%f ¬cb¢õóyV6ÞF훤ͯðÚ ýæ‹¥%‹%ôØê³›óñPR=9Uu·’Ëñµƒcú>{†>¾^ Ô,9ì† Ú|€%¥Q„KÙžf]•Õó&Þf,ÐòàPv]¤0®5;Ã-ø°±Ì§?][w´C¼aà;ü~À›ífIvx\[´q!š ¶V&fì@ß¡çfÌjldB©Wgô»°î0›ßMë6]‰Ç³Á3¯6œ qíÄÛà«®Áù!†ÎûÎ’~¼‚NéV¶¼EšÏ¬—z!ÌÞ¦?;³jfŸRºf'^ˆ!ï§»7;Yñ9méë3À„ŸNfÃ&Ïß»¶–ÿ}>¥C¸i­ß?þ 2K ]—YDægŒÍ~Î=Çw±¦,Ër­ulå1ð>¢Â²!L‘x’4®å\Š.º€©Ö¯ðÅ÷8(´³Û1á¶('^ËýÊ#±33Bm_ ½Ò§”6Nñäˆ:ƨËõ¬’N³†mœP':«%`òÓïPSFJ㎃0Ù }ï*hF3¸î ŸYØ;•yŠ0U Ìï%°šµEù£Î²óC0²˜¹=Žž×UZ¡$€þâ–x÷NzõºMi:‘»6@x•ùú=‹/­òušÇØ1…)\ Mdr‡ï°¯OÎ;܃£`©à‹ëÖ_Þ;íò -7Q#Åü¥×“w§Ù0f*eO¦ùB7µ't¨_ä>…d?§o›»IÇ3€—§DòÌû\ÆÏöÿðƒôÿøÿDk ‘ƒØÆÈÁ -éÿ qžQendstream -endobj -625 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 1020 0 R -/FirstChar 11 -/LastChar 127 -/Widths 1021 0 R -/BaseFont /BKPQGD+CMTI10 -/FontDescriptor 623 0 R ->> endobj -623 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /BKPQGD+CMTI10 -/ItalicAngle -14.04 -/StemV 68 -/XHeight 431 -/FontBBox [-163 -250 1146 969] -/Flags 4 -/CharSet (/ff/fi/fl/dotlessi/grave/acute/quoteright/parenleft/parenright/comma/hyphen/period/zero/three/four/five/seven/A/B/F/G/H/I/J/K/L/O/P/R/T/X/Y/circumflex/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/dieresis) -/FontFile 624 0 R ->> endobj -1021 0 obj -[613 562 588 0 0 307 0 511 511 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 307 409 409 0 0 307 358 307 0 511 0 0 511 511 511 0 511 0 0 0 0 0 0 0 0 0 743 704 0 0 0 653 774 743 386 525 769 627 0 0 767 678 0 729 0 716 0 0 0 743 743 0 0 0 0 511 0 0 511 460 460 511 460 307 460 511 307 0 460 256 818 562 511 511 460 422 409 332 537 460 664 464 486 409 0 0 0 0 511 ] -endobj -1020 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 11/ff/fi/fl 14/.notdef 16/dotlessi 17/.notdef 18/grave/acute 20/.notdef 39/quoteright/parenleft/parenright 42/.notdef 44/comma/hyphen/period 47/.notdef 48/zero 49/.notdef 51/three/four/five 54/.notdef 55/seven 56/.notdef 65/A/B 67/.notdef 70/F/G/H/I/J/K/L 77/.notdef 79/O/P 81/.notdef 82/R 83/.notdef 84/T 85/.notdef 88/X/Y 90/.notdef 94/circumflex 95/.notdef 97/a/b/c/d/e/f/g/h/i 106/.notdef 107/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z 123/.notdef 127/dieresis 128/.notdef] ->> endobj -604 0 obj << -/Length1 837 -/Length2 1118 -/Length3 532 -/Length 1715 -/Filter /FlateDecode ->> -stream -xÚí’kXgǵH©Û""‚ oTDQ’ bàQ.‘ûUÐh‡É$ $™8 ©rñ‘ "Õ*(·‚ jPÔV‘K+ÐH¡,ì°«RWÙB)JU -ý¸û©Og¾Ìùóž÷?ÿs¬èÁ¶IMX¾ïv“\ϤíÐãôÂ'ûýÒj,\ê»[5É }ÌŒ¤­7,|Ìûí#_˜5®÷Ë\"fݳëËÁ -ÓD l¿r J™z¨gv&á×8:÷úq ·¡öž­Þ4¾Ý$=žá]~2l¸¸Z£ßQm m¹Õåšñì‹…~Ío§ÚùÆ\{šYyä1ÓäÁš;Z·÷'Iç˜æí\§¥ûÃü—o§×=¸—V/·¿}ÊÛ€+Øy\£.5 ºÍÝøÃËO¢Š™åg¯DçýlTœÇ¬8žÃ6ô\¤z~3)'w¶Úm^ô†`ß4õZ†NúXÑnþ‰ö­)ï;p«R3 ÛOYާ¬x<_+J²Y§S’¨Ý¼ÆÑ3R.êñKVçîl÷jk -°˜¿­¥¡·¹Ò²iü@ÑŽ5f­ÅMò¾Ò%#Ë4Ǔڔ Îí¡ÉoöÀô.1ظã×°oé÷6†‚ŒÝO.ZÇ~YÖÜÍ»t¿¾£aá¹ÓgKuX–áж¨¡Ö2"ÓCÕ|†+0øîœ¢ð—ðM·Þ݇t²KçÅük’õíP†…DÛ\™8¨„_ñ3ocŸìñ®Ž³¬YQþnÐ窟tÅ ¼c×ÅìÆ“-Wjt¬[í“=©ÿ½Ì²Ò5üþåÓOcKð‚ Ó¢’£omøÑ{”y&ñeÈ»‹£î5yÛ;ž;ªæjÚ_Œ´!¼ƒ»t'Ò&í€]ù£ÇåU¦Ó ->¹ªõs£¯«z¦Ò4Ã5w'ÅF#f¢oG/]÷/^êÿõêl¯ û6ƒP»Ðí„Íq.à¦t %7 CŸÝ£ju܉ðìáã/øwÎÖ]nKøÅæBЉ‚2sL‡Œðò È­|¯3|Dê"™rßþü‹øþTÙìÜ WvµÓ#ÜPD G8gñî$9t»÷UJß»³7ðARé; Daí©Ï7Þ=¬ä`ÏqùÒÁüÎoBènqeqA!#]ÜWWÛ«“ŸyIЛ!^ K³ š|"³^Ýå´mÉ„{ïã”ÕõVeô|Zº±óä.é̺ͣäðïÉK…†Í—¿Káµ.Þ³S¤18ÜðÀ)ÍpAm¿åùâYUBÞ–=Á•ù挦å=½»Bƒ’äZÆ~PÅ>u½aõƒ52ÐȪøƒ õ²è¨½7mïà×ÍÉâʲM‹tã¢<Ò´6óëÇlùçU#mÕdÍ]:½…yáã©ïõXÿãCû»Á_¢"Aa‚Ä¥0Mû ^¥Ýendstream -endobj -605 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 1022 0 R -/FirstChar 15 -/LastChar 110 -/Widths 1023 0 R -/BaseFont /ETCFHD+CMSY10 -/FontDescriptor 603 0 R ->> endobj -603 0 obj << -/Ascent 750 -/CapHeight 683 -/Descent -194 -/FontName /ETCFHD+CMSY10 -/ItalicAngle -14.035 -/StemV 85 -/XHeight 431 -/FontBBox [-29 -960 1116 775] -/Flags 4 -/CharSet (/bullet/braceleft/braceright/bar/backslash) -/FontFile 604 0 R ->> endobj -1023 0 obj -[500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 0 0 278 0 0 0 500 ] -endobj -1022 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 15/bullet 16/.notdef 102/braceleft/braceright 104/.notdef 106/bar 107/.notdef 110/backslash 111/.notdef] ->> endobj -471 0 obj << -/Length1 1619 -/Length2 11329 -/Length3 532 -/Length 12258 -/Filter /FlateDecode ->> -stream -xÚí·UT\ݶp‹»—@áî.ÁÝÝ -×Â]ƒ»KàîînÁ%¸ ‡@þ×·÷9;ùÏy¼÷é¶[U«9æ˜}̹Öj­¨ÈTÔ™D-œÌ€RNŽnLlÌlüqE16V3+«•8hêfãä(aêä°ññ±¤€fà 🋓Ÿ•‰ - îäì ²±²vЊÓý“Äu‚lÌMЦnÖ@p sS{€º“¹ ÐÍ› joPûg†+@ è -y-˜‘ØØ6æn3 •#Ë?N²Ž–Nž‡-Üÿ{ÈrKhÿ¥IKZ89Ú{,€–H,JNàÕ€`—ÿ7´þgq)w{{%S‡Êÿk§þ׸©ƒ½÷e898»»AE' Èñ¦jÿ-'ædÿ¿–‘u3µ·1u´²Xÿ²q•²ñZ¨Ø¸™[,Mí]ÿŠ-þ§xãþ%À¢¡+ª#­Êð_gú¯ASG7 oçÿ”ý'û_Ìö‡Á»²ñ賂·— œþþ÷•áÿXLÒÑÜÉÂÆÑ -ÀÎÅ 0L½‘Àw˜¸¾lG  è6favtrO€·Ä`éBúç@ÙØ,–6ÿÄþ`´ÿrrX¬½­ŽBÜgð!:Yü ñX|€ §?>‹“#ð?ÌÅ -`qóü3ÎÅfkð¯Œ4œÜAÿˆØxü•Á `qïɬæ -ôøË Ü?Ë¿Oô?‹£Í_"ÜàI¢D:7ÙŠÞ‡Îä÷¡§è]­K·g\Ê Û_*Ru‹Gr¯FO?«ÐJhÁo’A è{4ä„qóèHeÛkF|l¤æ SÃÈt©ˆäŒØòÄHM†Ùš °@hgظvêv÷X„Pòj ñ`ãJ¹â†Œº~N$âß±ÓÌÃÄÇ5¾ŸwTßZÑ2£ÈRKÔ¨·Ëð,%îåÙñË€b¿³™äq_bk¢ŠHðK¿iHâê‡1­‡åÞ×/øLõûY7K=ðNÀ´€Ô‰ñ¸°ìÆØÙ"Üêé¤75¹Y´êZç\Bó´æÂ¾Í¯cîqF]\¸o‡cÂÛÂE“  Q?û>ñV§ƒv+ÿº‹ÏÉ‘bq叟D•Ö>5ì.JÞŸeW?¦ýÉC KÙ$zý]iFD}8éÌ&Û½‚9?-Ä¡é—8GÂÇ LˆxŽè¨D@:™Ç¬e)3ÿ%ŒCÒxlÄv½à÷©åVÕ,t´ðy7Äk2ÏÖž;wmŠú}J-azÐÑ~Ž|(d‹ùŽÔ¤DÛ9zÌ´A,~àŸØIöDL`ë¿ï]C6ËýáÉJ©ÝA®’ ÿI³(@I·–>»•3¿°?§áîV\HérÌH8“õÁ(À©—Ú²Z/–醎~6RK‹ 'ÔO.ëŒGdÕuö’™2FbK*¥,DWqΆA±wxú¬4yMâ¥÷¿[][ÿ††íèÞÅ›³ÆEoHÀÛ»-lBDêû´ Ò*Úü/-ê%ŽÙuÇÆÃa‰G3DSýþ`×7|ØžçIyÌ;T»¥Ð—p¾‡ã9J}©À‚kFêñò : wô¡k6‰Õ-Ù`ÛÓ -Ù¡2Šª–Y°)7H\Óvè5UgHM“‡l¥ä0>7(p<>Á„3³ŽÚhà×bQu1òö*›½ï‹Ô¼kš­K){©—iúîÎw­tã‰b¼ðŠ»ŸUm˜àë{»RPœ3šyöFˆ"ìLKÌ ­øØat8‹ é·ßaPp-oºÊíW]Xê¬$Ÿša‘¼*½zK$[[Nº±;¾S0Å5¨ñŒ=¶1¸¨sÞoD±Xl’C×vîl¬p;ÎüÅðšxÍ^À4©,þíCƒ`êNùÙ^ M-n8ç#D`TpMÔÌ¢DÌ­úóZñuê£EB~g—ÍWñOõ[Pï%ʈnÒŽñ8ŸŠMÞ>•ó›x~ä9X>•ûtLâpËpD qS¯k.Å«,~ÿÕ˜[p4ñ5˜–+üa#N†™ßïPÿX†|"„' [ýÀû¤UïµSش̼ÍM]ÿÐ>7nëAOÔ 77É;‚Û4ï±ùÊ‘‘={·S”Tx™|mˆ•;gesb'‹ÇK†…ë˜ñáØã‘àb%A40ºéjuk¡Äõf™ -@ÿ¬½kˆMbÜŽùí•í‚ÁG²‹›Ξ-Ž•1¸Òp*ŒñÒòhÇÃY'¶éS¾Ø…§yÑgW8=žÀöýÙLaÆÔ–G9×ÃLnûï/–S.ÍÉ(w}°zj&ú¢%<¥¿?Z½ÏÈ+9c] 3ÿ¾‡ÍKs ¤Étž únN º'ëš2c> “¿§Ð$³ÊW$“`¾¦!©ã ~LK‹–Þm0±˜â®Ó)¿`bªßÞptkX×ÚèàÎöM²wØã’J·Xšî„=¯Ö,ž!Ø?Ùµàå •He?›!aÞ2¡²ñuì‡g®¸I¢6 è<:h@[wæûÄõ¥oε§ÇΧR+9Ì#¥EJ zµv¾úÔÅHŒ+¤F}2+Ðèö˜ìê3K߆(û´2>Jì|McŸåÞ’ ÷ñõÏ*z‚"#‘´ÝÎú¸õ“íãÚ×ÔS\Šáµ;uË9õÄ3„vÈZÄð.èwß©!Lxkªq^Ù„g¾~'J®†˜ôm{Èp(ò\ (}ãê릵,5a'=´ÃHZv™][ÃFÝ[?§u%é -°ÍS;a‡—*{¬e›G÷obîð!`6 à®t(ß7n%3Qøøã¿!¼XªkÎv]xç -¼aN§Î¾t -Œ6o§Xr“¢ø¹ anùÕa{Ôãi ¼âáHùÍ› ”TÌ›!løi•‹…H*Zƒ%ßTûaE\Êñ½û†&˃;V? TÆô–]Je_8N RWö¨å÷ŒÌ~Œy^¥)f™¾æâç(EýF©â×äþ-s¾“XXp¢^Òr!_x €¢Èó†"zòºî-ºpöym›Ð•1K¸™«’š¡fYŠÙÎûƵ%®Lÿëíž´qvW`õ&ôÉš}hÿþK{wû,}¼©|»ô—7QA³V»Á_®Q“VúOLΈPšð™ 8åy%ÇoøK—¿ÚÎeøZ‹›µîh*0J<¼'Ÿ’ ’_DàȰ%5˜ånŒ‘BR ®;5‘¼¿í˜ûö¢ôiìw'¢î9—,&á~E"{_âŒgå -—yÜžJ‘³6 í‘Å.|+S|õ©{情°÷áÞL¢£BsL [Í„é$¨:Œ¬ï¾³¢›ò\=SЉ"tâ¥UŽ ¨í"ùÀ®:Œ· ‹/þ·:Ç0ó„¥Yj²‰PðW“~eÇLY»Â;û!øŸÑ{å睊¬+™£AƒºÇ Ü¥6ì·µ¿úCJåNW¤)GQDI'„†®stÓïW㋽¯¨8n¦DÊHžýºT™½l’‹´u1_ÇÃÓ!ì}ÚmŽ$ñà\}TÜླྀšer¦) {/ž,Õ/•¤ ¯¼,nQº—‹´ÉíŽ;8æ.±T…z™,©Á®¡Á쑦uÃlï»w¨!Rºžª^q÷­™]ùáÇ5R¹Ãh!ú˜Åg¶uàž*ÎùÍçí3Höðâ¡8# ]¥Ë©S_CßÊýд¶.ò)øhï÷È 2ï/ÝŽ'×4Ãl—ðÅöóA·v ÊJ«VEnN2d -?¶5Oz²‘‚)kñ¶Õr±_“ûYÌœlƒ0ú‹ëø•+R1rVO…p½ÎäÔ{øÍ¯Λm|s{ÓËÃUr¢ß~t© Ãˆ êc¿9»@p_†;~3¸q'Èðlàö„~²îÿýÙ^Ф¼"Õ^h|QµIb™*àJJ«B%—˜°µÔÉ5úlÐïý)Ì‘ôpúÀâeæ+Ì—¹Éz4E•éÐ|ÒÞò0ªit*…¶zÿ)ŸíÁëRSK{—PÖ4í.HÖæÝù}¸¶]ü޵©êui7›ž69cl’¯ÃñÔëüÃŒvl,jb{Ͳ_ã‘#´D²Æ*µ€²3ÊY‚ÆY½r4•ÜÄ#í½ö¦-Z•¨Ñ¸Ù­´’ÚJLIËìUã«#¡¼8MðÞ„{‹˜0˜a$ ÊúN‘++u2Á¢îûý$ÖS-ãŠÜ12bæ6¨žë{漃³"ÑÜÖ˜RMÆÆNPt±º8HŒ„o •£É\?/~FHÔÔ‡{MAJ5éð:;›>®h¢¨ÆÜ6lƒ¯Ë!Å3š 0ÓÅg>AÑ"]e5NÎ’ZHEç' ªéÄñAÐz›—¬ç°(â<êøæ«²q9û•ˆD>S$É -uÆOÝðCd”ñ¢J.`oJXú9å»Ì;ßÁi®rjÝD\ïPQš"‡¬]¤Ñ<Ⱦõá`!~2 -Š'(~ƒY ÐäÔTýu[IŽ:u¨öÖçBˆAç÷`j”eÌ(ªQ‘¨{t,i£¢Ú‘³'J,¶•´~ÅÐjËÙFT­ån–XPÅå7\~wî?¨g…Ó4ãƒ/éYßG|ê0¼”Ÿ.+ˆx:Þ÷žGš {Œ»“N€Ti.;{?P²°Çºø¾«ºŽqcd¦‰Š´ -‚æÔ£¡Jó[8ÐÎDÄÒK¯3/çmGK­õ&yuåÑ -O“Æ¡Œ†at7ÿ` ëÂŒ è­ø]„Ó¿"!¾ºFÑÓ5už-ax­·¨KñX>tÒI÷SÖ@«ßÖ?k]2ú ‚?Zpäí¨Iª†ŠÃ‚Xh£´Yk¬09¾|k»µ¡ (˜ÛüVú’ ‹úl ð¨àjJª=vçY$ï£\­teŽœ]å @Ø÷c`±UTm²5ø4!30”=?9©¯ÿ(#3Žðâîü¹KHðƒÑºut¤a÷ïý;w?n&¯?‚¤l¸ïˆáUu¥«˜¢û|-á[~q§È÷›¹43ë 퓽qw„ê„fȶÖSà|q ý’ǹ§ó\ ÿ(b‘Ò{?-(3§É.U¾6›O’$½±Uzvé¥í¸LEe{Á”Å?Ùö]¬`‰7(@óW„3̓”K–¾¨/ÕࢢÏÙ‹OOáŒÍˆúåšÙ;¬1Q ×r·¡¡ZKÂ| -/Ñm•â®DŒ˜ò=8œ²“Ä þîwäi*¯Ö~S>“ˆõ®Y]m¬“þÈÙsÖSlØ™láÞžRz˜¬´ÑOå_C4™Ò yݽú¾ÝQW£\ET¼g£œF¿…Œ/UHj4çO~Yêß,zlùi½Ï -ª?$]½:Ó Ñ^Òpå:Êûܘ2xªU×1Dy$Œ‚I|,E«¥øe¯êÂvÚʹ8ÑIÅšwIó{ "VìØ¹#ÌÈkÉV§>»hÄÍÖë¦:ÞKµF½*íä2ËßnéœÏ@B%§Ñl6ˆõÛ,¿Ö^HÈñÖ\Õ{ÖÁÝwØ¢ºMƒô=&¹Í˜lZ«VåhôÄïŸBÙš°s†Õ.iìôQ•¨O,×ɠԈɜ’~·c£øtž¦µÄ@ó‡†q–¦Èò“ÈÕ_ÔÐ?6F5•S ë^CxaLMx¬4ýrÑò}öR+“7ö˜>’"]íaN¾côG­ØZý`“bán'i¾½«Y9Kd¥wÓê´%bÎþÕ™>¬±æ¡" 5¸«L Eã熦ø]þƒÙX1îñÌ^y½:5c<•Б3‡[^ÞægÞ'…lDª_œ‘®ÙnÍ LéÚ*6Í^&È®fëæ¡¦¡é|QÕEÂ/ÅOuK½»p£5e¿yÒj¨§ZyjKpFwN0 /ÔM6FQÍBLY|ןleý¸N‹žB^ڜ̂OÄ^l¿ìIê¬BsGèCʶ¼ãÄkÇÄÅ“³Ú`PÂÎDí«€¡òo4þöü.–à›Œo¨Æj-ø±â†Ú§øÅæ‚Ã!l”ÓÕ÷8Rw‹pÞ<:`ª”S­H Æ%ŒGË£±ãÚ*Â.Œ°.]^Ó»çy/ÞP‹ ŒÉ"‰Î ÒÓŸI;BòˆO{‹iß]ècÁö³ñ´qI?*þ6Š— Œö}­W» ®cacŒÅmŒ†¬ihé5Ê"°BÀ.Ýy+¹„Ò ›sö G¹ÞÃ0*½îd@X×’¹Œg/|hVG-›º¸ a…WšÍOŠÊB9ʱgæN2J&OXLÍ_ æÖß•_Ü{rR£¥||¾B`¯ú¼,ÍýE+Ñžñ¡´ànZl!:iÁ«pþ$Ò5Ü¿…hôVäKˆž&`e—ëЙàöìMÄjŸ˜çÞÀûysÒ³¨E,41Žt\ű»Bõ`eåDðuóÕž­­®×²$iÃ)á?u#˜Wsâ’œ£}Öß’¥‡°­-9Š­À§_½½}‹ýY«2¢ÐÒ¾pîøâf¤ÿa(gÇtÑ›† “üñÈA‚›çx>¢óUª -`—lŤ“¶Å0«ï -úXEûId+|5mMéÝgÁg¤±Oœ¾\úµPÖ$¯fïmRlŽ«×M)2‘õîxPj£‘b7jèxñu¤4Db¡AMØÂÛ¦ÒÕ5!¨"unMÌ…2Ná|¥í&¼O;®§C>2‘Yž%½¯ÿäç‚ñ†v¥fV¡Œ¶æUa oñÕÿ¾0,P”Õ\y¶±å¬Ï°:¬ÓD…m}¡Ï©Ïƒú$j=û=C¬c4%øsX¼ÃÅ­ª0I½dݹ ~N†c—÷åwD3Ójv4é­px󀄧“Ð[ÄáØro‘:ùO¿µaìæ”£²w™Òàà=säî’ÍSÏâ¸à]d²ÝB–Š$Ô^°K|,ß*}Fež´ÙÞL<Ø6øXéøðÚe«>×T-êWÎ7‰ÄvÛÑ+½æ*&È$¢¬m¤C¾{ZÄëî!ooF†ÄtÔb -øŽÚÇtRCZZ–$Slû-ÏDÕÙ{ÑÉ:*RæTÆPïÀ„¨m2è~q·Ù¶w¾ÏXÁ’°àwÁmÊÅš®u"¹MNv„‘¤øºÍ‘ù‰~7N†ƒD¼Mnù=—µík7£" -fŽÝWˆš,ßçñÅùçó¾€kˆA±¥kQŸp%…ª¹èªû°jíp™nÝdw¢ðºa¢Ít×®žeiyGŽ^é _òÁظɩ‘™n%'"r³·6Ê/<fät†ÆSØ-~¾&÷Ôd( ΰ/{K–ïvéMí>¶-ã¦"ý®æ \„z^ŽôHüÝ2“ ÅPþVò~¼Ó]vÚU‡`ýb/¯h”s@lîÚùP#ô2·{¥ -c³Uñà´lr¸Sî(€^ÙÑEHÙÕ’Ùžl±*¤¯%N¿,Êêf—å½õ®‹˜Ñ›ÝcÍGÕ:Ôbc­Ì—]÷Á"$%+ÑH¤Þ'Ú1äkëG9ÔuɉxÆ«btDO쥶úï³Pù‰ò aÐNƒCÌ5Ì]1"qažÜ$ù⛹×”Á•a”U‹”/{‡ÈºÔ‘rº<1ÈòÈPh$nò±‘ÊôͶDŠ^ jº=ÁG›FŽžû•ôk©¬Ô™,ò>!¹·R~gª•À'N -ñ1­Þ7LÜúx¿ qíáÒRÔ¿ÉF HÇÎNc±k:~'ŒOÑwã 3~23ë˜ k²Ö÷(ð›AZq¹y!>oÕW('·’»\ÍÅH`;µÛ}…7Áuö;4õ|Å•ó#û„6™ÿbÕˆªx0±oÑæþáÍÏ:º…Wú.Už}?íåœàäÅ[eõ¼Á-™d¥²¸Œ]Ö“m˜é2b}÷ÈÚüÝ®P0)K5”-‘-:Ú‡:Öˆ×ü_¨}Ñ_…\:ç\£“÷ïñ¿m¬^÷N·k 8pŠ%d½OŠéÚ“Í, Ê™`Ä ”@+/÷”ç?ï=Ü!t‘WPäE¹?Q ½2³@РI•'þ€Õãgÿ$^P¬n1ßåÏøpžÊæÐØ Ó¨åAjÜœ¬7ç¶ÔÁž^Ii÷‹=9ò½w€ˆ±Í»4½ÊÊ.ýì¢õæ(_]Z9̹^)¢²«I:!t/Üî#í¤ËÚÁc¿hY{<ñ)’·“_ß‹º„ªF>÷KïEžÝv«výú~²Àë!¥`³Ö)Õ¢åztȉGg›XšÓqÉW?v‘½vïûýÐõ‚:Øn=Ë/³à‹Æe=Òï#…Èõ„Ђ_v#–•F•œVL ×±bëÕNÌ©<ÌÍ$³mÍ“Q¤FuÃf§¬_iå+ÆÞý¸¦«¢ÿÝXÎ%ÃåÐtŸ²ôÝíé1©mb"ïrS÷¸³ês·4×ÓþYCqªE¾Â ^kìbš9c \«Âá®.Dß(ÙÅP\«eûú!ô©íŽ ¦r(÷¿‰èîÞï 4OýU™Øh5š†ýfUyƒÜ?‚OKIB~ÈGM1Ä@Ž*(¹ÂMgµíOz~dÄÿ¨›ª±×ÃØ~°îœsÝÔS7÷¹„1šøÜœ¸`×LÕ]ÌTQñÌ>å¾Â^ ŽNBüqê×öÜäÀv‰^~Ïxí’s¼BÆW.ç®öØ7/ -…Àæ$Nìb?h­²¾Í¤ïGã‰fªŠß„ê:ã¿ñ;)X˜•ÆpÝXð‹>*¡(döÔb¼Ó–©‘G£‰™™¥¡¡Âmç²d¼ñ÷+#Nf®$-±¼¹Ò‰ÐxÎó¸÷`#¼—ÿ!Ö/ØÏ¥‡9k˜CšÉ¿‚œ\IoF¹™SnIðb¸ƒ«ð¹6í“»¹}‹N}I7`\#‹Ìõ¥ƒ¨/Ì|ù\­´ j÷(ý=—…ë\/’ÜXT:\»UÆØ³B8㤃äH¸ãoœ¸…Þöµ“oT¦ -äç §7gùBôn.¾Ø2¯Âˆ[üxX²áç -ö$¼Æ^HåË2¹qÆ6ì4ÖfòÙo”f7D•Á†8ÉÖyk|>"å™Ñ^.æÐ,á4ÃAnœ²’•zè€xÚ0¾Jû—³Ê´^3<“·ÁŒ(ûÒÍ$R¢Z?ÇÞF,£FÇ0¢êëßÃ?˜~Nó¿ÿÒPŸv÷4äÚO´ÝY<)?² ú„SBÁÁËó3`þµÙGP—g¶<õ sƒ}ÉYp¤¶ú°pÅ“%Ä¥‘ÑàM=ØôñÙ­,ªi<“Øºá“Ø:):”m‡È!Ú´WlÌÖŠTÒcs×$ÿS¨Ù(Úó›W^¬Ë ô1ãæ·ÕW0›Ø¸ï5íå¾n<J™êê3‡hŒ¤_Äm³1/å9*Ùxמ´SnrÜêùõí箪Ôw/¬zÉ) -? ±£æš“)*© @íZ¼BÎ&õûÄZ³k®ŠDl®¼9 ‚á׊LˆM]®Î†Ù\“–\ódÊ¢h^Tµ$Ã0Î/£uäþßNK~Lõ*¢XV‡tèØ©.aeÇ&ëVw+eñŽÐ±I‹7[Î=¶ê&þ‹ˆ3TDÝÓÊ~8œFû!Í©üP¼i­·Æwüj¯Ÿ‡˜YÕ±´kµ·<8V1üÊ<€ÂŽÛ2[g(tìH½yŽå²F–’|§*gñxCQf࢚’ó¾²ëÈÊG’ªÍuø™Éæ&Å ÿ²wbòÈk”;º›¬A‘éKå×MÙ½Åð@¡…“~˜* ÇÅïñ -k…í-Ú¿ÍÓ¦rT“2‡ -ÏjŽrd‹¶b!´‹²?³æ‹E­‰"C ±Ì-L)¸ÄžÕsª§igº´b¥¶4xp´P¬u³@ÏE59ø~QÔoôbQã:aö=îžW}ØÍu%ѧ·ã÷è*bš1Å¢f’è½µãyÇSg×/eß陲¾gÍ%Ì(½î]MXÕ#™~¢Y¯J™;f 8½?žwÏÓh^IiÚÑ®ÞáñN/†þ:tY\64è\å; ãÛõé¦ù€ª †?àô‹‡–Ð2¤ïК«}zlÍûÇ<Ñv‹x !bÄ×EŒ<߮ͻ%“ÌÓŸd®¢íPÙ3_ï£EVpK™‡Z8­Âµ4éÈÒD®DF9å_ÖO6”y;œ^Xˆåu¶Ž/i¹K« a’½‘½&Ê€‰_Êt{3P—¿%6•7ב…QÉÂÕ®ë›æ®ù0aî2 -¨øöOt免Ú0=#ñ0÷&gæ¢8;k8¸.H£ŽÛÆÉbß=Ï_6&Hì·8ž-ÃØÞŽO8=ÚÌ6‡fI Sï ãw„öüŸL- æ\Jç={‚NBß…ŸE¹0‹ùÎEB|X“ˆ'ÑìÐs|ˆÇ4vp¬{û˜VO#D -¶ÜO]}PƒŒ±:±Ø‘í3\˜ -}Cüæ·×7«‰ýÔÃö-HWžn2Ô©ODã€ñv›²|øÈʳ¦µ@tS|HÛ†0ýúüóe*%Ä -ü¶ÈäÜôN6ýëevzq‹‹£„z—ƒL#fº|¬ÅFïĨ}Žw©”µ³Š˜§§–Ñãç@öχ¶šÖpÓpE´©V²wÖqMȲ+ú¿ óûÐ:Ïx¢RjSNnZ]Ίmªç‡ÝýÈ9w&‘•Ÿi¶D·ùwTIá$2”ú;äÔÆÚ Dk½J‡o—J­E{BÔ—„s6 OØ­‰Ó­ aGÈž­Åͤ8hVŒ!FwHùiÝn) wïQÌÍê´Ã+꼫çoClÖ¹IÉH}×HîªÉ'•ÕãD=¾Öá*¢çÚg¬4!cæœL3-Öˆº>Þ,Ùa{Tê(Åynan“ǹä úGMaiíEj·ðHÑ΢ÑùòörLªßnQ ä¸ÚÊaÊNþb5óä§ŽQ N2Ç-CÎѲ[q‘æ‘úÙ6`¤Þ®+çFÐ;‰É1¯£f“¯Ìí¶[dTJ]%¼ŸW?Ðÿãñ1ìSð~Åÿ°ÄÂ"ÜU²FÓ*‘à{Å'‘`´É¸ïýŽèè,œ?4¾ø›õÎÜï$Ý›‰÷WQ.­s Òf¾Ûáèb2àÂd ˆÀyôþÀŽÛ·V\ù£æÆ×µgáÈžøÔHȺ1âyЧ¡êõ£:à¦ÖÜboåœ:açŠ5›ZddÚç(]22A®A„/Ý-Ú ÑÆW•Ü´¤3"È£JqG,òùÊÅîˆÞ½¹Ò½"±tàÔÇ€ÞèÖ§WQ®ð´ê¯Óio½n3÷»Sjl€–¿&×òÂu¡ªR¼`°£`…8A§ªä†ÀŠù¬û>[~á*8} -fn5¸pzH}OÙd/}øA™þò÷ÁÁ=ldBáÖ‘zîê6ûo×ã¥!«7…R4èå©Înß^êë•xïꪷ7ÔJáÇ7ÑëÛoJ¶ýsŠsBù‘¾¢Hb ÷p~›ç‡Š.Å'¬]¼fE¤`OHÇ<âFýB©IÒgÏðG¹Úú¢á9½Þ6K½k-D¢-¯µ°Šß!3)7|*£œÚÐêÖÕ““ò¦z PÝ/T€øX‘M'òòÀ-‡^ψªÄjÒ®Ôô¹ug²“¬(ÉÊFêȶd~²ý°<7‚Õ'Xè<(0ÎÃã1¥Õ½¨èâÀYÜüÞÌÕ×u*9¾ßê A›îÚ¼Õzÿ7¶ª›Éê(#÷2=OSŽóŠ EƒÖ²O†¤R£ˆ1¢\¸KŒT8O; 2ô·™ ãÎabSt:+nƒÚðjíÀÌUÔ°…gß¼E»ŒÐ-â¤XªRëÏl½G­ sê -(r‚æä3öh, ´Þi]²¼·±ÖOó%~“ÚYDy"6M.°¦a+¨ö „-îbo)! \÷C›aNú¡àð uNrÿæõ‡R¡KROõUs$w„»ì—^)òË]wVüóó‰LÔþ¹0,ö5©‹a IKÎÕ±Q‹:ûï~É_„ë5›­Ìñ¬‡Ç" º¶{*^«¯LÂ%å9¸›ö±A¾·Vx °À4ž‚­Á9ÁÙp6™¶?öå³ÿ\¢ -Gšf†iÓƒ¢ìÄüBò*eã€@6IâÝ"ñÔű­Aš—<çK.ºœæÿtG}ðc^¶¦u‹Ý@>·‘}…įõˆ&u:PEˆ +öö\ÚÖ‡Ö›ia˜ÕkmA“ƒcyÁ‡Cã4•%ZŸÁAÿ½Ü’à‹{ô9¶@0nºŒ¦YêE™¥e³*Þ)º ÜŠ¸ê°‰×éÛ¦1š…ç×i¬ÐŒ½1™þZcQeïÀÈZÛµ¸ùmC‘Ä<ÁÁrÖ#S/ǽ&ÃNñÖèÅ÷bÒ­täŸlô7¶ÏˆÙ JÐ{ý?ÞqD. â™P*ûEos ÑYmNQPÑhQ¬ åøÀ®Ñ;"ejÀüŠ1ÖŽòŠ,œcƒ8»†B÷1«±×õê]¾àÞˆ‚ÈØUCܳ…JaŒ»´ÑÀcbi<ñãÃŽª!„·jEšd½)ja!¬n„‡sØ›:ƒ[È›ò€0møK÷‡TÓA.þaÖ¡‹Šh¢:Ã.È)»Êœç¨{¸Ê2aåñ$=]ÙïÉåJ»\…v'(³d]G÷õÇQœÝÓ"®æ}Y€«®»¹”®lATÌ~¦_|\µÉq‹üßߦÝ8ü”D"$…1¿ŠÀK'>Æ€¼ -¬¿´T³NŒbBÛ?ýÂù›I—€(XÐ+£’HÒq”¨–²[§fíÉ_jo¨E˜¼ŸX0Á„ù(ÿá›,V£® -jÐ7^Êâ6,Ìí?U´»qÇ×äÈÎvãËí+Ûuª›šùëk[µÔGÀ7XÙŠäuÁ8`©üªfºKúø/äÛ!â~óKá'åŸЦ¸¢‚eP‚±áå­É_ž‚u¢5w5ÖŶL½«ÊDvrµsU»;QÆ^Üo £Ðt¹åmLS¥3ãnoD¬b>°úª3À‚О &/ Óϧ©لÂ)`ÔùK´RžK€“r_?^|ÎʇÀÁnࡲӎB!ß$æ‚ <é§1Ö6>ì–d4åi¼·Új$€br ã´|ýí³I“o³ý˜ë»(ëñ8E¦£a‡M£6®6{_ ËúK×7ÕŠv5b(qLnóCø–îÂH§eœ?-¬ßˆ|tˆë¬Ëƒ÷L¤ïÑ[Õô;ÍÉ»-%s87¤g0-µ–ƒç@ÖñÌäGƒƒä'’mÆ…wXû\Þ†[…[Uä±·`i!Á¥³u§;ëΗY°¿bnêòÿlœGú¥Â~ÊÊôe— ¢’}4®ýmL÷‹•¦9~.ø}ñ6âØÏ%²§C©h»fX4ªFÙ˜¬»óŸbÏpßÚ‘£}HËN·_$Ù¼‘;µÎÆ@jQìW²V.Þø§Ì‰äLQ£X(•ñéeùVÒiùk>?†EK¬3IuN°þÉ+H†Ã^ï@Kôs» pÝ«‘åýŽ*ª çf›}±bg:ù%ú¡3ƒÓ§œ°cy,4Ï´kôP\ôаê%·2†öþÌyR2Ñ®é@깎ÝK+šè0¨PàçÞÑ–;ÝM'È Ê¥î—> é¡8!¬VýÕ»¹ÙÙêqì+`LÏ÷”ÚR÷ô¸‡Û+K„Sék?kè~KeáS5&—ªfA¹Ë¡™¨¾¨èÝ–û>sûÒÚEÊ5À>)Í;ÙM«·!ú;foÞØ@Sî5ú‡- Hž'úáÁ¤·ë‘‚»â—y$²É° ÐË1dÃÓñœÖ[‚ÓZiÖk#ôôÚZ4>1Šœ™ËŽl\iuª®r{©ƒK×"¬ÛKéÒ Ì£?ëÿÃÒÿ_àÿÌí¦ 7'SÒÿIt@endstream -endobj -472 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 1024 0 R -/FirstChar 12 -/LastChar 122 -/Widths 1025 0 R -/BaseFont /TYAXGQ+CMBX10 -/FontDescriptor 470 0 R ->> endobj -470 0 obj << -/Ascent 694 -/CapHeight 686 -/Descent -194 -/FontName /TYAXGQ+CMBX10 -/ItalicAngle 0 -/StemV 114 -/XHeight 444 -/FontBBox [-301 -250 1164 946] -/Flags 4 -/CharSet (/fi/fl/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/A/B/C/D/E/F/G/H/I/J/L/M/P/R/S/T/U/V/W/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) -/FontFile 471 0 R ->> endobj -1025 0 obj -[639 639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 383 319 0 575 575 575 575 575 575 575 575 575 575 0 0 0 0 0 0 0 869 818 831 882 756 724 904 900 436 594 0 692 1092 0 0 786 0 862 639 800 885 869 1189 0 0 0 0 0 0 0 0 0 559 639 511 639 527 351 575 639 319 351 607 319 958 639 575 639 607 474 454 447 639 607 831 607 607 511 ] -endobj -1024 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 12/fi/fl 14/.notdef 45/hyphen/period 47/.notdef 48/zero/one/two/three/four/five/six/seven/eight/nine 58/.notdef 65/A/B/C/D/E/F/G/H/I/J 75/.notdef 76/L/M 78/.notdef 80/P 81/.notdef 82/R/S/T/U/V/W 88/.notdef 97/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 123/.notdef] ->> endobj -466 0 obj << -/Length1 1729 -/Length2 10489 -/Length3 532 -/Length 11470 -/Filter /FlateDecode ->> -stream -xÚí·UX\Ͷ¨w .KÐ@cÁÝÝ݇Fw ’` ÁÝ]ƒ;÷àîîÁOk½’³÷åÿ_çtßô;ªæoY³ú™tTª¬b–`s4Ø ÂÊÉÆ)P×å| àdã@¥£“p™AlÁN’f€“ŸŸ æn xËàäàâr£Ò$ÀÎÞ®¶Ö6£Ó?“xbŽ W[ 3'€’ÄäÍaaæÐ[Ø‚ Þl1€ú?W¸ÔAn W%*''ÀÒÖ0YÛ:¡²ÿc$çdðþ;léîü_C W7¨€*É€*Z‚¼– +Tve0´jòÿ‡ÔO.íîà læøOúu錛9Ú:xÿï`GgwÈ ¶¹:ý÷©: ˉƒþG9ˆ™ƒ­…˜“µÀñï­›´­ÈRÕba°2spý+r²üï -жýK€]OINKRêÍÿ¾ŸÿT5³u‚hz;ÿ'í?³ÿÅœÚW[/€'t"ôû_¿Œþ[1)' °¥­tCyf®®fÞ¨Ð% À—`ëd ò€¼ ÆìlN`ô´%þ+°+ê?·ªÅneûOìßÈE‡ÿ 77€Ýìèhö'°Ûx;Û€œþ„xìÎÐÛ -¶üâ°û€\Áüv°è? ä°C<ÿŒ9¡lã -úkÆ?b`w×?Ôl=þš•sƒvé? Usyüeíû¿ïñ"¼v'Û¿EøþY¡ø¯‹øÿIãhûFy ‚ w³?½á–ûCÐRâZFâAkHþ!h~©ÿ/´ÒZEæA[ û‡ ë—ûCÐÅËÿ!huÅ?­®ô‡ õTþC|ÐzªZAýA+hü!hÍ?]­Ö‚ÖÓþCÐz:ÿ!~hNw0diîà²úÓ{èãÏþg#ñC›bþ‡ ’v!ÔÒò/ü§ùá?[ã/„j[ÿ…Po›¿*þ×þ怚Ûý…P'û¿*åðB­ÿ 'ÔÊé/„ZÿB¨•ó_µrù ¡V®á?{õ/„ZAþB¨•û_µòø ¡VžúGÀîõB­¼ÿB¨•Ï¿ðžQââ`/_VèsÅúúüAù¼@ÿÿc¢…»«+È ò¯ãzÒý[ÙBÏEÈ dº4¶xf—Üø¾4@*ª Vܺ)^¹¾{¦-t1Ö¡hDÁ…y½N÷¾< saŸÒó‘Ô-ºÝOm\ú"Ø%>eîyßÃt?ͧ…T÷:MÉ{Ï™úWè V[ãìí)Våûúhi¢^AæåÀI®*£¤æÒ*LÇמô0^]é4­ˆð:z.*uì—ÒHîˆ5OìÄO¯Ö&Cì"›ß¬\ÛÝqïó‘s>?›À[Žk›þR8OòÆØÑ¿û…[dT½ãž£”ª[ùhn°J™Áiàpý1}–á†b˜ZÕé¼\5›U §‚LÌ]&%Ï‹aÝÚQ@¥S_M8Ù´–×ncª¯ü“b,žÌFAæ¥!ÒçÝÙæ×ÌØÖ.@ -: '=Ñ f5c:í‹<—BøRÜ|¸ÔSå×ÀT -·øZÌC;éÂêH«nljUÚ¹½÷¬rë ‹§£_–ÄCûQy„l -â]$µ±/wLQ¤p¢í»ëˤ>c+COúò2¿Q¯}y‚6ÞTÈÅJñÞmRVk1üØóÆà³V¦g ÿ%5Ô2¢ÕÕ‰Ž:`å´Êï_­/¯e˜Gçt¼Ó‰ÊQ¼\¡+B -ÖÙTX”cÑ$5'¹IHW„é={=”+uûÃo³®%žá°²7–`b¬0öÐÒòJ\SÛ9³¬‚±I[´w%rÓ?%ìºds =ëZ]Î/÷’ÐÎ4!]äÓÍÊðZ¥ÕbÇ^WTÞ;H[r„Y E7Å™„dæÑ—ë\ú -û+ûí`Î4`pûñcJ–î¹e¹ñŸJvV³d²„ÏÓpr4‡‘M -,H¦3Žx6õb9“ÅmNZ“s®U=¬iIî´d>.œölø1Û¹nox°³ -¤Gßb¶m„_Fa²¹6ºàÃ)h¸üܘœ)>Ïuv[ ¯*qå:E¹#Üq øö:Ó-LdÀ,s“pHFÀ‘ôÍ>ëI^xK\å÷Ê–à}&—°0µ<©µŸeïBèŽ*b¥9j^ÞÎ{Ÿ2TT†ð+ý¦i4=ú`mÃ{tR°û¦ä$!EÞWzyMÏñ«a ¦ý‘hñ§#O)Œ`‚Sœ¢ÈÈXeÇØ6£}Ñ®au ”œaÊø2«³Ž«TïJΊl7îý½ðW.¾µ©7N“*d'в%§)+Œ]/9M¤Ø:ÜV£Í sݳ3)ks’?vâÅpúi8ž:¨Å ÓopCÇÖ[¢ 0ýÓbù;×X¿ É[nƒÚmQO)+‘ÝðÕ¼C3pb°†òþ 7*‹Æ]ۇ̛×땬 *%¸:áXÕÝ &[½Û`­ººöxZ-ƒ6[ˆÒrvëÎKM¯À;Äwöʉ’xÝdb²YÃøJéYw%y/T D \ò½pë™® )6AñØká"vos?ÖÞoÁ˜¶ -ò~0®-´µß—±áØJ&¿e°@Åo¹cyïOän?Ù5-¯GàySî¼7fRÓÉ'uÈ‹¨¼Uoy7›ÈWû0„aÞ¯-¶]!Œ"|¥°’[yµhm6 -U=gðÍN0î¼ùz·XÔ:¡±nöSvF¯ä´#§ÓÛ×Ö -w0^aEùº4§¹‡ˆ›øÕF®ý!qÌi¢ÕÇz˜ Ï Ù$ü-ì«£:%jA²îŒþts´Â+YåÏ;dÏòþ„öLê.7­8y‡dñöJ‰¬íg9ÓxÊ8¸8{ÒØaD`;üéÅ®";yn­Š ò΀m³ƒ7S…ÞýM?žC3Ò ¿hW`SLº«³vð¶K£ókéÐÝ𚄳"­í—úHvÅŸ®º¯ÛZ±˜S¶äëŠIv‘X†ó?F±Éõ±ÃEP‹a§€I›õl¥ë'Ðý}ßÍ-=ºÔ(ÖÞ=7•ÜÈŽLê·èÊÔÿ¸4‹™¤É=:h4‡m•`Lœ(÷½]?TAh(iÿø9:õG+|´0ùÀjVâïV›7,79;ÂêrÊ “‹ò÷]Ú@¶~Á ¥–å$±¡3ËYüe&nþ/·¼ lÚ‚‘â¾mG^Œ§?-—øËÑ9pe¦ãOBÜLpgN`Câíº¢‚‹*`Vn:Hv´âœJ©\aåv_<Ð&ÐKç«Í}r!ȰùêfŠÛ–„×' ŽÑ -ÆN5Ú¬;æà3æÄ‰’Ú=Ì$Y%áÝ´:ö²×ý$iÉ®OÈ„3Ð!ïT•±”föf0–W’K­ÑvÚ"¬×õÄuÆ>dEˆ±Ó¼¹Q -3àþv£zœÉß–WI@ªÇV0ãË}Š•ÍYT›k“”O6Ýë¡ìH‘ožò¼ë@4\1õ¼ xA¢µëSq,}¹oÙ"F!`8BÍŽª«9؃yæÈvʌ˯ÃJ~Á+ãŽäý•»tØõ{¸ùª¯Ïì^Ãf¤iE møÛVp Yü?æ |©>Æ@ªNSéHÈèèJg‘eêhG?}Kbl¤vãÿ‘k5pk,K/_š£-W<_ÜÞkVn¿AM"Võs|ÖÚÕäïI›^{¹zõA]Ï*ßwD¿~pÜœzNÝ T–G;& 6®oæçƒ–Hªrcæ€mñžk0bfŠ}Ì¥%¯~_ßFg¥n®8süØÞöFS¸,xù •c%æà)¼“!=æ}Mª±z«®ÖÒg C›D¥˜ùX·úF©ˆ"¶}§À_^¾h@'3Ã^nP\™Ú8»åLßDƒñâgÏŸxIs¯rBÞ »TÃKi’ -)¶—¤øÆ€/&4W¥É;4ÆÊäE”)LG¹gЏ†Ï\Tì’Ç)ä‰T c -alŒx4ˆ;87Òx&Å‹Jý°ª—îöi§u6¾MR2·µ^) <{Ù¢²‹?ܶ蘿¨³YbdaTþÖ©ZözȦcáç(UÚe pÑŸäû¢Ó‚äX=ãê$þL2ër”4§üÓb=Û´±Å¦)qôKòW1ûƒz5Iy¶½'áÛpB<4#ÙlOÚ®’MÖZ¡hNoG´yš!Ú3Õ¬ÏDDÑIäÀc>Ø ^øËõÖmCºÍudq{•ÌŸRrâì6—?qÆÕ®à’²¦t¿°|.^üP êÕ‚ûS5Êg&5âªãg?a°¶vŸgüƒ%IœËaÌ÷ -¸eËyûæÑFÑŒ”‘Íyq6ÃÒkrÖ×ã„ÕÀÜ7‘_ ‘òL(\ú3§jð%í'˜=¿µ»ª]xëßëÈ馎 â:9ÈýFt™&¡0^mÿ,°µ÷,‘ÐŒÆjô+‡ÚJ«\ñöû ¶x´$d¿}ƒ­ñçVe‰{BØè'Ì„ l4¬v¡™Þb£¼œ+$Õ£Œ¾j”Ý2Æfoº_$×3Ø - ”X¹|›fäî<ïE(¢Þðîâ^œ¸ £³µªÎLëØk†ŸdÀ|Î/7C^à•Â^-~xü”X ^ÓµXÈ]ŽüzgQðñó4熭¦øÌ'˜]ÕŸ¥ˆ‡•Êöš|RÇZŸÌÛ`…T¥ü Qy¿±pV²âj¿bnÏË1qøÄ5C·ØM‰|úM¥ïÆ1¸ç­K…Y¼è¨Œ©÷+l`\…YiºÏccP‚#0øJz5Ë)oÀðN-Nû¢*'×ç’M˜]G ·°\¶våÜgçd¯I}¹JZÿ)ü)¯¬Õ³`Ýç7G)=‡Z˜ãlãÕßMH’±2¤†ü š\{¯¦%TU1xˆmòy«ÄÊlKJ”ä4TÕ^ÐNë»{z~·‰³Ù˜ Y=¹iãuãI—kd<­w¶ -®™ -ûÅ -_° =¯ì"–TìY‘V¨`1Z[×|P{Äʼ¤ÿS¯VÒ¨2»O>oã`Ç4Ÿ#Cwðæe–ÙÓJ`Ç{sjd7¯w®7Șx¼­!¾yxœÌ¿%æèW Cë=ð¶^8ß9©œáæ#Š„çƒ•}ý~ál™nöÚÓ#¢Ø£j\ûPâ¼¾ÑïãÙ_½ÉšëCB¢\m#N !žšVÓÙ¥ðm’œ4ýá±VZ¼ü¹ù+úiK™G¨êépÎÚ‡r)Í«ø†1¯3›ZåžØb=XR™×òÏž«ÔdÝ?jxÒX+ˆºØ5ŒP {c 2°ýK©°T’v1„ßjsœùFÝr‹ÌXõ‰ˆ~äèwaeqC»fßó¦]UñžÜrP›‰u‡˜<]Õ}ª¥ßU±’ï¸óÅ,^EõjVât7k2K–3žÐlþ^¾Œ/=rYÑþ3ö™¤<^›îôn)ÞTý(WÛsõˆxj$…µ7å7¡.–/v›;7&Gì^H! ߈6¸­PÙºUÛä™ño8ꇂD¬¢f™'„ÉŒAªl4 ¶E¶z¶šbûeT6-Ìr<Ò$(Xr¥"š}‘n!-‹w©Ç©÷³?ùËOžl0{Œ{º´tXüúó£ËE7ç݉ÓF*±’Ðl†¦o¾¯ÁEkØ¥dHÚ1gâ;þ¸tÅs -í#ÌFUA‡{ÝxëÕ|ö¢+ÿr>m,[÷{ynRÐv¼Ÿa&²æÜð©ARAï=!|œ ¶kðUQQKÈ·Zä­C4Þ¶¯U«Ý‹ò-(Ï¡«­y>ãžL1rÈçØeFÌÚ:w‚èæãC숱¯¯ÌSmoµÎF nFÆ”!óìæ¨0“8n”ºc°÷($XÜuÏ}îëRoè ¥z=?¶á@zòb#Å:ÒH";•ÊoW™Éà )<@UÆ©r½[ïüä[Ö¦º gF=˜p:É$äDŸ[xt½”i8Á½ú3«¨ æNÖC`{îõ¾h½È–èé9!8áÞ3µ¡VüÄ'ʃ‡àbD×kêÑÂÏã¿%mTQñ^×Ä¿Lõ£@ˆ´÷k ¨ qûÇ‹¥o-ËàÌnØ}Ö=ÍÈ1Y1ÑPª!CN"úÙu¹å߸*³‘HݾP}ˆm\ZÚËÊÚ7ÚYŽ2>̯ûÖa8|#•FVþ•rW—´T«·;öeºH›}CE@&†f7ˆg²ò¸H&êAj¦ÓöE(÷èÜä'mB[2–˜@Dþ)‰€I(j’Àð=v(výå%ðýãiîýû{3¼ÔÀf'‡ê&áÌH8O‹AÉ|¾è½MØ|‰Kuù'K?µÒ®ƒ(ýˇ(t‡n».Üàù•=‚À·„ä¹Ó<Û_¼\"i—~N²ÁI¼6š0‹ >Æ·xîüPyeÍâÎÙR]Ñzèlðfsªÿô~Ó*½Í­ÕÂ|OyöwdlJ:QÄ$¶˜ ¹¦ƒqY–²¼õX"ð†¼O¼ýM7˜v:SÖžáÉY‰ôÉ-ws˜1âí ãL–!}É·ÏúoB–æÉ]‡ â¥WÉàŽÝö®oùþµêc`NŸ Ý·J%XŽOc£ê¼Dmh¯ÅŸ¯ø9V™jÛ…²ÝGtÏï$÷Î4Ò˜W¶”Êé«zV7©ò3âR¨”Ë0‚Ķ9Œb]ÍMM‡¸¶¨Tèr—´¿Å]Ê÷òî<¡/Æ‹j/YV…µ½#K™~›Ê.•Oöº)BÝ™b§@^Ígk7b 0¦ä@ôñ ¿†o¡Æ´÷|Ŷf|kÏîGǫ̈t»Ð™Öúä¢kLÝ×À'ÉhR^ÍR¡šôƪ„ÌŽ”¦Â\”Š:etØpî6Áïæ cpHê9©Y -L¬žF÷”ì°1[¦ŽÇ¾k%…vÏ -–ìutTnÿ¬-¬ÔlÿÑ|íBKéœE ™A°ÉÏ+ŸØßß®0?òïˆá²v¸½¨Ï:Hð&ng!èG4Äf/¤Q–ß:¢*Gq™C»¬ødÏ™XGƒš¯ÆÍÚo|~ÿÈÂɵ¶õþœ¬híºt4?7Ñð ×-y;Ç¢­Fð»u†¾ÆhÔGœ¬2„­u~K&”t& P:nGü5Yu¢zcQÌBÜ"ÓrYù‘ôlÚ'â!È¢©Õ©#VÇÚªtFeØŠØð‰ù6¡úÀ8»VY¡d-°Âçxé’ |‡±}± $¼ ÄÃâ£9»i›«{˜O| _öœA,¯/€)øê–«ôší¥ò·7¶=…nŠ)êðxÝSáºWÄh§MÁp µ_ö6¶)µqC âó@kïhÌûÛ!ι¸Zš^²¦Ý5ŽØH=üø©$E»ÝB¿ìÒÍߦŸ2º þ ’¾nÜIcªÜL¤Ú^Ãm“0(ìwBñ1(M é«û©Éás¨‡{rék6 ë÷DFÜZýÒPî3¿4fãö. Uã”1æ¿mõêî.Ù>¼åU ƒ=åÓ] 5 -Z­z8­°SË•ñeø9Î\?R,¤aPûúò‘V¡¯!Ó ð¶~4ÛßÌ€›Çî…—ÐÌ  bj#ùšyÍkyó뱞VàÃ$ƒ'aME&ëì:.îhê¨^"œ\ˆ‚µ]++úþxÐŽ÷n¶\Z!¥Ð¾‚œïu¶C{vË1Â-ì•~¾Å„[u6žã W·µ=üw¿›n…þÙäû74%'ÍúÅaVeùñÚ9Ó3‘X|R-hDäW^Q{~ö_%íV\ä¥5U)IçM¡ ö9&—PVÌj’­r•©}k>uÕœ>9¦^¸I˜oÓâæEãŽðã@¹CŒÃ[4ïÂà^€`VåO¸½€™Ñ·ò%ßr!Ý¿2‡ ´Sê›L =短ÿÈ–˜ù;|s¼ÆüÅ|N&ûà]ïîä-ÜŒeg ±èy®š0œ¾›Ÿ4ù¸ã^Búy š½Ó½Î¨ut 3YUøY*£¡AÔû¢)EÿàÊEc—“Æ9ekbt¡4Òv¡‡$>ìÒîÛöFªóÅ‚æ ™þF›óã˜Þ›Þçê»:w™Eš[@ë²´XXƒÌ‰ë¢€Mr ù¾z^V9¶zò‡™žÀÿYUL2ÖˆitR ”t_/ÿqŠ!°jðlü4N4Ùèð gi¦|L³óÙ$xB"î#Œoíù~’‹{ÓBšª¾äK€‚eJâ°õ[%–v’\þ›pŽu¨&»nç2Saæ6š-E\™îv>Jg²&4Ç¡3³7Áß*O©"¸›´]é[O\ª)!!#Fßû%À¡´`¡_¢'Œùã“ßå›’ -ßp„w²¢kxo;ªqK¶©wÛ¥\¨Ü}%Ëé"/SÙË h#0 ˜¢G:>Z¶Ä‹ŒÒ5ÿâ›ËYªŠªŠcÖ8G}é¨ÒG²-É÷ÄðÙˆ5{ -ÑŠx)h("Ì9„:æç]³%_#צ9¸øQÈ)¿ÓÅ©L&äþd&kQ@ÁjÝ«Yþ¾ï'¿ b+—¡-5U­·V©K«JK­×ºWY 6P¶Lâr=ˆFF.qëÝÒ[±Î>ªÌ¨ääLrîÔÌý¡•;^Ý“žßªbÇjŹ“1uZŽŽ®µ<”؉Ȇ»™¢’8ߺˆ£]q+8­¾ã7'ÿñ•U2*ÿ•ÛG”P=*5³`¸×ö W-¶ozŒË*±CF¬I:öÅîD ‰¨×?¿oÇX4KC&©ØŠ¿_Z‡Œ•ðÑì‹ïðg§¢*6Q™Æ×‹+5ðÚ÷ÈåY»øf–ѧf¥SH:Co°}Xb{Ù6dŠÝÌøê×½ŒÊ®¾MÏ@"ÀI¾ÑKÿƒ8ã/æi¯ ÕàšÑæ²½ÐýÜràŠš™>.Çp½§ É8v0zATÍ8õ  -'J¾>Äœ~¹ ±i­—Ìé¦ÖŸ½wŸN÷[–”è­¾}½ï?pHJÈö«o»éã³Aæ#;>ñMï÷PîH¶7›‰€\{¿/CJ¡h¼Ÿ4½r…bt®ÿ0f/–ßf ·/ÕOƒ§Û ½öyj³êhUó&ZÚè³ú(eh¦ ûÕ`°¡üùûszú¼·H']½¿_YÖK–‘d9¾2Gr‰¬€ÐàÀç”,oì ” \æÕ,Zv—]sª¹NU®†+íZ&Û.'„9µ]šø_.Te*‚ª§HV¬­'ÖT"`¢É-U”QF¿y¬á“·ó‚vG7S²4:Qj‹—“!ëúæá‘b0WäOÌ¥y%ß½ÄgC;fͪY=·™Ÿâ+è¨`4©[‰ç™‘¥˜€wXç.3ý!ÜÝŒ:E#L«wœR,ùšÚÚl­ÈwâbwyJÝpøÅUñ®NH?{·YdËÝ >lÿ”—EÊ#œ¶ Jº§­'ña{ïK>ZêéÁ¤íÓžÈX¾KôÕ:g¼C4Ëɰӈ ©¶¡´X@C¿ô‰¶»@oŽ5KŸæT!¿0ÒÒ|o†~ÓÖ‘ݶÀáa?M£ ”¼æþº72‘4.çt—Ûìñ„qðÉ´_qÞŽ‰±‡×¯â¾VŒ°C‰¬³2™uÇÃ*½|ýf Þ©Mð½3]Ü÷¢F/¬•x2AaJ1fÆÅ¢Ó¼Ü—Wú$ó‹J,Á›À{Wà ¸´ƒ©Ùg×$îm°ÎðB¾&«²¿ÌXë?Ö0÷ ¦D’Áê䌞Û`VôáØvz;—3 nk­Ž.6å#/,]¶™)ÃM)O¥nîæŽ£ø©Ç·LAý Þ2ÅŸs¥ÖƯս¥°îZJ"&y¡–´±Ù¾3a£&‘;âð³ÓL¯ZN™öãxøk®S»Šü9ŽLÕȰºË’Xƒ¥K…ÇLT~·/-ù±™›oK#¾ ÁT’ÈìsVÏ&pc~êäSaz¾ ™m¹¼žÀqè¾  öõ?ÏW¦úƵa}¯›îÉN’$=Qs8ú‚(Qó!ïp\w;@v"dMÝ|ßsÜ ½yÕ^1H'Nþ“Ì9³ñK¡%üØ·Oñí¶û™šß4.y_ΕmyîjÞd‡3מÔ}1«(÷úL%}bˆ?z5¸y¸SWf¼·WÁR Ùø$6Fø¤wÓËš`^¶T/ +Ð{›÷KèVzø>¨ÒrG £¯A%¦½ìG-Ü~±˜æöûjþΦ,¸²ú,?±À+XH•Ïѧ¼QCUýÁª,F>©§•éAyÃR"`þ‘É*üáÞ´rÃKPðÛUÿ¼Ús¢nÈÉpÿ‘,5YÞÆœ² ¿9Þ(!¸rXÉ ðlǽd*/˜«ÛɳÞñÃ{rT?æÐ„/šš-XC«9¢¼­$³CÖ¼î*ÊŒCᇠëÜå–¿¨ ‘œ `¼©>ü¾ñõ ®†að –‰-Ùl†ü)Ëè Ü»è%êíA¼û‡S™]*#Ϫ|VaP–úhÑ+3®åðÅö§P' -OœôNBŒ\1­£æÀÿûƒ߯š4>ÆæÖÙ/å6ï‘Hž9kóUåoå¢ -<Ͱ9âYÎÕØý\n›?‹¬Ã›<¦™,Ç€¦Úi ³)©—S÷ËõDOyö¯ˆ[­¸¯»'OŸI(~§›gÈÏ:ú:™ÏUŽxÏzâàå–ËVªÇ÷†ÙqVN_ö¿79´nݪ9p79³ ¥ œ<êÏõ©Õ Ú'!¥¬jÿEÊw2OÐ_±·E-^†1ŽN˜ÒÁ -ì„|KpOÿÝC?º­?x$”[#ÔÂJ™RU:ŸY=l#WT×B"6g"ˆÞfPs4Ê&å.¢½f(oÙ6˜uëïà`¥Ÿ„˜ uÈxhº1èiw_ÔÖ tfØ&ÄxfðŒÓå«-¦|Ñ:úŸè´NDá8®VäùBì˻ް26D›¥Ð´^ã:î}½P?,VšÜ~· _Y¨ UOLSjfžëJž’Ø'q x_š?éÆß3†ìíÛKÞÕ!¾ßÒõ_eYàŒúw9P¦þÞ·ÌdZxL_ßÑ·øu5,-ÀC4¬‘Èw}eµ·ˆ¹ý•y÷Óå(Û¥ :ƒ¸ãÒFlý -àÎ;—Sÿ;ÚJ§óµ0j@ì<ñÿîkB_Â{°8y…÷â7²öqs“~ú\' Ó5|+y)ÞÔ›?Þ&?4Úsö äΑ¿ú¾ä}i0®R “z0‚'7u‹æVshóÖ]w–¿ŸA}à—ŸObÒ“!…͘‡N¨ÜUÊ’DI¥Ý x úu6v“ÃÝ”þÆsi9pº@¬©}žÛ&-0êñÚ ŸÈ;È¢ê­ù CïPL 9=~´àÍê›6ç-l Ôîísªp÷;‘íe ¦¾yã‡ðcÃÈ%œkóò èKÅÞô¤ÉoX±<‡·—MG¾!ä9 "2O ˜°w3+jåÃʼ/¹„¿ê7ú1¾ToO-{zKoø ŸÊvñ‘7?°P»läz§q·È“¶ÆÈ¸‘6T?ÝîÔ_Qð9Æô0™$S‡‘dÚ—2j }H¶\z:î:}ã.V0›ÙŠ™;üÍF–ùa–%OÈÆõ€›> endobj -465 0 obj << -/Ascent 694 -/CapHeight 686 -/Descent -194 -/FontName /YMIUDE+CMBX12 -/ItalicAngle 0 -/StemV 109 -/XHeight 444 -/FontBBox [-53 -251 1139 750] -/Flags 4 -/CharSet (/fi/fl/comma/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/A/B/C/D/E/F/G/H/I/J/L/M/O/P/R/S/T/U/V/W/quotedblleft/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) -/FontFile 466 0 R ->> endobj -1027 0 obj -[625 625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 312 375 312 0 562 562 562 562 562 562 562 562 562 562 312 312 0 875 0 0 0 850 800 812 862 738 707 884 880 419 581 0 676 1067 0 845 769 0 839 625 782 865 850 1162 0 0 0 0 581 0 0 0 0 547 625 500 625 513 344 562 625 312 344 594 312 937 625 562 625 594 459 444 437 625 594 812 594 594 500 ] -endobj -1026 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 12/fi/fl 14/.notdef 44/comma/hyphen/period 47/.notdef 48/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 60/.notdef 61/equal 62/.notdef 65/A/B/C/D/E/F/G/H/I/J 75/.notdef 76/L/M 78/.notdef 79/O/P 81/.notdef 82/R/S/T/U/V/W 88/.notdef 92/quotedblleft 93/.notdef 97/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 123/.notdef] ->> endobj -458 0 obj << -/Length1 2054 -/Length2 15429 -/Length3 532 -/Length 16561 -/Filter /FlateDecode ->> -stream -xÚí·UT]ݲ¶‹—à‚»»»»;wwîîînÁ îînÁÝ!8~kí½’½ÿËs®N;@›m>ÕkT½½ª2"eZA;#€˜­3-##¡°¬#!#ƒ,™°#ÀÐÙÂÎVÄÐÀEÈÈÉÉD(0~þq±²p±2Á’ -ÛÙ{8Z˜™;RSþãÄN(hp´06´%”5t6ØcZ*Û[œ=è­­ •þ¹Â‰P àpt˜ÐÁ22šX;Ì,laéÿ‘$ikjGÈþo³‰‹ý/¹€¢)þ%“’(ÒÄÎÖÚƒÐ` -K/gÌjùCÖÿ.æbm-ghóOø -õ-ÚXX{ü—ƒ½‹3À‘PÖÎàhû¿]ÕÿÖ& 0±p±ùß«’ΆÖÆ‚¶fÖB†›,œÄ,Ü& -ÎÆæ„¦†ÖN€Ù¶&ÿ[°rÿ’@/-*§,)KýïžþkMÁÐÂÖYÅÃþ?Qÿqþ3þa`u-Ü µ€åe:ÿû›îÿÊ%jklgbakFÈÄÊFhèèhè <=@b%ôb$´°5¸Ü‚éél휗kâChjçûOC=§7ý—íßÈD‹?È Dë?ÈòóŸefà20¶µ¡ÍÐÅÁÅÎ`bdýïÞÿg…ƒÞÐÆxr û•ó¿üÿ§3 !½½¡#ÀÖ`ú—•ñ¿¬ÿË(ÚÐéŸNVŒ@möÖ.N @eÆv66†,¬„ôæöæÛ?&6àUÀ@v²°Ò;Y:™ÿ±wâ p´ûcnÂÎðfªwvû³Î -ÔílîøËãŸ:Û¹8þ1üSi ׿<€r€gà? ëpýK+°ßô€ÿQV T[‹¿…pü³gk»¿.âü'ŒÅÿ´²\ ÿ´šùŸ¾œþ™=Œ@ ‚˜_ès ÿ!`b‘?L*úbVGìS‹ÿ!`]$þP„äVDêµHÿ! ™?Ô"û‡€ZäþP‹üˆ¨Eá³+ý!`vå?Ì®ò‡€ÙUÿ0»ÚfWÿCÀì˜]ó?æÿ¹YþÇANJú?ç”ÂèCÿ¹%€;0ù ÿéä_øÏ9û [2û {2ÿ ›úëÞgîÊò/j²ú ¢þš @U¦#pÚÑÛþ…@Uv!P•ý_øÏYû ªÿÂþ_TåüU¹ü…@U®!P•Û_à ¨Êý/ªòø ª<ÿB`d €#ÀÉâßéÿï/$dçîE˼½ ÿô‚““Óçx»8'–ó¿¡ÀGų©ðÁ¸ŒaW—쌹ƒ,S›CÊ}E g* ©@…ÌZâäzæ;áWâA­KƤ¨~Ök¼Tf "B¸½á:Etx+NŠ]}sˆK[|?t58ÌðlÃÕ¸Íõ8°'~ ¥vQ15* ¸°Šñ9˜å(ùɋڹIS=½ß­ qÓG¦¿#9ýi˜F/AÇ/Οtçåk$š: tÉ´”1Ý]A|±ª†:Ø‚`™úô0z¶°G·ëŠÙ_S5î=˜ åVaÓ²M§›báÖýéwç¯ 9Ÿx÷èÓtï.HÑ8:3li¯ÂI¸_*o%p„|VM_盘ðw¢çò¾ë)w´îm#›5 ÎmÒ´ÕÙ0—² +C.О 5£%XýÙBž;»ø€C“þ’9Gëä¡dô~úÎ8RJÔ·`™lŽ[žŠss*Ÿ¯f•²K"%Z µvnüð%w6Ðu>MD2ÿ9­«ìmf «(… ‰»üŸé‡ ½%“0ÿS'¥ùrÖ>9×Ìö䚢r_÷S‘%±È3§”ä<ç£ñ}© %³ÑD&‰½Ö}x;»1¸ -Ê;[¥®³Ü7öx¨p¨°qí” •H¿³¼è#Š˜Cu¤SÂA‚ªãã'Òvâ<ŽÊoÞâ­Nñ†¸n ‘d€rnòb§]¶ Е[ïúáDv¤ò6¢& #ÿb}šf/J¾Äâá{»™On<…º¸¼&²®oHgÅœi÷¾WdÃ{«åDÝëKÖA+µ>Ü/åk”Æ¿ÅÍss۩ݧl¶¥t€/}ÝIÅ¥ ‡ÚZºó^øE,‘2…é0•[Q‚`űK¦Ÿ¡Pô}úr> DV·r-€8Üs+|A7@åóºˆkÖ$‡žù²ì‹œñø7wç+”"çàꢿí—2ç¯,®Ëv¬M¶<èúùlÃXyWCg!®ÇqÃWKÝ<²gsÚ*Z$;¬ºÅ@ì·¨N›ùÀÙì±)C@£Aˆúw:B’—Ãb‚^* %~;ú¯dç¶!F‰Êhì_ àÉ£¾µn™w]„ 䆴zk'©Ïæ² aÌU -ÃIäÔx¤¶Èô°«"~¾ÊøÍ.Îû½HS¼hX,ÔHÖ߮Щ˜{I‹™·Ð‰jÜyÉ·)sí¼ØØ@p’ª¦l=Õ¹Ï ¡s¯àY2Ë!1[óƒ}à×á¬ÞØ ]"bo{Œú^nÁê++üÀ¡@ ª?´·“rnÄg·Íö9 ’j†ëé¬}•ÁA”\'e}†Ä×¥ñï¬^Ŷ¼q¶ÃæÇ*ñdN,/µs³Ù½Ø‘dÄ2jP!óL3«*ó ßÅ…Ñ1,Ϊe†|K“iúݶz¿ÀÒúc\×Î÷é£TðЬ©Ú­öü/™ófžjîÔjtî̃ªªN¿Nb‘çÓ@“LÈ•kÎõDËȨ¶¼ñÀÒµ^z¡2âæÉs¡ƒ“ƒª4ÅDÖÙZ/bÕkÆÇ8ÂíŸo˺*%æU®ï–‰^õbàWÍr¾!‹íFh€âN£DD7i%êó‰þŽ€3ñÝe „__~ƒlBÂ/å¤a.î©üº_/–¸”L•’š%QOæŸ_^S1×§a6ɪûÍoN•ºzd…ªPNÿ­¼ ½+V ½WÙ˜Gk7;&Ÿ}ÂÒ?ˆ\/èâ^/¾/Õt¨3mŒõæ~éVZmT³Ï <·[d*wÙÁHÕ—´¶/ïx¿ZSéȱ~¶‚ùÓì9üFê®oÎo" ”/K¹úŒ:Çœ[ÎN°.UÅfNó«JIÕ÷*[@EÊaÁB°ô})\­žÜ@NÆÓ³uYw¬2è‡p€ñ%'wm‚ÿb3çuÀƇŠ)4”…5qLiYó¦AKAÑÃKñGd¦H [‹q«  †S‚ÈÔ-hXgÁµè "9úÀÉÄÑ™V›œðÏŠºï8Fó6…·ö²GS{«0÷¹{¨å·V’ŽL¾BÐ2hRè#A€twÒúM¾¾J¹»síÖ»’_Ô¥s*ô€³M¸•Æ®Ÿ¢x šnA²‚¸®‰Úä3RéW´òñ4„Q°¡‡ûsH3ÙCVuö¨ÌÔÇ''jJ Ã;¥ñ÷ÄŠy·•Ï: 4–«l]öÓý¬£ñ½ÆC V¯¨57Ü—¢d®²Î“"-•|j¥ŸçË옫óE$‰œ$#–p2ËSÇ ñ@3Òy÷œ$]9Îó¡UcÆÉ ä´Ê^׆‚l¨ÁC¸\s¥lŸÇ\0)Ran”žŒ>mß|zȨŠ·¸Ð”èÝŠ?.™Q¼‡Y]¥z%ñòbº‹ý…ÂÖ*š#ÄÙ•ÇEYü]DÒ<åûÒã­¶j×j`PÓú‚œo]FUw²É­ì|&ÍR8í÷Oˆ}E¡îÑF¢¾I^Ã5‘á€îŠñhù•j·ôO­>è -r¡¥+¦ «)Å˱-Ó”H¥¼Jl¹ƒ§†QÎà¤Ðô_N£í¤Znx »•È™*JÆ4$î¿1¨D5O7¿;:æå E­9íèïÅN³˜í5õà”ybJAcÇ¥©X•e=ë OÈéü¹':ª@†ã6í†ZZfIë˜-‹ªºÞj½íh9ŸîfÄ~°‘+>ô!…Êþ´9œ]ÖQñýdÝoMË×L®ü€ž%ZúåµotmZüaD²Ã# a×;•šÂ拨íÒÓò¸ÞÙÜ–FüX‚ç/ŸiJ‘ ‰ßnÊFôDŸïY±NoóA`½®þÚ‚ÒŠW–Vù»Õ¼ÏÌK‡ì&¸‚4+o¥ˆ}× wCÈPB¦6GhôÕ_u†Æ,„~3˼@±žkeCøÂ‹µ#°CçÙpwK%‚(í«õORòÄlÝbŸø¥ô ‡7W#*9©•$Reß(V\Mûó ¶¤’²Ï‹"‡Éi¸LÁ¡4Âs´+T7ÀÛ¢L§¬ãlRñŠ‹ç—šh»íPÒ¶.U{*#ŠÎ£?ôk zZ«“ýš¥‘gØ÷•µÐû;“pZW÷l™ãÎ!”õ~+Ó#øEŸQ‰¯óhsŒrm‰qLñ¯ž;ÜÖÊnö-ì ºƒÃÊŸæ°ý5µØ+¨¼ˆâRæ3Ä×y ñLަ}ÚÉ…—-Ìy¨ê¤þhŒŒÇm Rë\KœãŽÑ0ø‰FSÆ–¸ª(iM¢öWB6W5“YY*ÜN»·Ø1pzéײÇ9ÖøÓw¤1ˈWñËëSó^«Ðm¼-'Fο‘ŽoÜš5!Î1ŠA#F}&¡ j¤SGîdÜß/sX]-´w©æ*UÞ†]E«ê$‚(˜hËc„Ë©²wš©ç<–˜¬4£¶°øtgQÓs?Ñ ø°é»s|1ãø|µÞSA…³Ùec‹—_ÂÜW=ä¨û*ãÀš³Õ°N|±Få)n–þ~¢ÊH<¯¯ÔÑd‘mªÍ õ,ûs9ÿô“š(Üžm£ Í D¸@*/V}6`éÞ®6(Ûý«wÁsb9s/  ZEg"·xd¾9xÛd— /†ÅY¤V›^´5ÿæwð2JðÑ}\6|ÛÑG;œ%*Å8ã7©7¶¸Ù¨Š=oæ*[Jd%Žsls.¥6„BHȃÀýŠÝÝ#ÈYtpRx?4Ô[¼ù7ÊÎd£¼"ÄÀ;æeÄÉC}¤¼/á)ß®ÊàªbwÎcn„åàOÿ»ðÍË/›ñž0ü*"Ò¦nK®†¥Ñ:*úï55Ö#Ï0¶³k$+—û¾ÂµX©Õ»ƒS‹ÒÔç‚ÒŒYÓ½>–kï‘ßów[šÛ¶À» y…-j:GØ9¤»"B*÷Áožsáy/²M²™é•‚÷ZSüa" 2â†øïW‘ë.+Ét&oŸÏ,Ÿ#ümÌÅÌ̇íêb®;²òË !^&ú»+¶§³+ öÆ@kq PZ§—5õÞuvÝÏÇ8ÜÕk%Æd³;‡¼uKqwì<]‰I’:§ “ZJ…Á’áqžKÚs@Ü–×C3m£¥EXµŠ&k4ZSXwN|L_æN5ÅCQf²¾:mƒæ\=äƒÂLªŽâ´å&±¢w~ÕSÃixŒµMÚŽ'ŸÇãaMQé)Ñï?ß/ð­íá²3Òy}#‡8¯8ÛfàØQû÷`<3@H)/£¡’ä¯IÓK{¶Ã0G Ù”¶zcÅfª^",+ªüöÅ¥æw.\æ!.ø¯i4üêZ/Þ³^á« >f¼véE#zs±ùQjkÇh Ù—ŒÈÃçàbÍñT© w,_}k×%î_BäÞY#)ì2q˜ŸcŠ®y­Jpžöb´ÚdZ¶GÜÝ—~©„ ÿ4‘kO¨ëá¸-à(X÷Ë*‡/DL£¼:ßüj…YÊËáÑï%0Ü5Ñ7ÉžÅÝ<“µ/„Ë~ñxs*‡Q¯0Mªhb$³Ê´õZˆÜÛ…¾!¥BàCY3ᤀjvÃב-J•¢…6¹Œ>ÊošÁݽ&d´}áᲪ_C4eÊt»a»F²T+¨,äjÒ—ß*Â=@Q…΢ º%R§ò%`•ú`!1%ñÈŸûÕ}ŸþLð ý6µ%9 C¼Ñ$.½ÈÀ»ãÜ 6ÖS¤ÔMÉ;[TI7€íWÌÇ…kó-ÉÌš0¤“s·<ÕEäD½+W¼Ä 9þÙž7Mú˜·Ä©Ú9kÈïð ÿø­ mòÝÅ$åä¾ß·cì3e®ŽªÈ%1ÌÊ—®Ò¾4¤A±PÞÂpe¼~’¢Á‚%îz4mˆªO?¿:x€ÍšEÉÎk¹Ñðu8Ý>ÞfÆN8¾ÿz"±DÐÞéTNxêå‡8Ž1>¾rŒƒá¤É„"¾öpŠ–.j -<ÜvÇ„zé¿ žoªp@ãIi؆~D€¨Ø:}Ëß?©õ à»É[Ë–Þ±Œ›Ì·ú<ýÂú¹»àýôýo? -ÃÓÿù•ßÓ²œmŒü*F‚PÞ§ÕqŽ?×Bƒq?ä„›±K(-Zu޾`®%ÔC00ò÷ª={앇6{¢®ÉâœÒu§Q€þýß½˜aK_êer»l®äZ½qYÁï×) ž7ãIP{BjÇ!‹½v.Œ ‚5µ¯*ù¿C–Ö<Ï>'B„†*V>«Hx«íÇ(‰NE (ú“]6€î¥Ù»äÅ‘Šóf¡Ÿ¢…DNíR¾=ʼnîn@yyuq T³äóKBo*ƒqwÁÔèa¡y©È„P#·Ä²bt´rŠCn»qǫҧK9~qöâCœãDpÜ·ŽÔ¨[C`÷éιÓQ†c¶W=ÁÔC•Óo.ŽŠ£f4ùšç¢¥MÜ=ѳ4Wñu½eàŠ#¦ÃâÖ±Ôrù£cÏ cqÛ¶"y \AxëiPMtNÔÚ>®üc‰•Ñ(YæØ½…\<‡ñZÈe°»$’.¹ünp¾.8¨B=C{2ÿÎèIj~qܯ„c\£×i~\AÚ#;Gsò Ò¯:„c¢ìæÅøyêµÅý/%]ßLâ”L˜Å Qd™tï7]ÜaÜ£ ±ÂtãåW×?õê ó»èK-Ý勉 —êø–ðÅ•I€ 6_Šêླû§ð̇ ©{ˆQ^¼ÈLÖý¼²%¾åIºÑºÎ=šG‹áÿrY—¥u<Ê1PòÕÑâ»üÍ¥ÝÎâŒWîÞ "*ó¦Øñz÷â&©÷mZ¹‘iMV5y Ø-öÖg*dœ…ÍŒU¶KB90HÔâKü3òš›21ŒŸDS¨‚P¾hƒŽ"èîôͶKº'HY )ÞŠH{ۻݲ¼¨¨¬„dË6½~C×_à>\cŸi©\&ºL}M÷¡c´1Qé–½ÔŸ‰ˆ4š/ßj‡b3ðÚoh)¬õm¯_ÅJ›‡Š3Õn¿i|s¿·±¥Úÿ€Ik ÙqÜH+~ª8µäâ¡:=3-øR’&E}€=àÇ‘åc1Í툅—:‚&³ý6¡¦½T¬vtOQLFcò*V³nñ,WÆõ.7ëÜue´*ýi§ÓC!­6‰3Øû²ƒ÷þº°rC[n.)Ä>(±Rì¾?“7gšH™9¯€Í+^ãûËlÚeTA+~ Šú‘šô‹]oòqH[bùÅ¡ü„L?Yˆö5Æ~+΋M_¸#´ùÛ5™•TrÉÄ$n;ÄÁ|=9ÙZô´ìhõ‹ÜL~[u¨ÙsšŒˆfÈžzŠnÙ~d_Ý›¨ôAM÷wj:DõØì^Pû3›X¼š…íA[•ˆë“ù3¯FíVuÐĈªù!³1럗~ùßN¥š¹É³9_i‘­U ‡SÌí’`kóÄê²|·lÞ­Þ_gBŠá[™¢¶íc˜«†J[òxDv7˜—„àÍÓhq7ù{(,Ù‘ÝxÌÚ¯ÙŠµ8\Ûª—ØzQ†qútæwÍ0/W?Ý ‘Pr"aA¤8®Èyáx¯û·úïØ…|êx’†â†žÂ‹æbPÔMàâÁ6×`¤Ù«¦1&R‹Ÿ §“€”t™, òâbaoǶí‹Á]€9íÞL¸, _ - w"ç]Ú"Óƒú™ìÎvÇá¨9Ç6lßzè¤3ºÌÇ@”}Zû{¡³ŸrÁù÷X= -¼ Y¿´8BÛõ/J°æ«ë¹fûÑ ÞRe7.˜oq¸šÒ<1¿Ù…œ„b—/òc×±ªù)¯oÆH!óí6f#£ë$·SØ“¡ ÊVÄSB¢Ì!‡Ý^¡~p2–+úå¿i€Ö§àCVn dËZ…|‰iA²LƒB fcsfÃãËîýú1*ª€¯m’S¯×b{V¯L”Ø u«0ËgM-OÍâ?˜.‘ëÏíɇ;Ds€4n#ÈÍ,¯êZ$²‚€b4%Ì+lפ¿Ý4øº:Ç ‰oô–¼ƒÌAn:Y`žh)Ãø¢àüly?¾ßMÑ -ù «è¾z®üYô©èUªónò˜ÑÒ'RräØ4¤ö¶S\gmVJUÏAš«Ž.4Q¾ ­î6ÓI¯cþÒïóG¸ß"ig娔«ë¶³†7¡½ÿ^`m@ÊÏèªáB«Ò–½FzŠó=‡nñÏÌÏ0†ª—6éÈ«QîöftXö9§ÃÑZ $1¥ ¿Ä{ÂÆkºqr#ZC|ÌËÔ»qm̬~‘$f5r"yBM–KùÜN‘ž=¶P~·«É=6†·%Aˆ¥ÄjÁ¯¹æ hOɬªéEMÈ@ðVi¥™ ƒ+ÏúÚ«u˜….ž°1 ¹é$&ß™\Ìíu^ycK—¼µëcTëZÉ@oåaTÝ/Q)>C¶2L:c󣆮ÄIøÚê¨MŒ“÷,^K¸§Ùù]lG9å«ð½!öèZÈ›Ñõ&‡i†s˜3‘eׯ®vÁ“A³P%Q×û´~Øi‹ÞP°F £šã6uJÆìGŸoBòhãW(Áµ¹ ~D×íГHìA½k¨(òG~êÚ¤ú¼Â®q†á@|á¼s1<ž°ÒC7ej3 %2É1ªwÄÜêê>T÷ü¸Ðh“íÜcØZ$¼úõا¥L!õwi×ÝÐæv>ã·2n˜ÒZá‰ÒÇæC7ä 0µ¬ˆÈh9Á\âkuª¯+ûD Ä–W܃yy`3æ8)Æ ŸèC*í¢&>k¥ýÀ9Ñ‚~¼¿¨ëc" -wøð5M/Ž=.¦ÏSÑÓ£©žÈ´8]¼%ÚÕ¦—Mïc?Zß´Î¥ìo=W¬Ø&–H?Òe&0*Ô¼ž$a n=²Õ®XöÌ×Cäwe}X&I¼ ñE,ÿ`yÐüz½×·°kó.’Ÿ†’pÜq;žX§2¨eo*×Ïò\A~1.` "@´oŠêÕWüíçàl”DÂ×\±2š‘}6úR—ß8}Ö»l·‚eÒVÿUEÏ… «XAäõL[‡u°ÿs|r“!œÞ×C ÄwG5uë¸LÝú‰6=\og½æ.ÍèèFw FÝ UÚ óø-³}_O âÀ—Ú•‡’7‘>ß4Wœ€í/ÔÙ×’§»¬ Wd€f÷ª—æ€[}°§KÑ”±#\õʦê8ø*OÅÑÓo°€sT-)«ÌVJUŠ>9wêGÚêaSw-ή\þH¦·Vä!Cëu¬5g#ÿzm0b"÷ÞŽ…Þ:‘p+â#s'Ùí_RmNuuntXè/w>-òÕ<ì#¹åžs7©W’ßokZ*눢šÙ0ƒËtŸ?ð±¨@á˜Þ]ʾc«’5-ÉjYÞ¡K¯·3¥;ÈYHA¾Ñêmí& '1;pc -P$¶ø)¬qE—X%3Ùäv;‰vÊȃg9Ç~¨P‹Ôí=,;ŒÑOHícùµóïl¨ŽíDd¢„×ÜZ2ÎDIÜN -L–0$Ä7øñpá )eãêS,ÿèR®Zø1™Þyš»‰LÙÆgË%OÚa4mÅùŸÒøøM:Ñô8vPõãi–~TiyöævÄIÍdñ½”¤^såqLÒc›EàÇa6ÿÍèT¢Ãïß TÔn­]{<^¢êõ±6qÆ¢­©Ë!|V‘út²·é ©³›^•ͳNToøß÷u— -Q@×~Ej×åS“I.Oî÷I4TMŸ 2SeukE2B¸±r’`¿Ú±;ƒè¨ËCéuîÆ<¾´a<T •×53Z ¯“ê¼L\èÐ$gJ~×C8oø• -#–ã/1êñ„XN;@ýr¥$!•¿0ã6K,L>@—ÏiDe*Y=g|Ì|Y¼cr‡eÅûÓ%[~+ãÜÿS^K{Û»iÁª `ŽUíN@^ÚvUØmµ€è#õ†@ÛŽ}Ó¾3@ö¢ák{XXNê,ã ·ŽsŸ+Ð!}] cVI{.ÖÅ«L¯p ‰œ5R°ú¶rh·èT§YCs•ÈúÒð3覌q¯§SºI+&0˜Xy¾ž?Ip¥žGÝÝ?1ðª -_í°¢w¨`Š.×^.^`˜íš?J’€Ø‰¼})36jù2'é=d:Œ Û‚pJéù°Ž@t ž?´5*cU¬zCUDŠgË²Ý§éªØ¤ŸÈ÷›qé š¥ï²µŸßÄå­M#¢M?ŠÎÅ~Ïò´Qöǵ|eµÛk,,Vd1Y0©új>iMlP³Nè=î{]⨸q` -‡5Ùü±-áÇ`©ÞH}ði¼VŒØ±²¨e,dPŒÊ:+©Òœ4Z7NÜ*\_‡’úi7,ݰ`Y‘¬ù³› I¨ÔT -»yÛt2%ŒØŠ¯Vî£Þ­HIÁ´Eé÷zï°!ÞÓ G+ŸT‡Ès€j<¡“‚÷¬‘ƒj?µJ§Ñœ²Œ|ÿð‘3à üt“)æÅÐ=Ò±º2^âÎã~}:)¸¯µSC­à5Ý—%lëZuÐeb®Q1xïxD¦Å4DÕÝ·Ö¦²ÍPÄÙ>_|õð¥‡a€ï¤]÷äú‡~!¶ òyåÏê‰ÇY·iìaº Ôò nr"ÅïÖ}éÍ|Ý]¸d\G`r*¨|rú…[h‹ ਖ ¦\‰„ì¢÷‘øŸ]ˆ“îRZAAø’&Ü»Ùvuî´ù4H®ƒS©QžfqNKÏ2z ì?ŽÜÌ.Â+ò ¹ˆIÝÍN&ʇŒw„Û ø2± Üå°GÓtŒÝÊ÷çØ¾KêqŽN'#êkú? ¶ê£…  |µn+ùÑîÖ1–NÔFâÿ~¶>Ê^EŸ,–ñÂËU3ÅÆÑ`]ëz·©‰;G…KÃGÄ3p³yþœ6çëÏé!oÒìÉY¬…Þ8‹ät jÎ…¸t!<Òr¤.¥ÁVÕ‚gîÉ[úéiŒŽ-Nn‰ìWv 6¥æÆ—¡­2Á4&¤ðÍXD]eJóÇñM «·ËРfp²Žz­&o™ šÝ•âÔí“’xÙ‹]ŒXܶ…õÛVÀp^eÙ‘¬øä2°>zþ§' vþ^Ö¥P¹ÈÜÉE䆧-E$ÂYa½èéªW*Õxx˜yÖégt#j91%@<ˆ±˜ôö-jÕh¸:Ü•…»Po<Û˜c™NF–Å¥­ìç<-òÄUV"ÑœLv-»²¨ûŽ4!ųÈ@W;§çLï¦ÀïË-¿#ÝP=NY /¡L-‰¹qVRãW,…^è·Jxes@Å?¶[ÐCéE4釂•¶¶v=äÃ’ž‘ú0/f‰·ûR7 °±%Z‹§ˆ©¸\Í Ë”¯¥Ë -î(\e ¶‚!î3ª`Laο´ò‚% -LްߨÃu$Œƒ¨è€é¤[Fwÿz/ˆvDpwÊ:UºÊ‚U¾*¦6•°Pƒ^ ¤õ„·ÎzX°6ã[ÜÁ'yb\ 2kFË=e>lÇ’¥U\$àò¨vÜùt‰)íÿÛ5üaÍÿt‹/aÔË‹íò Âq9ÓSî´¢µËf@5VóÕ qçcÝ$ù‚)¾ÎX±À0œx‡+3ªÔF•*äÎÞØ„ÚgÛ9i½QBU%T£~ûXöºöÙ¬G€‘IÌky ìÓ 'Â7Þ$´ ÄwÛï¨ -3ÀïÜk_Šgò[r -33KsøAÈuÞ#:ha™ÿ°¦ꪀü´,ÊŒ=VyÇêœU þÙ2wfʬ£Í~÷WtÈFØà»u}‹|¬.ú,s‰öQ2Ha+r3cÑMd²· xRs;Yó;%35qDJÅXB¢Z”"¿z”XKý3°úE%þ.ÓoâAïô¥ÏèÊžoÐZÙÁo–žƒh ä$$ážH+¬ØøWû›H Ä™‰NR1_åóUŸGV‰D¡)í¥›FX¯[Q¾eÇÙV~lÁž*QÍbžEfÍD0QáèÉׇtø;\dͱÜùm…ü æêËå¿™³ IFvN"›Vò†iä eu§ˆ5vì³íåÅYM{{×ת.3æ%/‚¿_Šª XRüŽfТA¾ÆüU¬Ô„«*‰í©LE÷šž{¹[Ê*7Ò?:lmilaBa–ÄÖÒrÔT/$?¤´ŽÙ&äWÖ ªZ?57ãèr)ù…EEŠ ïEßj‹Õ.yfOÑGâ,‹¤{CØÀÆM†´‚ÎvŒ¿D7],(ú†ü ¾Blè¬{„-BÖ™gÂuzÔuc#NôÅ”‡ÙHJHh -ʨƒ¦;·Øâ㶦uŽ-78¬1ßmB -æAä‘óÖ‚<„­N°Ñ¿fͬgªã=§+KÊýL~UžD‡‚òäÛÜ ÒeDä{­³FÛì)²/¯¼9Wj/šÜÑ l^(Ja»Ìc2¦.W¢ÞW2éCæüã{ÝO—(Ú­ÐPf)ÉûÈæPÝ–ÚpYnH‘»ˆ{ÓŠÒ£58…:ÇôßùëS3`4>®s.L“<ß¼[ ¡¢ByVb¾À…ÿ CèñÀ¯üä®»«®‹ü×6^œïzLÊ4îsŠ¢[ú§Êó©¨N½¨67®‡7~:}ÐÛŒKÑ nÅxÉýmÊ ç».Q‚o•ã°Zq®ŽSv Y¥ÚQÔ!íY$ -¢%ksp?é•FžÚ[sü“]§¾,Ð)'·ùÇìŒ —Rq½J|ÔS믤ü¼–dŠ›€c§N?‰Î´ZÄÔ¨‰~*(ÏWʃÈÛVh˜•CÃKÔ°\³ t÷¶d¦?Zó§Ìb^•Ó<©¢ÙÑ¿&Û Y} -NÒ¬Y,q¶ƒ6&¥»¼—û=²A§¤68|~—îàžDM‚\ð“:™ãÒWJ vç3R°ŠˆNh'^‡!Ñ+>¬jYÙœ—ÌÜͬºm Š(Z,ºŸ&ùlÓzµz„M@0^Š¡!SÒÜðÍ] îÅ3jNå«‹Ý‹Ñ%ÈQ%÷ -WEÊCÒeÂúÌ”<:ÇÍxb”Ûn™·Rþlv WìKeõ }ë°™.ég¢®‡i[ÿN[ä Â^¼¹Ù7½ÚÙʹ§Gµ90ëmù­Ü8ÎöàçâFœN×/ ³ ãG»cõ^hþýÜÚ{x¯sR•u~^Ë`KÕ{Zi´"/+1Jv+F&ëÁðÖ¶Õêoè?âwï=ÕÔ¨~íÃÈ16Ugˆr! -üL­s]9öFеÛ-ÓŽ¦N†´ÂX©í¦`›V'^V8ѽoÃ8s¦yY¤ÀG}ˆŽT‰ÍM‘mDgi,sfMPJ °õfó9àÝzbüI¡`Ûñ棄ŠÞÀ¼KxŒtÑMâ½>š7XŠ)Ó•®±y oÅ™2ádÂk\¢° TdåHråËöZÏ÷ÜAw^Ý[Âäx¡‘‰~ñ²^ó©BDg>òZmO¢Ë§â±mû¶Ÿƒ:‹)²Ûð€}A®F9&è¨UÙòÿ¥ËZ¬¨o`ŽzÁF-\ØÜÙ4Ï8Ê ŠMŸfWû¯„.3Ó÷¦ÿJ¹dÂòë£ÁU"ðR“L!XäŸØ·3cÏE ·z•iP©"V1™[³TËy†1¶ÝdßgÀ}æâÄc‰*Þƒ\;&7÷ñs¦ø£µc%.&q›œ¥+| &+›<.“ÿØó”0XnÒiº ÉGžàäjñc RBSUM -Ûª«ò ¹½ÜåÎ[/ŠCK^­á½X:×TŠm _•niššŒãMÚYß—fÄBð+†Î‰Ò¦¤ ;M·V-£á¦†/ ™‘ ’ѦPÅy(¾˜†'“Àì¾”EföÜèi©Û§šBúb¨1ÄSÆR†]8æí¹ñhYpe›bŠdì'Œúôá{¤]¨ ¡°H÷=ª.Ác˜lnhò2Òm'>Î'ÔkTÎIáa ŽflÍdAF„w;>çC( › ùrº²ßäÍx÷@„èfLÔš¡.±u#ˆY×̾Çѧ߲1Imq#´pR•w«ã‹Í6nL¶ßT’wæÞ9Xm^©~§Ã?ÂÀ{Z¿ Š~.[4±‘ȈhS,­´Ð¬Wo,ŒÜ§måöT§©ªpÈùi9ó¢ë±|Çi¯ƒ/ÌVªÝŠÕÍÓ+ ¥)'\Wgó§"¶(ì9g÷U´n^…[VìQÂö¼Êõ/~Ý–qùýuXŽ(€˜ä-/¡PõƒÍ¦÷uð#ª>ê½Äkç#ßÃîÖoKúr|µML&ؘdh~h©Ëgj®Á‰V9¾; -±}¿ºå·jòš·®:„’#f»Ïz_¿ß fû–m~* â÷¾±¤õ‰Î†±xÖÎ]¥›é}"M1 ¡%»òA€áù¾z(F º8åà(˜²ÙÖD‹ãû=¯Óc8s다ˆäÈh¥+U.´‘í U·¹G•Ù|ð‘à † -ïö»?â8¹$ê´X@ ,åõ=}gnûÈ—lw‘ÏQ‚F+á{/êdO¬Xb+‚ -ø1å66¨]sÆöÒ^G|i®>*+ã} ð±^ ›dD4¨‚ÎR½?Àøϰ3 -gUhõ§ûî'PWŸ¤Z™<ýv˜¦ñª/e汤Ë{±ðÍ”´|Ñl{¦#‘ÁØ3…q,ŤJP»¡‚**ržlY] bƒ_ù˜´´­¨Iqa9á>†*VÉrù‘¹‘$~œÎ… *À“»vd¨xÝ›ÿpZ{ -Vá7ø´)aÌå•MVuߦ´/Öçǘ4­d1]œ^¼>dÂ}j|ª‰IJì¸è šë%L£É•_è”’)Æ[ûè¦ðTÏ¡“çßÉg²Y6xËÒÒHƒ ‹‡ÌaRÊKØò^lÿã\\×ܬLué×Å(o.YµÁ¬RÉ~µàÞ[ÂÛ\ -wA+¦8+’3áÒVc¶ot\¯—Ä)£xÃ7ùw| ÉÕÜÛüú•w/;„!  -ú«ù9á{óyš¶hJ´uq…é-3O,«Jà è$°ÇP*ÕÆOÂl"׳ºÆþ…ä%-êTÝ9±5„…(2~Ê% ¢ý&8rV9¿æ\—¼¼Ì±'œ[Ä4ë¹-„F\R‹ ÕžŠç$ãØ6b¯øÓ"Á!¢M6Ää[Ô›øÐK>>Œ}Á V«=}“ôãˆqxt÷‘ï»ü¡ ¥6ð˜»Ñ6|\EëÔïˆ" á~¥¥Lù}¶{jÔÆÿ >ŸQºáC;·îZ÷€¦Ø1 ½‹K)Óé5P»#oLFÁI´R_ãƒ4pzH(Œüègá#“¹ HfÁ[_×øñFPs]ÖíòEƒ9å•f/Ó -DE—méz<†®‰€gªT‹Œ Ì#²éaÒ! -׊Ðî¡Ô«é<ðBP¶Y;ŒYÏy&ûU˜a/¦~˜ß¿ÈZN·¿BT *>Ju|fû"¬KYÄE¸–4…hkŽýÃÑ`msaB¢VÌÞó4—*’6ÞI¿ a]EÎ"yOEáFh¨|ß…ÕŽêC)hƒL¡<`©À»vÉNåÊ UåØš fÙ®bBü,§Flä=ææ’÷²Èªc‡Êj7\àÃb@™±œ€.ÃÑ/•õø(yK0™ÓÇnõèžÔ¢^êÕ@ÈE{þ™ùUH?d <²fC?Nïðg~ñøˆwiá°îÔ‚ðAÞhà~l6[d„êÐËnQ±/Áða¨AÙ´5_G¹2c ¶ “d…׊ :ƒÿþ­.)¹ ¦òÃT°€R‡jSý#oÈîHN±%RõÙÂ0 ƒ4 hi¿ å©¶þ˜7Ø=®Ìþ§mvæ„3cÕ˜O[×KŸ(>ØC¼åXË•FÀÚ® ×cû:½ç(nלáŽ7Їôù•û—ÆNÔ¥4?™nóôì•›fThžE1W=ëwmAX²Ôõ ¶,¢ëæèU~ÊY&å ¡c| 7Y+a÷Ѐöóµ¶¼VHæY2rúî¶Ë= ¢6 õ1*s#r‹iG±}̘ÑÇL¡W€@ždϰw…4%D’a¹qe°U-Qé6ó1#µŒ]G²kyµZ^ïðy8»mñŠ´æ˜Á„¨ør„QnŒu*É4¶EF€|ÚãG¯M²ò&àÜd…-ùÍrסÿT!«]p5Äm·±P…þ–(~fÏ®õýè…¶FVÔURæ 8n¦®s¼B•ÿƒ–›£q}âäPC‚ÕGŠçe\˜}w7oñý°9 ×96<+léÇ­¿Š)³Ó:·4ÝÆžWÁ àžq̦àóUYãS.»o‰üøæ&†¨¬©æIºðiÌ;ea8†úÌ.r¨Žšt‡ÐÃRÓ‰À©~?_6<Îe^‰WâtáËK>Cœýê:×ÎܬͶµOL¹[É‘/Ÿïk¼M熢¾ÜµŽî‹XÄ´ú•9›³?Uèhw ëκ,û›~ja …ô>Ý’¦5€ÑNçŸá¿y‚2Õ ¦lVãÓÑÕw_ÅWW·Øäo• T¨:@W÷@Ã^ôƒqª­Š›¼®¹RrÒ:§Þ0êÕ”“Kû6F+”ÈÓR#,ã÷c†*„‰§¹k xm%Ñ+&ð 9N¸Ü<3^F¸×,ñ&ßÞ«rù¨Äéï¿'Sô–0nOÄ}•ØÐüº-Ê{¦ÂÇËÀ®x}Ï6¿ƒ.÷”çðlà‚¤TÜ*™®¨¾Prî0&B_Í)…Ò×y ÉjÂ-œ“VÂxØÍài²¬—Н¡5 IºæªH³iç˜0[pÁi·„ºœèþ}Ž^ðK—q7 QàXbÄUü3Þí7¹BG\¢¥µçOZHM|ŒÌ§½áª÷²Õ÷Å¥ýÎ=°æ5'û³s{3¾î¹¾eR¬§,×~‚ïÎ[Û -½6{U^„ƒ¤nÛÊd(f™ïuã §·ûÛùGÐêYëáÞ?ÅÈë>õz–^d6È)ÏM$çê£;ï¦ÉÛr@?iïéÙkØ”N^uŸã3}ÎC™¥Èæ*ÔÝ£y%Þ‰_Z-agNb†ñ1ˆä”døøûÿøÿDck€¡£³¡£ìÿ̳íÍendstream -endobj -459 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 1028 0 R -/FirstChar 11 -/LastChar 127 -/Widths 1029 0 R -/BaseFont /KENSIM+CMR10 -/FontDescriptor 457 0 R ->> endobj -457 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /KENSIM+CMR10 -/ItalicAngle 0 -/StemV 69 -/XHeight 431 -/FontBBox [-251 -250 1009 969] -/Flags 4 -/CharSet (/ff/fi/fl/ffi/exclam/quotedblright/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/question/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/quotedblleft/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/dieresis) -/FontFile 458 0 R ->> endobj -1029 0 obj -[583 556 556 833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 500 0 0 0 778 278 389 389 500 778 278 333 278 500 500 500 500 500 500 500 500 500 500 500 278 278 0 778 0 472 0 750 708 722 764 681 653 785 750 361 514 778 625 917 750 778 681 0 736 556 722 750 750 1028 750 750 0 0 500 0 0 0 0 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 0 0 0 0 500 ] -endobj -1028 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 11/ff/fi/fl/ffi 15/.notdef 33/exclam/quotedblright 35/.notdef 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon 60/.notdef 61/equal 62/.notdef 63/question 64/.notdef 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P 81/.notdef 82/R/S/T/U/V/W/X/Y 90/.notdef 92/quotedblleft 93/.notdef 97/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 123/.notdef 127/dieresis 128/.notdef] ->> endobj -455 0 obj << -/Length1 1217 -/Length2 5647 -/Length3 532 -/Length 6420 -/Filter /FlateDecode ->> -stream -xÚí–eX”ë×ö¥$E¤”tèîIAZR:†™†jh¤K:¥QéIAPºAJºCéŸqïç¿õÙÏÇ÷ýôï=_îßZë:¯s]׺cX´õxäÁkˆ2îÊ#À+ PÔÔðò°°("!@W(þè -‘HHäÝl‚üQI!qI~€"ÂÉ µµs°+rü*È;BPкÚAÑ  ‡A!®ž¼y  ûk… @âAºCÀ¼0ä -°†ØBá|¿ ©Âm±¿Ã`7§ÿ¤Ü!H´);Ú$mŒ€Ã<`ˆ Ÿ½íäÿ†©‹+»Á`Z@Ç_ò¿é¥ŽP˜ç Ü\!H€& AÂÿ]jùÛ›& usüwVÕƒ‚äá¶0€ÿïÔEŠ‚€µ¡® ;€ æù+ƒÿm}nYàÓT~¬¨¬Ìõ÷}þ•ÓBá®úžNÿ¨þ*þ‹~3útPÀ”Ÿ—Ÿ_]ˆþýçÍü_{)ÁA0ŽQ‰z 'M"o† Ú0/áŠ^@Ÿ‰/À$øuÂü>' ‡Al\¥þŽ -üwôïëû',Š£/þðyAˆß ù‡Eиzü΋ ¥]í?*|67äï€0€ÏÝþ?,‚fˆ;þ;‚6ùÖDÐ>@âw(z•ü?$†ÖTûMèõÿ8Ú€îoðéýCè™åþ&ts H€ÝøD·ùÑ[Úýh‡°?-åøÐRð?-…øÑþ@´2òüu> º9×?ÝÛ_ø¿‡TAòæð¢ïEB\ &Âïû?ê@nHô¸þõý£'ý?lE -"˜žD€¤‚ì“ë‚ßù)å ápb(ØÖÇjU·µ~y…+ìUwæüZetYœFF¼Ž³þÐãšÆ%¼ÙGg@ùÛ çØ”‰›uw«õ4¯F£Ã4MÏ5'ƳÀ»MuãÇ»"OG¿ö½K0ÎïÊüÞ½“£ÍþXwŽáÖS÷šéA¢bFÊi0ƒ—U¬B º$)ÎïB…Cæ=Hâ°ç‡ýìCð¸fÍn¤—yxÙñ7fÇ[£r¦”¢æðÁ‰)»IG˜0"R…Køad^tzãûëËÒ >Ùa¡:ÖØøø£Œx ¨RSÜDïµOM¦oÀÜøË¾l AÞªõ7™.sTZƹ3Még¼Ü‡ÏæáµZ»ï^`O Õúlæe8°ëL©>uÁw<‘š³i:Oª YHRðµMãŤ¨’"˜æùϪ<æSqÌ"îe”e¤R„\Ò¸æ¶Ù‹Û©éÇç,Â\²~’#d2&8óN{+ñ¸†ÐOävµi˜;d©ô±Ý®ÔoÓV"ëE…O£&ÇO|_㟩À‘Äw*+_|èã BLåSb¼(sŒœ´;?Ñh)4‰LV‰ &êÛžÝÍy}÷%Êò8Ö.!£ßóð¼Ìpâ,½±kÈbÏ<Ű1É7=i`ÈebÒòÌä²ÉÆEîÁûe°1ð9kÄÅ“Õ]-sU³CÌq?2$f’w?w¾’ª,´Ëo蛺ó*9p"ÝœˆÝ[&ç7a˜Ô$’ÔÂNÚ? -wÏbemGÉèˆ|ž¨ÅêÃ3B×- ‚ïCÞˆoW`ćkR¤àL¡÷âßKà­ºWq§í¤ùàxÙ½S(] n»©¥Hlß$æËÌ%¤o Ij°òÛm†&(m¿µéŒÆÚó}*3ÛKÅÊyšÿж|¨M”¿Gñò½Æ@J¸ 謣ޢ܈¿BU™ø—gèvãÞ”×Ú]4o¹¿T‘ 9vE…ÊÊÚ«û»G…m€0ÓæÕâð¿†?e7´i‡¿5¥Çõôž¤Ór5L„öºi’¶9è¥hÇ;Å}ó¼•)˜›¦Ay$òµ%SáV™ºØ”'º{«n‹Iò¬Ë@x# gDëP+X:<ôäQ¸€ß•¡™KæÈ©æŒd¬0¼¢…tµh2bZ¥U˜^3v¯,)Rlú¹ZÅyRvÔpé™Â¾‚¼8•ý‹X{ec0ÒRæ…È›³öp‹ Â.UVUEàaù0ÁR‹Dγ=ãVŸYç¹réôÆ’0Jp–<Ø{bgT–"/p 1õþBIžj¼Î_ÁJ/“qwˆ&¤uáD…ÙîWîÚ›¬÷ÉÎÁ“3ß>tÜÞvM£¥·¬ª'íÜI¿_ä®/ÔOÆö6Á;Ò6!äB"Ĥ€m¡‹`vû¯³»p!?dÐóiBÊ«ûàÊ SU»ãŸa( {óæjy„D¦¨Ûƒ§RÎdÑœx­¬Ày[þ“xýÜȱyR;uY±5½ 0Ñ~;ÏR¼2uóPÕ2¢žW£âçe®„p -6Þùxàu3߸blIåÊ´Ôãyàntßm™fY³EPÁ€óˆpûyÀ­Yb«4Úu• 0¢C ŠM¾¢Ê}¤d- ¬ôÊìþáZBß~ÖëÙ)»‹ÏM!É`ÜÑÞA¢w,«X¾Ö*#Y±¥,HJà -ºyS„zQùŠ -IåQŒ€&w>Î|¨¦‡euz¢°HžåËžäI?;RÎ9TýŽ×KïìRa*`3•©›b£ uaÄSo‘"LÁêb°y­‚I³j!EQ$¸ðÖ÷²¦Å’½ÅóÅbÙÏ#á…îvÄW#ÿ˜¹sɤ>2ŽZ¶Ä)/Ñ©çsÈ¡l? ÄÃFe]Á|±½ú% „Ãí=í#2d¹·U‡°ÉªH´tZ#Rnu+ËréÔÏå-ÍÂÈRTzúËœv -ôšZÈ.嵀Ѡ®§Ò.«€}½F¡öÒß¶‚gÖxŒ‰Ï&cÙ1èóv;Ì;H¤àVç¡é0J€K&+íAádx樀-$Ín¾÷~èqqŽ]X´E^òrýw¼\…ç–Ÿ«t‰Ùƨ5w5FŽZN—†.»˜]£ƒu©ôϼ9 ±:¸G%Þ™ãØ'ͼºÀüéå;½ï(R³ˆ–ìÝð|>$¥;¥Âuµ\·¡n×`“xOÚ›w Ù!ù«•­Â"aFiËð!Ö·e”“ëE¿6¤ÞwB[“ºNØ&£€Dù¯Á.¡¶TiãFƒI¢ë=áÏBa<, ý ø -Y&”ÔÅÆ¼÷¾‘K̈05ðd#¿g. Äö¨ŽözÐÃHO9ôï~™s°kÕq,slÙ1ÙÜ®Ñt¶ÿF$ÝA9ìMKÆ:Þ£Oà:ÚÞÆË«Ÿ_" öýœôJæ‚ÛÐ}³ú°©ÿ|ÚQd4–¬/§S§ƒlû#+*T,³d©¥”š+k9CÙË[${•ŽeævMGˆy_¨Åà¼9c¯.Mëƒ<+“Ì;Ò¤&\G”‹±^7úPHžofáM#Ò¶ùOçr3l?œ,b$u0Ũ«ÐnTÄ×H¬õQéñNÒ!³£Kûã&£V„Ô™Jµ^ZÞËœÎ3s®&ç ÃXLÒ²úiw$ jšë¿½»Ž(8ȹ=欖s3)ªÞÛ3ïÇ7ü‘ÁåHµ#&’õèL:±kèŽî…së)‘æ»>ƒˆ¾gºQíâáßC·ÏòYk`=o®ß¸eGŸ‹ÜÑ…$ÅMÝ¢^ú`™.Ų&Œß‘ˆ†°Á¼Êun¹Žàð=f^Û`Ämðíý¨LWøBPqd\Y= B(‘"Áêâµ'¼”ËkìªêT?4i¾ëø®”À¥êThO÷\D¯ý³×Ûèvå4 b+à -)YC§|ìQýí5n¯<¶§w®»”‚JE‘V]á•ø¤pNÚ¥t/r–}—‡-¶Ï_'Ök=ß7½1µúÁҸ˕ö?©°É {aTÅ¢s&ùÉ0ÙÁd¦`–èH¹äPSc¦£T~s±é ¿óé:ÉËS}]°ï,fìÐ{iӞ͔(37‚YÊ6¬¡Dùƒ×ëô¡«>?œhŸá…= úZ‡#çgwÿäGä¡’°Cò—ÄkMsíJSÝ£–uڼū.hh÷åmo? %&»È[ê©©ki¼ìY±ÓŸ9Ø:ùØvT˜DóæÑÞ)Á 9×öJ(B/8ßÑÓK’Á8r£|ÕØtj,øS¬<ñDé°[v,ÒÇ?ë"UӤ熹{³ÑEZ„ÆÿÕÇà0T½$µÆñÄñ•<ë¶¥Ós[ŠùQUЄó%Åña‡3篟Ìt³ÛªÅRX4ØÏÞЭt#âm`žÖ!qmW8/©X+¼ý¸¯ôÏ͑꽴w\ºÞh8]ð¸ðã¬v‘iqUð?Ú4ìŒ{íGóþ +OÝad§0µÂhèHUoQã¢m³Í áh'Y%jÀ•è}ã±%hÄó#·¥r«ìaù[÷~éyb"Œ²4vÞîŒ:2¹gÝ À¦h ÑÜüŸ9SË“!{‰66ä£ò¼ cYV”ý[ a„µA•ícû¯Px^·…MuQ/§Šnd@”²pëGR« -Ç˲lq¢UŸ­ÖbíùŒš¨ð{ܲ'?L²ü4¹‹¼,ãËUœ_špîï­ÜðN›˜GýÈæg›³í($ “ =´‚öÛ)-¾¼jk8Q嘋÷Ž¡¬ý™Ëš+XQÁçáš÷iòvʃ´gFµˆ,Ž]šë§çC® -\š? U]Y³åJk$Mßwqƒ„ÓEE4å‡cü{ÕDø ïΫnã_cŒ[OªuŽOm3Ï%ñP[ûcªWz’Ï×…ÈJËï$ߨ`/=ÃWS™=)º›ãoB¿÷Рư áΖ#|¢ÃQ.|ÿðâñC’Ñ•¡2×õ÷ÚÔxÒ÷=æÓKÆg¶Ô²™Yö¹ŠD¦ÙøÖÕ©^%•v½þ¼0Õ¶²þùø¾ø“.ÿuû#õÁ‚(»ÖQk¿œ©4ê¢Éü ޤ-§x0yÝd¹“„ ¿ Â?V€ÂÏZz…j;˜áM˜0ö@Zæ‰kõ‡F^È޵Ƣs-)jjÆyŒã¤$*ÍEPk3óh6ˆ}Ávì©·ƒOD HÈakƒŒÏâ¶Öºã-òÖÒ8$ï9ÿHCc™™UÖè”c±+Æ(†öxÃ<­ósš—BàÐ÷ ŠôgS‡¾ð'u_aÝbOرé24*‚ÙŽ«K›u˜›/e¦{mŽLd»ýÊvy3ãqíÛ8ÛÅÀô¼µj¨Üx´ôhEVt‰Úþ€²v+÷½§û²åQ€—ã¤*Þ¾÷Šê±­TÕ¦f+&Û)çß½q›…ç‰Ûz1r1ª—™kš Ô†ú¼=@+_íÓ,y9v‰ñ+%a'¶ÄáÙ ¼Êkò§XÕ ?*®tëÅ&»>#v…áP4ü´üîEƒa% ¨]ÓUIÈÇñšÊ£&⃔ó[V×¾p¦.Ë©ÕÙ“,4ø½u'¤Yv -‡(•¦åe` ì&'|¢0M2Jỽëñ0F(ŸÄ×ñõ€Ùü—0ãó=cRKæÃ}YY@~"!vG²BÀN0C9I:Åu„ÚãºB9kº³±ÛZÊz=—]ޏä"Øfµ—rv»i†>öR üÀA%l6EÎfwOÂ7Öðcøiß,ò!8Êgohä[MŽ* êÇÒïÅ*-Û,j,xl~UÛW׋ ÈÙí=ү柾Ó=]â캥]IODPýœÖ4­.#™?°nؤp%š²]»_„ĉ3¤keå€äÛ`dèõ¢@CQbñ¤‹º˜tŽqi -Ûx­™`ó£d?ÑàŠùós=¶öZï NäÍ}\r‡™ê»q!íÄõ^ì¥I}†éåT‚•Ý]ÂUN|ç¡Tmdk$iŸåâs¢[Ýû-¡­ éÅYÆÜÇß©ÀÑÐ[äÊ|Ðþw ÞÈzRÖ':Å«$«.¬‹œÒÚN_Ì{öd7›6˜JÖÒ脽ù"ñ.,G·“n,¯¿ô”àL±¯g¡4KL™íè6ƒí8ݵZ -̼cèT/hqÈs„ýœ^;EfJ‰}Oßt"ôê§¾Ž3ãIà{{?Îø lI11£|ß #¿F¯¨÷¶¡)™tŸ ÷‡=#Øœñü­¯5O¦\æe×8ˆj¨(Õ—Í'mR¿Oszåó⺲×Î?dmHaúÒd‹w˜Ã¶mv©Øs‚­™ÊÖ¸\×¥ó™‹=Òcë#ÅdÄÀ¨©«¶üÖiµ ;£W.n“¶´núrJVÝLØF+¹Œ ë«|…ï%~£tþâþô@§~ ›ìÂã vé/F“ö>fa1K”¨ -¹´ù^£’>iÓÀCVWšBRq'Œø§ŽØ{'Ó)E/ -™xÒ¥=/Ô*aOI~dn´eá_˜r:¯ùØk dÛyi%žÐà°zrœcu bJ+/Š£+(&8‡Vf?AP ŸFeÕ¯W—wG‹B8éîOTÍŒí=é} -Æ¥k#•,T´ñ±ÒÑ»ÞÂ?[+I ¶’ˆ—yŽWEÎ{Ÿ¾Õ•p­úm ‚±²õ„±ˆÛÍúú9‹Áô£_Þ?1Ô¼­Zå?ÜÜÖqñsÉBUKë¹Grþ]¯½G—ë}óæ¦fàwJÓጧûZÇ BGÓù/Al)–µlÏî†iLUC¦ähÇn>Â`¡£Poí×P}²E©9ʵ%Ìõ\¾2g“áv.÷”u¤DÄÏp5ÿ¹6†nÕÙŒíùNO¢ïH*p›§¤~|ø$?«»èžàâ{Mú‰Úž’×þŠG =àw'OÖŠõ–¨w¿veù3…ÚN´Œ%c -&ˆ¥ULH„Œ;µ»Ý–^_¢IXfbº´†…«¾ —Å"ã2F_ô2Þ£Æò~̾ ÷ú.åI¼,ºæ]U<Ô”‘¹,iGf”º“ç+‡˜Ñ«ÞÉ×Wiƒ¢Ì+ad7‘üÿ‡ÁÿøBƒ‘®G Òà¿å è¶endstream -endobj -456 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 1030 0 R -/FirstChar 40 -/LastChar 117 -/Widths 1031 0 R -/BaseFont /MFDCFF+CMR12 -/FontDescriptor 454 0 R ->> endobj -454 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /MFDCFF+CMR12 -/ItalicAngle 0 -/StemV 65 -/XHeight 431 -/FontBBox [-34 -251 988 750] -/Flags 4 -/CharSet (/parenleft/parenright/period/zero/one/two/three/four/six/seven/eight/colon/A/J/L/R/S/a/c/d/e/h/l/m/n/o/p/r/s/t/u) -/FontFile 455 0 R ->> endobj -1031 0 obj -[381 381 0 0 0 0 272 0 490 490 490 490 490 0 490 490 490 0 272 0 0 0 0 0 0 734 0 0 0 0 0 0 0 0 503 0 612 0 0 0 0 0 721 544 0 0 0 0 0 0 0 0 0 0 0 0 0 490 0 435 544 435 0 0 544 0 0 0 272 816 544 490 544 0 381 386 381 544 ] -endobj -1030 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 40/parenleft/parenright 42/.notdef 46/period 47/.notdef 48/zero/one/two/three/four 53/.notdef 54/six/seven/eight 57/.notdef 58/colon 59/.notdef 65/A 66/.notdef 74/J 75/.notdef 76/L 77/.notdef 82/R/S 84/.notdef 97/a 98/.notdef 99/c/d/e 102/.notdef 104/h 105/.notdef 108/l/m/n/o/p 113/.notdef 114/r/s/t/u 118/.notdef] ->> endobj -452 0 obj << -/Length1 941 -/Length2 3221 -/Length3 532 -/Length 3862 -/Filter /FlateDecode ->> -stream -xÚí’y<Ô{ÛÇ‘­5Ê:-?E¶c "ëk–Š13Æ c¦ c'¢c©,([ö“ì-Æ¡’¥lQ(Šd ‰É–{ªçœÓsî?Ÿç¯ûuÿ¾ÿüÞ×u}?ßÏëº.9”Š–ä3!)*0UØQÀÈʦÀTÕ@rrFdš‚'O¢)¸£ €T/@] €iÕ€U×ÉF$ïåMŒ¿é~82ƒ&VhŠ7ΣA;£ÐT°ý~#°ÅâÈçqXU `ñ -àóÂAÐï†Ìˆž$@çgKõÿ3uGä˜8&ŽE,‰H Xœ'Š$qÞÂqœü˜ú§¸ •@@¢ý¾ËoÒ¿¥Ñ~xí -H~þT -Ž X‘°82ñŸ¥§q?½Yá°xªß?³f41 zp€ÚÏ>ЄâðŒ7à‰&â~ÄqDì?MpúöÃÔÚÜð´£¥òÏyþÈ¡Ðx"Åžæÿ—ê÷â û›9Ý!ãƒW5U55§sþü;û·Œ‰Oä,„–6€&“Ñ4g38¤„À<‹ pAÃPU"‰Â¹pz -x’È ïãÔQ &ßC? @OýEpMjÿq¦EÿMŠù‹`oPÜ/¨@ñ¿ çªï/ „_#å÷7rvJú9&È¿ 6¥ü‚eê/È‘ºðÿ} ††¤  @E]K @hj:šˆÐÿU‡¡’É8"åÇ®s¦ú'{â9;€Ãá0 ¡F7Æ'£æbq˜qÞó;|J܆^µ)È»zï E¦r -Ú-”FwZ+aì™ä›<Äôô~ª)„+dUiûéxÀàñ;w‡FG”’Ó[cDÊ]'†¯œÚ·uNNxNeÞ|º¾ZÍ:£½ÔUh”[™]ø±Üº¡âÐÜrÞÛPü¬­Ø©–;%Iµ|fTbCÒã -s3z±li‡~¿1)éH˜ö5×E¤jZfû©µÙn²ãóCcúå¯2ÅO –}ƒ×^#÷ƒÅ9‡®upƒ@5 W ëÎ!ù‡» “æ|ŽAßİ^3+ËœßÜ“Tè­[ŠA;±n0ZÌõx•¹–´ðÁ?Ü…Ï¿5nEËÎÂ%ÈF-{â‚ñ¹,UÝY´´êÄmñ,úaË•ÑÙ/N w¦CßÞ\Ë<¸å°Í¥_Î$cgô§ž^‘’ª¥mÛ÷7óu²DŸ8§#&•¬xM™“»=a™ (yÿÈ1)š†–x"§R³¾§kgaÑé˜(ëW§‘© ïüp8ñ!¥¦²9"u¬êk¨úÉêù¡‹ÂJ´‹ÝÙJóÀÕ;½×=âó3.±#e¬’‹µ°#¸vËô!.°6s&èßBS¯ÔÅÍÆ«B¡¼ïûƒëRH¨°€ë¤Øhɬ §ï–i‘‡Š_S{/ðî´¡,Z"vC>Š7Ürâe–øE•«7ê°“2”÷ë‹êv7jÝÚõ­‹+y3ï“*sÛ1ö¨ÍOìœ*¿Øãº_ª!|N1v}ÁÓ3¦íÒé>´ÉZ³ÔTy¡òPÁèÂ/%ë¼uÝØt‹2×v·‚™3Ø3am™ÏåÜQ§Ü‘;B®;Òˆ•É'“Vâ(<ê±H©´ ÒÝØ5lv¢zX¤C[kÍÎmˆ©˜åáuf½ø¶_m‘‡+á«›Ë: ‹”=‘VouqŽºBlóê\^· ùôGèFÁeö1 õkPô¼èˆÄ@‰7Vkú\T"(á7õ±‰ý¹ùÍáõYçã‘ü ô•˜FÜ*¬L/¸œò¦ži—.m9\H?'½Ö¾l¼!äâ¤4ìR±ÜòG+ÕF÷h4{F‹C¨QÁõ­ÚÄ¥ÓÓ(½+5.¬çn§Oõíði°~ ÃcõLÜŒà$Õ¹jöª~vHÌ›ý 6Ó(fPQïœq_èvÿà‘ö¡n®¥¦÷… v ˆ²‘ÇuX¬‰KâTûp¡êѵ}$­Š“X°™›üC©§gÎÿ~]2Æ‚;ø:‰=‰±²yU•bgnìÒvÇ_ /}äãÕ³KÇè&+üWéßp÷ÖD铨ɠ ^J©¾7£¬àñ -©'¡|j°Î~ÏV¬±Üz¹öZ…–™Xi—V¸Þ6p¢ÏÛ"Z-—bU%úU›ÝQî|EÈf¨ÒU -ìe„®}ùßÁSÉWTß-íÞœxDÈ×[(š˜1&©Í‹E,Xp ¥›Zl€þp’Š”ÈAˆ Ô«Yù‡cMÝ -;¸á:àÁ„½¼÷vKUpá^ñgd »Ôù¶T^UÕÇZy?£ç‰\,—ÇûõK•öÍMµ1»ã$··ºÎzg«®G(¹¹b>&Ê2(¢Ð©yÞŸ¾År9Ð7F1Dº[î§eÅ{šv$ŒSî©w£‡•õŒ‰éÔW“áÄÝjz4Éyåkn_¥Ùò1‡hlœåîÕ• Ãáòþ¼I£ñ\î!z¯›E 4 ;÷­Åÿaw˜Î4¸u<âr­±uÞÞk÷(å¦×ŽŒÇo”iKöŒú»!i¾f|Òn³.%Ù7–W<)¸ð‰%Öu!=»&ZdWê; ù¬“!Yz‰c,VôÖ¨Ú.§·Ä擤nÝþURN’&—¤c”r:ÿT²™=(qiÇÇý:S^F²ÕQ_ÞE§¸ƒ&êf-jFÚ…\·m%’§±NÈÛB¹·oÆ—[ç ùd¤nŒ¥E~¨.¸IY`?|S%Ûcd\:ÌkÔYTºÅäxUâ•7aµÊÒ‰4~kF¡D‹\(åÁ§©Øî×ë»L©.šö™+jéLãð•%•¹º¿ÕØŒSYèù‘ÒË ‰—“ö2f‘UÛné§HÌsC°õà…Í®ªÀ!Ȩ]&9 šÈž.ÔC$lJhéÛ=¤@]ò¸Ø0ÉáÆþ‡Eƒk‰~(-ˆí„üž1žÓŽç½¦¦+hÁ^”öôo¡=vU„{9wøRö)8˜]•çÓßô0.«HɵQlúü>_p}ɺ­MmšÁÔÞQVû#ƒšôÌWŒMÒÖϰKgêÌÕÃSž|¨×ŽaÒBõzÝf«1ÆMGäVÝzhY™´ÖÑJÇŒ<2B)£{#'·ûôžá¯\>Ä^÷Äã/7lŠ|O=Óà9™'ù¹NjYœX¨â!l‡ê×j!¶š :Äp•6•“'`ï`z”£š"åãaÊ^g+–˜7¸NY€˜”ˆèFéµEæ¥Õîà•¶“ú½ó¡ÄN{sóYáŸäO –î¨^å±"òS/+by/±›+WVCT=³-Æw¦­Âšú†%<ôL§e÷DÉßä?h”Z¦5i»K2ûÜŒ¥ÿ蓽¾sÚäœoË‚ó“yù™pV¼l¸Q…¯ê -83'[‚‰Ɇññˆs–ž–’¼Ö·”j3íÌc›T¹ö½l®3Üx¦Ë¯Ú$£ä¸½{ۓ¬Zjºd{Y,Òd½vìѬmèHL%ê±I¯FšÚÿñýWà?BCÀ¡É’šì ú·†Ï‘endstream -endobj -453 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 1032 0 R -/FirstChar 70 -/LastChar 119 -/Widths 1033 0 R -/BaseFont /OJBWVL+CMR17 -/FontDescriptor 451 0 R ->> endobj -451 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -195 -/FontName /OJBWVL+CMR17 -/ItalicAngle 0 -/StemV 53 -/XHeight 430 -/FontBBox [-33 -250 945 749] -/Flags 4 -/CharSet (/F/G/T/a/c/e/i/k/l/m/o/r/t/u/w) -/FontFile 452 0 R ->> endobj -1033 0 obj -[602 726 0 0 0 0 0 0 0 0 0 0 0 0 668 0 0 0 0 0 0 0 0 0 0 0 0 459 0 406 0 406 0 0 0 250 0 485 250 772 0 459 0 0 354 0 354 511 0 668 ] -endobj -1032 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 70/F/G 72/.notdef 84/T 85/.notdef 97/a 98/.notdef 99/c 100/.notdef 101/e 102/.notdef 105/i 106/.notdef 107/k/l/m 110/.notdef 111/o 112/.notdef 114/r 115/.notdef 116/t/u 118/.notdef 119/w 120/.notdef] ->> endobj -460 0 obj << -/Type /Pages -/Count 6 -/Parent 1034 0 R -/Kids [446 0 R 462 0 R 498 0 R 528 0 R 558 0 R 589 0 R] ->> endobj -606 0 obj << -/Type /Pages -/Count 6 -/Parent 1034 0 R -/Kids [600 0 R 609 0 R 616 0 R 627 0 R 635 0 R 644 0 R] ->> endobj -651 0 obj << -/Type /Pages -/Count 6 -/Parent 1034 0 R -/Kids [648 0 R 653 0 R 658 0 R 662 0 R 667 0 R 671 0 R] ->> endobj -678 0 obj << -/Type /Pages -/Count 6 -/Parent 1034 0 R -/Kids [675 0 R 680 0 R 684 0 R 688 0 R 692 0 R 696 0 R] ->> endobj -703 0 obj << -/Type /Pages -/Count 6 -/Parent 1034 0 R -/Kids [700 0 R 705 0 R 709 0 R 713 0 R 718 0 R 722 0 R] ->> endobj -731 0 obj << -/Type /Pages -/Count 6 -/Parent 1034 0 R -/Kids [727 0 R 733 0 R 737 0 R 741 0 R 745 0 R 749 0 R] ->> endobj -756 0 obj << -/Type /Pages -/Count 6 -/Parent 1035 0 R -/Kids [753 0 R 758 0 R 762 0 R 766 0 R 771 0 R 775 0 R] ->> endobj -785 0 obj << -/Type /Pages -/Count 6 -/Parent 1035 0 R -/Kids [781 0 R 787 0 R 791 0 R 795 0 R 799 0 R 804 0 R] ->> endobj -811 0 obj << -/Type /Pages -/Count 6 -/Parent 1035 0 R -/Kids [808 0 R 813 0 R 817 0 R 821 0 R 825 0 R 830 0 R] ->> endobj -837 0 obj << -/Type /Pages -/Count 6 -/Parent 1035 0 R -/Kids [834 0 R 839 0 R 843 0 R 847 0 R 851 0 R 855 0 R] ->> endobj -862 0 obj << -/Type /Pages -/Count 6 -/Parent 1035 0 R -/Kids [859 0 R 864 0 R 871 0 R 879 0 R 885 0 R 889 0 R] ->> endobj -897 0 obj << -/Type /Pages -/Count 6 -/Parent 1035 0 R -/Kids [894 0 R 899 0 R 905 0 R 910 0 R 914 0 R 918 0 R] ->> endobj -925 0 obj << -/Type /Pages -/Count 6 -/Parent 1036 0 R -/Kids [922 0 R 927 0 R 931 0 R 935 0 R 939 0 R 943 0 R] ->> endobj -950 0 obj << -/Type /Pages -/Count 6 -/Parent 1036 0 R -/Kids [947 0 R 952 0 R 956 0 R 960 0 R 966 0 R 973 0 R] ->> endobj -981 0 obj << -/Type /Pages -/Count 6 -/Parent 1036 0 R -/Kids [978 0 R 983 0 R 987 0 R 991 0 R 995 0 R 999 0 R] ->> endobj -1007 0 obj << -/Type /Pages -/Count 2 -/Parent 1036 0 R -/Kids [1003 0 R 1009 0 R] ->> endobj -1034 0 obj << -/Type /Pages -/Count 36 -/Parent 1037 0 R -/Kids [460 0 R 606 0 R 651 0 R 678 0 R 703 0 R 731 0 R] ->> endobj -1035 0 obj << -/Type /Pages -/Count 36 -/Parent 1037 0 R -/Kids [756 0 R 785 0 R 811 0 R 837 0 R 862 0 R 897 0 R] ->> endobj -1036 0 obj << -/Type /Pages -/Count 20 -/Parent 1037 0 R -/Kids [925 0 R 950 0 R 981 0 R 1007 0 R] ->> endobj -1037 0 obj << -/Type /Pages -/Count 92 -/Kids [1034 0 R 1035 0 R 1036 0 R] ->> endobj -1038 0 obj << -/Type /Outlines -/First 7 0 R -/Last 443 0 R -/Count 15 ->> endobj -443 0 obj << -/Title 444 0 R -/A 441 0 R -/Parent 1038 0 R -/Prev 439 0 R ->> endobj -439 0 obj << -/Title 440 0 R -/A 437 0 R -/Parent 1038 0 R -/Prev 391 0 R -/Next 443 0 R ->> endobj -435 0 obj << -/Title 436 0 R -/A 433 0 R -/Parent 415 0 R -/Prev 431 0 R ->> endobj -431 0 obj << -/Title 432 0 R -/A 429 0 R -/Parent 415 0 R -/Prev 427 0 R -/Next 435 0 R ->> endobj -427 0 obj << -/Title 428 0 R -/A 425 0 R -/Parent 415 0 R -/Prev 423 0 R -/Next 431 0 R ->> endobj -423 0 obj << -/Title 424 0 R -/A 421 0 R -/Parent 415 0 R -/Prev 419 0 R -/Next 427 0 R ->> endobj -419 0 obj << -/Title 420 0 R -/A 417 0 R -/Parent 415 0 R -/Next 423 0 R ->> endobj -415 0 obj << -/Title 416 0 R -/A 413 0 R -/Parent 391 0 R -/Prev 395 0 R -/First 419 0 R -/Last 435 0 R -/Count -5 ->> endobj -411 0 obj << -/Title 412 0 R -/A 409 0 R -/Parent 395 0 R -/Prev 407 0 R ->> endobj -407 0 obj << -/Title 408 0 R -/A 405 0 R -/Parent 395 0 R -/Prev 403 0 R -/Next 411 0 R ->> endobj -403 0 obj << -/Title 404 0 R -/A 401 0 R -/Parent 395 0 R -/Prev 399 0 R -/Next 407 0 R ->> endobj -399 0 obj << -/Title 400 0 R -/A 397 0 R -/Parent 395 0 R -/Next 403 0 R ->> endobj -395 0 obj << -/Title 396 0 R -/A 393 0 R -/Parent 391 0 R -/Next 415 0 R -/First 399 0 R -/Last 411 0 R -/Count -4 ->> endobj -391 0 obj << -/Title 392 0 R -/A 389 0 R -/Parent 1038 0 R -/Prev 371 0 R -/Next 439 0 R -/First 395 0 R -/Last 415 0 R -/Count -2 ->> endobj -387 0 obj << -/Title 388 0 R -/A 385 0 R -/Parent 371 0 R -/Prev 383 0 R ->> endobj -383 0 obj << -/Title 384 0 R -/A 381 0 R -/Parent 371 0 R -/Prev 379 0 R -/Next 387 0 R ->> endobj -379 0 obj << -/Title 380 0 R -/A 377 0 R -/Parent 371 0 R -/Prev 375 0 R -/Next 383 0 R ->> endobj -375 0 obj << -/Title 376 0 R -/A 373 0 R -/Parent 371 0 R -/Next 379 0 R ->> endobj -371 0 obj << -/Title 372 0 R -/A 369 0 R -/Parent 1038 0 R -/Prev 311 0 R -/Next 391 0 R -/First 375 0 R -/Last 387 0 R -/Count -4 ->> endobj -367 0 obj << -/Title 368 0 R -/A 365 0 R -/Parent 311 0 R -/Prev 363 0 R ->> endobj -363 0 obj << -/Title 364 0 R -/A 361 0 R -/Parent 311 0 R -/Prev 359 0 R -/Next 367 0 R ->> endobj -359 0 obj << -/Title 360 0 R -/A 357 0 R -/Parent 311 0 R -/Prev 351 0 R -/Next 363 0 R ->> endobj -355 0 obj << -/Title 356 0 R -/A 353 0 R -/Parent 351 0 R ->> endobj -351 0 obj << -/Title 352 0 R -/A 349 0 R -/Parent 311 0 R -/Prev 339 0 R -/Next 359 0 R -/First 355 0 R -/Last 355 0 R -/Count -1 ->> endobj -347 0 obj << -/Title 348 0 R -/A 345 0 R -/Parent 339 0 R -/Prev 343 0 R ->> endobj -343 0 obj << -/Title 344 0 R -/A 341 0 R -/Parent 339 0 R -/Next 347 0 R ->> endobj -339 0 obj << -/Title 340 0 R -/A 337 0 R -/Parent 311 0 R -/Prev 327 0 R -/Next 351 0 R -/First 343 0 R -/Last 347 0 R -/Count -2 ->> endobj -335 0 obj << -/Title 336 0 R -/A 333 0 R -/Parent 327 0 R -/Prev 331 0 R ->> endobj -331 0 obj << -/Title 332 0 R -/A 329 0 R -/Parent 327 0 R -/Next 335 0 R ->> endobj -327 0 obj << -/Title 328 0 R -/A 325 0 R -/Parent 311 0 R -/Prev 323 0 R -/Next 339 0 R -/First 331 0 R -/Last 335 0 R -/Count -2 ->> endobj -323 0 obj << -/Title 324 0 R -/A 321 0 R -/Parent 311 0 R -/Prev 319 0 R -/Next 327 0 R ->> endobj -319 0 obj << -/Title 320 0 R -/A 317 0 R -/Parent 311 0 R -/Prev 315 0 R -/Next 323 0 R ->> endobj -315 0 obj << -/Title 316 0 R -/A 313 0 R -/Parent 311 0 R -/Next 319 0 R ->> endobj -311 0 obj << -/Title 312 0 R -/A 309 0 R -/Parent 1038 0 R -/Prev 271 0 R -/Next 371 0 R -/First 315 0 R -/Last 367 0 R -/Count -9 ->> endobj -307 0 obj << -/Title 308 0 R -/A 305 0 R -/Parent 271 0 R -/Prev 303 0 R ->> endobj -303 0 obj << -/Title 304 0 R -/A 301 0 R -/Parent 271 0 R -/Prev 299 0 R -/Next 307 0 R ->> endobj -299 0 obj << -/Title 300 0 R -/A 297 0 R -/Parent 271 0 R -/Prev 295 0 R -/Next 303 0 R ->> endobj -295 0 obj << -/Title 296 0 R -/A 293 0 R -/Parent 271 0 R -/Prev 291 0 R -/Next 299 0 R ->> endobj -291 0 obj << -/Title 292 0 R -/A 289 0 R -/Parent 271 0 R -/Prev 287 0 R -/Next 295 0 R ->> endobj -287 0 obj << -/Title 288 0 R -/A 285 0 R -/Parent 271 0 R -/Prev 283 0 R -/Next 291 0 R ->> endobj -283 0 obj << -/Title 284 0 R -/A 281 0 R -/Parent 271 0 R -/Prev 279 0 R -/Next 287 0 R ->> endobj -279 0 obj << -/Title 280 0 R -/A 277 0 R -/Parent 271 0 R -/Prev 275 0 R -/Next 283 0 R ->> endobj -275 0 obj << -/Title 276 0 R -/A 273 0 R -/Parent 271 0 R -/Next 279 0 R ->> endobj -271 0 obj << -/Title 272 0 R -/A 269 0 R -/Parent 1038 0 R -/Prev 239 0 R -/Next 311 0 R -/First 275 0 R -/Last 307 0 R -/Count -9 ->> endobj -267 0 obj << -/Title 268 0 R -/A 265 0 R -/Parent 239 0 R -/Prev 263 0 R ->> endobj -263 0 obj << -/Title 264 0 R -/A 261 0 R -/Parent 239 0 R -/Prev 259 0 R -/Next 267 0 R ->> endobj -259 0 obj << -/Title 260 0 R -/A 257 0 R -/Parent 239 0 R -/Prev 255 0 R -/Next 263 0 R ->> endobj -255 0 obj << -/Title 256 0 R -/A 253 0 R -/Parent 239 0 R -/Prev 251 0 R -/Next 259 0 R ->> endobj -251 0 obj << -/Title 252 0 R -/A 249 0 R -/Parent 239 0 R -/Prev 247 0 R -/Next 255 0 R ->> endobj -247 0 obj << -/Title 248 0 R -/A 245 0 R -/Parent 239 0 R -/Prev 243 0 R -/Next 251 0 R ->> endobj -243 0 obj << -/Title 244 0 R -/A 241 0 R -/Parent 239 0 R -/Next 247 0 R ->> endobj -239 0 obj << -/Title 240 0 R -/A 237 0 R -/Parent 1038 0 R -/Prev 207 0 R -/Next 271 0 R -/First 243 0 R -/Last 267 0 R -/Count -7 ->> endobj -235 0 obj << -/Title 236 0 R -/A 233 0 R -/Parent 207 0 R -/Prev 231 0 R ->> endobj -231 0 obj << -/Title 232 0 R -/A 229 0 R -/Parent 207 0 R -/Prev 227 0 R -/Next 235 0 R ->> endobj -227 0 obj << -/Title 228 0 R -/A 225 0 R -/Parent 207 0 R -/Prev 223 0 R -/Next 231 0 R ->> endobj -223 0 obj << -/Title 224 0 R -/A 221 0 R -/Parent 207 0 R -/Prev 219 0 R -/Next 227 0 R ->> endobj -219 0 obj << -/Title 220 0 R -/A 217 0 R -/Parent 207 0 R -/Prev 215 0 R -/Next 223 0 R ->> endobj -215 0 obj << -/Title 216 0 R -/A 213 0 R -/Parent 207 0 R -/Prev 211 0 R -/Next 219 0 R ->> endobj -211 0 obj << -/Title 212 0 R -/A 209 0 R -/Parent 207 0 R -/Next 215 0 R ->> endobj -207 0 obj << -/Title 208 0 R -/A 205 0 R -/Parent 1038 0 R -/Prev 175 0 R -/Next 239 0 R -/First 211 0 R -/Last 235 0 R -/Count -7 ->> endobj -203 0 obj << -/Title 204 0 R -/A 201 0 R -/Parent 175 0 R -/Prev 199 0 R ->> endobj -199 0 obj << -/Title 200 0 R -/A 197 0 R -/Parent 175 0 R -/Prev 195 0 R -/Next 203 0 R ->> endobj -195 0 obj << -/Title 196 0 R -/A 193 0 R -/Parent 175 0 R -/Prev 191 0 R -/Next 199 0 R ->> endobj -191 0 obj << -/Title 192 0 R -/A 189 0 R -/Parent 175 0 R -/Prev 187 0 R -/Next 195 0 R ->> endobj -187 0 obj << -/Title 188 0 R -/A 185 0 R -/Parent 175 0 R -/Prev 183 0 R -/Next 191 0 R ->> endobj -183 0 obj << -/Title 184 0 R -/A 181 0 R -/Parent 175 0 R -/Prev 179 0 R -/Next 187 0 R ->> endobj -179 0 obj << -/Title 180 0 R -/A 177 0 R -/Parent 175 0 R -/Next 183 0 R ->> endobj -175 0 obj << -/Title 176 0 R -/A 173 0 R -/Parent 1038 0 R -/Prev 143 0 R -/Next 207 0 R -/First 179 0 R -/Last 203 0 R -/Count -7 ->> endobj -171 0 obj << -/Title 172 0 R -/A 169 0 R -/Parent 143 0 R -/Prev 167 0 R ->> endobj -167 0 obj << -/Title 168 0 R -/A 165 0 R -/Parent 143 0 R -/Prev 163 0 R -/Next 171 0 R ->> endobj -163 0 obj << -/Title 164 0 R -/A 161 0 R -/Parent 143 0 R -/Prev 159 0 R -/Next 167 0 R ->> endobj -159 0 obj << -/Title 160 0 R -/A 157 0 R -/Parent 143 0 R -/Prev 155 0 R -/Next 163 0 R ->> endobj -155 0 obj << -/Title 156 0 R -/A 153 0 R -/Parent 143 0 R -/Prev 151 0 R -/Next 159 0 R ->> endobj -151 0 obj << -/Title 152 0 R -/A 149 0 R -/Parent 143 0 R -/Prev 147 0 R -/Next 155 0 R ->> endobj -147 0 obj << -/Title 148 0 R -/A 145 0 R -/Parent 143 0 R -/Next 151 0 R ->> endobj -143 0 obj << -/Title 144 0 R -/A 141 0 R -/Parent 1038 0 R -/Prev 123 0 R -/Next 175 0 R -/First 147 0 R -/Last 171 0 R -/Count -7 ->> endobj -139 0 obj << -/Title 140 0 R -/A 137 0 R -/Parent 123 0 R -/Prev 135 0 R ->> endobj -135 0 obj << -/Title 136 0 R -/A 133 0 R -/Parent 123 0 R -/Prev 131 0 R -/Next 139 0 R ->> endobj -131 0 obj << -/Title 132 0 R -/A 129 0 R -/Parent 123 0 R -/Prev 127 0 R -/Next 135 0 R ->> endobj -127 0 obj << -/Title 128 0 R -/A 125 0 R -/Parent 123 0 R -/Next 131 0 R ->> endobj -123 0 obj << -/Title 124 0 R -/A 121 0 R -/Parent 1038 0 R -/Prev 103 0 R -/Next 143 0 R -/First 127 0 R -/Last 139 0 R -/Count -4 ->> endobj -119 0 obj << -/Title 120 0 R -/A 117 0 R -/Parent 103 0 R -/Prev 115 0 R ->> endobj -115 0 obj << -/Title 116 0 R -/A 113 0 R -/Parent 103 0 R -/Prev 111 0 R -/Next 119 0 R ->> endobj -111 0 obj << -/Title 112 0 R -/A 109 0 R -/Parent 103 0 R -/Prev 107 0 R -/Next 115 0 R ->> endobj -107 0 obj << -/Title 108 0 R -/A 105 0 R -/Parent 103 0 R -/Next 111 0 R ->> endobj -103 0 obj << -/Title 104 0 R -/A 101 0 R -/Parent 1038 0 R -/Prev 67 0 R -/Next 123 0 R -/First 107 0 R -/Last 119 0 R -/Count -4 ->> endobj -99 0 obj << -/Title 100 0 R -/A 97 0 R -/Parent 67 0 R -/Prev 95 0 R ->> endobj -95 0 obj << -/Title 96 0 R -/A 93 0 R -/Parent 67 0 R -/Prev 91 0 R -/Next 99 0 R ->> endobj -91 0 obj << -/Title 92 0 R -/A 89 0 R -/Parent 67 0 R -/Prev 87 0 R -/Next 95 0 R ->> endobj -87 0 obj << -/Title 88 0 R -/A 85 0 R -/Parent 67 0 R -/Prev 83 0 R -/Next 91 0 R ->> endobj -83 0 obj << -/Title 84 0 R -/A 81 0 R -/Parent 67 0 R -/Prev 79 0 R -/Next 87 0 R ->> endobj -79 0 obj << -/Title 80 0 R -/A 77 0 R -/Parent 67 0 R -/Prev 75 0 R -/Next 83 0 R ->> endobj -75 0 obj << -/Title 76 0 R -/A 73 0 R -/Parent 67 0 R -/Prev 71 0 R -/Next 79 0 R ->> endobj -71 0 obj << -/Title 72 0 R -/A 69 0 R -/Parent 67 0 R -/Next 75 0 R ->> endobj -67 0 obj << -/Title 68 0 R -/A 65 0 R -/Parent 1038 0 R -/Prev 35 0 R -/Next 103 0 R -/First 71 0 R -/Last 99 0 R -/Count -8 ->> endobj -63 0 obj << -/Title 64 0 R -/A 61 0 R -/Parent 35 0 R -/Prev 59 0 R ->> endobj -59 0 obj << -/Title 60 0 R -/A 57 0 R -/Parent 35 0 R -/Prev 55 0 R -/Next 63 0 R ->> endobj -55 0 obj << -/Title 56 0 R -/A 53 0 R -/Parent 35 0 R -/Prev 51 0 R -/Next 59 0 R ->> endobj -51 0 obj << -/Title 52 0 R -/A 49 0 R -/Parent 35 0 R -/Prev 47 0 R -/Next 55 0 R ->> endobj -47 0 obj << -/Title 48 0 R -/A 45 0 R -/Parent 35 0 R -/Prev 43 0 R -/Next 51 0 R ->> endobj -43 0 obj << -/Title 44 0 R -/A 41 0 R -/Parent 35 0 R -/Prev 39 0 R -/Next 47 0 R ->> endobj -39 0 obj << -/Title 40 0 R -/A 37 0 R -/Parent 35 0 R -/Next 43 0 R ->> endobj -35 0 obj << -/Title 36 0 R -/A 33 0 R -/Parent 1038 0 R -/Prev 7 0 R -/Next 67 0 R -/First 39 0 R -/Last 63 0 R -/Count -7 ->> endobj -31 0 obj << -/Title 32 0 R -/A 29 0 R -/Parent 7 0 R -/Prev 27 0 R ->> endobj -27 0 obj << -/Title 28 0 R -/A 25 0 R -/Parent 7 0 R -/Prev 23 0 R -/Next 31 0 R ->> endobj -23 0 obj << -/Title 24 0 R -/A 21 0 R -/Parent 7 0 R -/Prev 19 0 R -/Next 27 0 R ->> endobj -19 0 obj << -/Title 20 0 R -/A 17 0 R -/Parent 7 0 R -/Prev 15 0 R -/Next 23 0 R ->> endobj -15 0 obj << -/Title 16 0 R -/A 13 0 R -/Parent 7 0 R -/Prev 11 0 R -/Next 19 0 R ->> endobj -11 0 obj << -/Title 12 0 R -/A 9 0 R -/Parent 7 0 R -/Next 15 0 R ->> endobj -7 0 obj << -/Title 8 0 R -/A 5 0 R -/Parent 1038 0 R -/Next 35 0 R -/First 11 0 R -/Last 31 0 R -/Count -6 ->> endobj -1039 0 obj << -/Names [(Doc-Start) 450 0 R (Item.1) 867 0 R (Item.2) 868 0 R (Item.3) 869 0 R (Item.4) 874 0 R (Item.5) 875 0 R (Item.6) 876 0 R (Item.7) 877 0 R (Item.8) 902 0 R (Item.9) 903 0 R (page.1) 449 0 R (page.10) 629 0 R (page.11) 637 0 R (page.12) 646 0 R (page.13) 650 0 R (page.14) 655 0 R (page.15) 660 0 R (page.16) 664 0 R (page.17) 669 0 R (page.18) 673 0 R (page.19) 677 0 R (page.2) 464 0 R (page.20) 682 0 R (page.21) 686 0 R (page.22) 690 0 R (page.23) 694 0 R (page.24) 698 0 R (page.25) 702 0 R (page.26) 707 0 R (page.27) 711 0 R (page.28) 715 0 R (page.29) 720 0 R (page.3) 500 0 R (page.30) 724 0 R (page.31) 729 0 R (page.32) 735 0 R (page.33) 739 0 R (page.34) 743 0 R (page.35) 747 0 R (page.36) 751 0 R (page.37) 755 0 R (page.38) 760 0 R (page.39) 764 0 R (page.4) 530 0 R (page.40) 768 0 R (page.41) 773 0 R (page.42) 777 0 R (page.43) 783 0 R (page.44) 789 0 R (page.45) 793 0 R (page.46) 797 0 R (page.47) 801 0 R (page.48) 806 0 R (page.49) 810 0 R (page.5) 560 0 R (page.50) 815 0 R (page.51) 819 0 R (page.52) 823 0 R (page.53) 827 0 R (page.54) 832 0 R (page.55) 836 0 R (page.56) 841 0 R (page.57) 845 0 R (page.58) 849 0 R (page.59) 853 0 R (page.6) 591 0 R (page.60) 857 0 R (page.61) 861 0 R (page.62) 866 0 R (page.63) 873 0 R (page.64) 881 0 R (page.65) 887 0 R (page.66) 891 0 R (page.67) 896 0 R (page.68) 901 0 R (page.69) 907 0 R (page.7) 602 0 R (page.70) 912 0 R (page.71) 916 0 R (page.72) 920 0 R (page.73) 924 0 R (page.74) 929 0 R (page.75) 933 0 R (page.76) 937 0 R (page.77) 941 0 R (page.78) 945 0 R (page.79) 949 0 R (page.8) 611 0 R (page.80) 954 0 R (page.81) 958 0 R (page.82) 962 0 R (page.83) 968 0 R (page.84) 975 0 R (page.85) 980 0 R (page.86) 985 0 R (page.87) 989 0 R (page.88) 993 0 R (page.89) 997 0 R (page.9) 618 0 R (page.90) 1001 0 R (page.91) 1005 0 R (page.92) 1011 0 R (section*.1) 468 0 R (section.1) 6 0 R (section.10) 270 0 R (section.11) 310 0 R (section.12) 370 0 R (section.13) 390 0 R (section.14) 438 0 R (section.15) 442 0 R (section.2) 34 0 R (section.3) 66 0 R (section.4) 102 0 R (section.5) 122 0 R (section.6) 142 0 R (section.7) 174 0 R (section.8) 206 0 R (section.9) 238 0 R (subsection.1.1) 10 0 R (subsection.1.2) 14 0 R (subsection.1.3) 18 0 R (subsection.1.4) 22 0 R (subsection.1.5) 26 0 R (subsection.1.6) 30 0 R (subsection.10.1) 274 0 R (subsection.10.2) 278 0 R (subsection.10.3) 282 0 R (subsection.10.4) 286 0 R (subsection.10.5) 290 0 R (subsection.10.6) 294 0 R (subsection.10.7) 298 0 R (subsection.10.8) 302 0 R (subsection.10.9) 306 0 R (subsection.11.1) 314 0 R (subsection.11.2) 318 0 R (subsection.11.3) 322 0 R (subsection.11.4) 326 0 R (subsection.11.5) 338 0 R (subsection.11.6) 350 0 R (subsection.11.7) 358 0 R (subsection.11.8) 362 0 R (subsection.11.9) 366 0 R (subsection.12.1) 374 0 R (subsection.12.2) 378 0 R (subsection.12.3) 382 0 R (subsection.12.4) 386 0 R (subsection.13.1) 394 0 R (subsection.13.2) 414 0 R (subsection.2.1) 38 0 R (subsection.2.2) 42 0 R (subsection.2.3) 46 0 R (subsection.2.4) 50 0 R (subsection.2.5) 54 0 R (subsection.2.6) 58 0 R (subsection.2.7) 62 0 R (subsection.3.1) 70 0 R (subsection.3.2) 74 0 R (subsection.3.3) 78 0 R (subsection.3.4) 82 0 R (subsection.3.5) 86 0 R (subsection.3.6) 90 0 R (subsection.3.7) 94 0 R (subsection.3.8) 98 0 R (subsection.4.1) 106 0 R (subsection.4.2) 110 0 R (subsection.4.3) 114 0 R (subsection.4.4) 118 0 R (subsection.5.1) 126 0 R (subsection.5.2) 130 0 R (subsection.5.3) 134 0 R (subsection.5.4) 138 0 R (subsection.6.1) 146 0 R (subsection.6.2) 150 0 R (subsection.6.3) 154 0 R (subsection.6.4) 158 0 R (subsection.6.5) 162 0 R (subsection.6.6) 166 0 R (subsection.6.7) 170 0 R (subsection.7.1) 178 0 R (subsection.7.2) 182 0 R (subsection.7.3) 186 0 R (subsection.7.4) 190 0 R (subsection.7.5) 194 0 R (subsection.7.6) 198 0 R (subsection.7.7) 202 0 R (subsection.8.1) 210 0 R (subsection.8.2) 214 0 R (subsection.8.3) 218 0 R (subsection.8.4) 222 0 R (subsection.8.5) 226 0 R (subsection.8.6) 230 0 R (subsection.8.7) 234 0 R (subsection.9.1) 242 0 R (subsection.9.2) 246 0 R (subsection.9.3) 250 0 R (subsection.9.4) 254 0 R (subsection.9.5) 258 0 R (subsection.9.6) 262 0 R (subsection.9.7) 266 0 R (subsubsection.11.4.1) 330 0 R (subsubsection.11.4.2) 334 0 R (subsubsection.11.5.1) 342 0 R (subsubsection.11.5.2) 346 0 R (subsubsection.11.6.1) 354 0 R (subsubsection.13.1.1) 398 0 R (subsubsection.13.1.2) 402 0 R (subsubsection.13.1.3) 406 0 R (subsubsection.13.1.4) 410 0 R (subsubsection.13.2.1) 418 0 R (subsubsection.13.2.2) 422 0 R (subsubsection.13.2.3) 426 0 R (subsubsection.13.2.4) 430 0 R (subsubsection.13.2.5) 434 0 R] -/Limits [(Doc-Start) (subsubsection.13.2.5)] ->> endobj -1040 0 obj << -/Kids [1039 0 R] ->> endobj -1041 0 obj << -/Dests 1040 0 R ->> endobj -1042 0 obj << -/Type /Catalog -/Pages 1037 0 R -/Outlines 1038 0 R -/Names 1041 0 R -/PageMode /UseOutlines -/OpenAction 445 0 R ->> endobj -1043 0 obj << -/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords() -/CreationDate (D:20070708183625+02'00') -/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) ->> endobj -xref -0 1044 -0000000001 65535 f -0000000002 00000 f -0000000003 00000 f -0000000004 00000 f -0000000000 00000 f -0000000009 00000 n -0000044578 00000 n -0000408334 00000 n -0000000054 00000 n -0000000084 00000 n -0000044640 00000 n -0000408262 00000 n -0000000134 00000 n -0000000179 00000 n -0000047976 00000 n -0000408176 00000 n -0000000230 00000 n -0000000278 00000 n -0000051869 00000 n -0000408090 00000 n -0000000329 00000 n -0000000372 00000 n -0000054856 00000 n -0000408004 00000 n -0000000423 00000 n -0000000470 00000 n -0000057889 00000 n -0000407918 00000 n -0000000521 00000 n -0000000562 00000 n -0000057952 00000 n -0000407845 00000 n -0000000613 00000 n -0000000654 00000 n -0000060114 00000 n -0000407720 00000 n -0000000700 00000 n -0000000741 00000 n -0000062381 00000 n -0000407646 00000 n -0000000792 00000 n -0000000849 00000 n -0000064842 00000 n -0000407559 00000 n -0000000900 00000 n -0000000947 00000 n -0000066677 00000 n -0000407472 00000 n -0000000998 00000 n -0000001034 00000 n -0000069075 00000 n -0000407385 00000 n -0000001085 00000 n -0000001135 00000 n -0000071210 00000 n -0000407298 00000 n -0000001186 00000 n -0000001226 00000 n -0000071273 00000 n -0000407211 00000 n -0000001277 00000 n -0000001318 00000 n -0000073453 00000 n -0000407137 00000 n -0000001369 00000 n -0000001413 00000 n -0000073516 00000 n -0000407010 00000 n -0000001459 00000 n -0000001500 00000 n -0000075943 00000 n -0000406936 00000 n -0000001551 00000 n -0000001598 00000 n -0000076006 00000 n -0000406849 00000 n -0000001649 00000 n -0000001683 00000 n -0000078576 00000 n -0000406762 00000 n -0000001734 00000 n -0000001765 00000 n -0000078639 00000 n -0000406675 00000 n -0000001816 00000 n -0000001865 00000 n -0000080827 00000 n -0000406588 00000 n -0000001916 00000 n -0000001954 00000 n -0000082670 00000 n -0000406501 00000 n -0000002005 00000 n -0000002050 00000 n -0000084563 00000 n -0000406414 00000 n -0000002101 00000 n -0000002145 00000 n -0000084626 00000 n -0000406339 00000 n -0000002196 00000 n -0000002233 00000 n -0000087150 00000 n -0000406207 00000 n -0000002280 00000 n -0000002337 00000 n -0000087214 00000 n -0000406128 00000 n -0000002389 00000 n -0000002435 00000 n -0000088954 00000 n -0000406035 00000 n -0000002487 00000 n -0000002535 00000 n -0000090902 00000 n -0000405942 00000 n -0000002587 00000 n -0000002626 00000 n -0000092620 00000 n -0000405863 00000 n -0000002678 00000 n -0000002714 00000 n -0000094480 00000 n -0000405730 00000 n -0000002761 00000 n -0000002801 00000 n -0000094544 00000 n -0000405651 00000 n -0000002853 00000 n -0000002892 00000 n -0000094608 00000 n -0000405558 00000 n -0000002944 00000 n -0000002984 00000 n -0000096585 00000 n -0000405465 00000 n -0000003036 00000 n -0000003084 00000 n -0000100084 00000 n -0000405386 00000 n -0000003136 00000 n -0000003171 00000 n -0000103149 00000 n -0000405253 00000 n -0000003218 00000 n -0000003254 00000 n -0000103213 00000 n -0000405174 00000 n -0000003306 00000 n -0000003367 00000 n -0000103277 00000 n -0000405081 00000 n -0000003419 00000 n -0000003460 00000 n -0000105338 00000 n -0000404988 00000 n -0000003512 00000 n -0000003560 00000 n -0000105402 00000 n -0000404895 00000 n -0000003612 00000 n -0000003650 00000 n -0000107560 00000 n -0000404802 00000 n -0000003702 00000 n -0000003741 00000 n -0000110153 00000 n -0000404709 00000 n -0000003793 00000 n -0000003837 00000 n -0000110217 00000 n -0000404630 00000 n -0000003889 00000 n -0000003927 00000 n -0000110281 00000 n -0000404497 00000 n -0000003974 00000 n -0000004004 00000 n -0000112872 00000 n -0000404418 00000 n -0000004056 00000 n -0000004097 00000 n -0000115673 00000 n -0000404325 00000 n -0000004149 00000 n -0000004200 00000 n -0000118058 00000 n -0000404232 00000 n -0000004252 00000 n -0000004313 00000 n -0000120544 00000 n -0000404139 00000 n -0000004365 00000 n -0000004431 00000 n -0000123133 00000 n -0000404046 00000 n -0000004483 00000 n -0000004519 00000 n -0000123197 00000 n -0000403953 00000 n -0000004571 00000 n -0000004642 00000 n -0000125923 00000 n -0000403874 00000 n -0000004694 00000 n -0000004744 00000 n -0000128410 00000 n -0000403741 00000 n -0000004791 00000 n -0000004846 00000 n -0000128474 00000 n -0000403662 00000 n -0000004898 00000 n -0000004961 00000 n -0000131018 00000 n -0000403569 00000 n -0000005013 00000 n -0000005072 00000 n -0000133657 00000 n -0000403476 00000 n -0000005124 00000 n -0000005170 00000 n -0000135811 00000 n -0000403383 00000 n -0000005222 00000 n -0000005284 00000 n -0000138556 00000 n -0000403290 00000 n -0000005336 00000 n -0000005382 00000 n -0000138620 00000 n -0000403197 00000 n -0000005434 00000 n -0000005468 00000 n -0000140934 00000 n -0000403118 00000 n -0000005520 00000 n -0000005565 00000 n -0000143496 00000 n -0000402985 00000 n -0000005612 00000 n -0000005667 00000 n -0000143560 00000 n -0000402906 00000 n -0000005719 00000 n -0000005756 00000 n -0000143624 00000 n -0000402813 00000 n -0000005808 00000 n -0000005858 00000 n -0000145809 00000 n -0000402720 00000 n -0000005910 00000 n -0000005954 00000 n -0000145872 00000 n -0000402627 00000 n -0000006006 00000 n -0000006051 00000 n -0000148538 00000 n -0000402534 00000 n -0000006103 00000 n -0000006150 00000 n -0000151215 00000 n -0000402441 00000 n -0000006202 00000 n -0000006246 00000 n -0000153509 00000 n -0000402362 00000 n -0000006298 00000 n -0000006334 00000 n -0000153572 00000 n -0000402229 00000 n -0000006382 00000 n -0000006436 00000 n -0000153636 00000 n -0000402150 00000 n -0000006489 00000 n -0000006536 00000 n -0000155899 00000 n -0000402057 00000 n -0000006589 00000 n -0000006625 00000 n -0000162546 00000 n -0000401964 00000 n -0000006678 00000 n -0000006713 00000 n -0000167725 00000 n -0000401871 00000 n -0000006766 00000 n -0000006833 00000 n -0000173721 00000 n -0000401778 00000 n -0000006886 00000 n -0000006930 00000 n -0000175448 00000 n -0000401685 00000 n -0000006983 00000 n -0000007047 00000 n -0000177714 00000 n -0000401592 00000 n -0000007100 00000 n -0000007148 00000 n -0000183103 00000 n -0000401499 00000 n -0000007201 00000 n -0000007243 00000 n -0000185692 00000 n -0000401420 00000 n -0000007296 00000 n -0000007354 00000 n -0000241609 00000 n -0000401287 00000 n -0000007402 00000 n -0000007454 00000 n -0000241673 00000 n -0000401208 00000 n -0000007507 00000 n -0000007552 00000 n -0000241737 00000 n -0000401115 00000 n -0000007605 00000 n -0000007640 00000 n -0000248709 00000 n -0000401022 00000 n -0000007693 00000 n -0000007725 00000 n -0000248773 00000 n -0000400890 00000 n -0000007778 00000 n -0000007840 00000 n -0000248837 00000 n -0000400811 00000 n -0000007898 00000 n -0000007947 00000 n -0000251525 00000 n -0000400732 00000 n -0000008005 00000 n -0000008052 00000 n -0000253776 00000 n -0000400600 00000 n -0000008105 00000 n -0000008171 00000 n -0000253840 00000 n -0000400521 00000 n -0000008229 00000 n -0000008276 00000 n -0000256197 00000 n -0000400442 00000 n -0000008334 00000 n -0000008385 00000 n -0000258619 00000 n -0000400310 00000 n -0000008438 00000 n -0000008471 00000 n -0000261063 00000 n -0000400245 00000 n -0000008529 00000 n -0000008573 00000 n -0000263219 00000 n -0000400152 00000 n -0000008626 00000 n -0000008669 00000 n -0000265323 00000 n -0000400059 00000 n -0000008722 00000 n -0000008759 00000 n -0000272387 00000 n -0000399980 00000 n -0000008812 00000 n -0000008852 00000 n -0000279819 00000 n -0000399847 00000 n -0000008900 00000 n -0000008936 00000 n -0000279883 00000 n -0000399768 00000 n -0000008989 00000 n -0000009028 00000 n -0000282619 00000 n -0000399675 00000 n -0000009081 00000 n -0000009124 00000 n -0000282683 00000 n -0000399582 00000 n -0000009177 00000 n -0000009223 00000 n -0000284276 00000 n -0000399503 00000 n -0000009276 00000 n -0000009317 00000 n -0000286164 00000 n -0000399370 00000 n -0000009365 00000 n -0000009422 00000 n -0000286228 00000 n -0000399252 00000 n -0000009475 00000 n -0000009514 00000 n -0000286291 00000 n -0000399173 00000 n -0000009572 00000 n -0000009618 00000 n -0000289711 00000 n -0000399080 00000 n -0000009676 00000 n -0000009703 00000 n -0000289775 00000 n -0000398987 00000 n -0000009761 00000 n -0000009802 00000 n -0000291312 00000 n -0000398908 00000 n -0000009860 00000 n -0000009902 00000 n -0000293337 00000 n -0000398790 00000 n -0000009955 00000 n -0000009998 00000 n -0000293401 00000 n -0000398711 00000 n -0000010056 00000 n -0000010112 00000 n -0000293465 00000 n -0000398618 00000 n -0000010170 00000 n -0000010221 00000 n -0000295255 00000 n -0000398525 00000 n -0000010279 00000 n -0000010328 00000 n -0000297401 00000 n -0000398432 00000 n -0000010386 00000 n -0000010429 00000 n -0000297466 00000 n -0000398353 00000 n -0000010487 00000 n -0000010523 00000 n -0000297531 00000 n -0000398259 00000 n -0000010571 00000 n -0000010616 00000 n -0000297596 00000 n -0000398179 00000 n -0000010664 00000 n -0000010699 00000 n -0000011179 00000 n -0000011429 00000 n -0000010752 00000 n -0000011301 00000 n -0000011365 00000 n -0000395175 00000 n -0000391030 00000 n -0000395012 00000 n -0000390103 00000 n -0000383399 00000 n -0000389940 00000 n -0000381935 00000 n -0000365089 00000 n -0000381772 00000 n -0000395816 00000 n -0000018300 00000 n -0000013839 00000 n -0000011527 00000 n -0000018172 00000 n -0000363903 00000 n -0000352147 00000 n -0000363739 00000 n -0000018236 00000 n -0000014173 00000 n -0000351086 00000 n -0000338542 00000 n -0000350922 00000 n -0000014329 00000 n -0000014490 00000 n -0000014651 00000 n -0000014811 00000 n -0000014972 00000 n -0000015133 00000 n -0000015294 00000 n -0000015450 00000 n -0000015611 00000 n -0000015771 00000 n -0000015932 00000 n -0000016093 00000 n -0000016254 00000 n -0000016415 00000 n -0000016575 00000 n -0000016730 00000 n -0000016891 00000 n -0000017052 00000 n -0000017213 00000 n -0000017374 00000 n -0000017534 00000 n -0000017695 00000 n -0000017855 00000 n -0000018016 00000 n -0000025383 00000 n -0000020816 00000 n -0000018398 00000 n -0000025319 00000 n -0000021158 00000 n -0000021319 00000 n -0000021479 00000 n -0000021640 00000 n -0000021801 00000 n -0000021956 00000 n -0000022117 00000 n -0000022278 00000 n -0000022439 00000 n -0000022600 00000 n -0000022756 00000 n -0000022916 00000 n -0000023077 00000 n -0000023238 00000 n -0000023399 00000 n -0000023560 00000 n -0000023720 00000 n -0000023881 00000 n -0000024037 00000 n -0000024198 00000 n -0000024359 00000 n -0000024520 00000 n -0000024680 00000 n -0000024841 00000 n -0000025002 00000 n -0000025163 00000 n -0000032561 00000 n -0000027983 00000 n -0000025468 00000 n -0000032497 00000 n -0000028325 00000 n -0000028486 00000 n -0000028645 00000 n -0000028805 00000 n -0000028966 00000 n -0000029127 00000 n -0000029288 00000 n -0000029448 00000 n -0000029604 00000 n -0000029765 00000 n -0000029925 00000 n -0000030086 00000 n -0000030247 00000 n -0000030407 00000 n -0000030568 00000 n -0000030729 00000 n -0000030885 00000 n -0000031046 00000 n -0000031208 00000 n -0000031370 00000 n -0000031532 00000 n -0000031694 00000 n -0000031856 00000 n -0000032017 00000 n -0000032178 00000 n -0000032340 00000 n -0000039980 00000 n -0000035158 00000 n -0000032646 00000 n -0000039916 00000 n -0000035508 00000 n -0000035670 00000 n -0000035831 00000 n -0000035993 00000 n -0000036155 00000 n -0000036322 00000 n -0000036489 00000 n -0000036650 00000 n -0000036817 00000 n -0000036984 00000 n -0000037146 00000 n -0000037313 00000 n -0000037475 00000 n -0000037637 00000 n -0000037799 00000 n -0000037956 00000 n -0000038117 00000 n -0000038279 00000 n -0000038440 00000 n -0000038602 00000 n -0000038759 00000 n -0000038921 00000 n -0000039088 00000 n -0000039255 00000 n -0000039421 00000 n -0000039588 00000 n -0000039750 00000 n -0000042066 00000 n -0000040840 00000 n -0000040065 00000 n -0000042002 00000 n -0000041022 00000 n -0000041189 00000 n -0000041355 00000 n -0000041522 00000 n -0000041689 00000 n -0000041845 00000 n -0000043246 00000 n -0000044703 00000 n -0000043124 00000 n -0000042151 00000 n -0000044514 00000 n -0000337904 00000 n -0000335905 00000 n -0000337740 00000 n -0000395934 00000 n -0000044420 00000 n -0000048039 00000 n -0000047181 00000 n -0000044858 00000 n -0000047912 00000 n -0000047339 00000 n -0000047554 00000 n -0000047733 00000 n -0000051932 00000 n -0000050809 00000 n -0000048150 00000 n -0000051805 00000 n -0000050975 00000 n -0000051179 00000 n -0000051378 00000 n -0000051579 00000 n -0000334588 00000 n -0000320412 00000 n -0000334424 00000 n -0000054919 00000 n -0000054486 00000 n -0000052056 00000 n -0000054792 00000 n -0000318703 00000 n -0000301661 00000 n -0000318539 00000 n -0000054628 00000 n -0000058015 00000 n -0000057286 00000 n -0000055030 00000 n -0000057825 00000 n -0000057436 00000 n -0000057639 00000 n -0000301338 00000 n -0000299474 00000 n -0000301175 00000 n -0000060177 00000 n -0000059928 00000 n -0000058139 00000 n -0000060050 00000 n -0000062443 00000 n -0000062195 00000 n -0000060314 00000 n -0000062317 00000 n -0000396052 00000 n -0000064905 00000 n -0000064656 00000 n -0000062554 00000 n -0000064778 00000 n -0000067802 00000 n -0000066740 00000 n -0000066491 00000 n -0000065029 00000 n -0000066613 00000 n -0000069138 00000 n -0000067680 00000 n -0000066851 00000 n -0000069011 00000 n -0000068917 00000 n -0000071336 00000 n -0000071024 00000 n -0000069280 00000 n -0000071146 00000 n -0000073579 00000 n -0000073267 00000 n -0000071460 00000 n -0000073389 00000 n -0000076069 00000 n -0000075757 00000 n -0000073690 00000 n -0000075879 00000 n -0000396170 00000 n -0000078702 00000 n -0000078390 00000 n -0000076206 00000 n -0000078512 00000 n -0000080890 00000 n -0000080641 00000 n -0000078826 00000 n -0000080763 00000 n -0000082733 00000 n -0000082484 00000 n -0000081027 00000 n -0000082606 00000 n -0000084689 00000 n -0000084377 00000 n -0000082870 00000 n -0000084499 00000 n -0000087278 00000 n -0000086964 00000 n -0000084813 00000 n -0000087086 00000 n -0000089018 00000 n -0000088768 00000 n -0000087402 00000 n -0000088890 00000 n -0000396288 00000 n -0000090966 00000 n -0000090716 00000 n -0000089129 00000 n -0000090838 00000 n -0000092684 00000 n -0000092434 00000 n -0000091077 00000 n -0000092556 00000 n -0000094672 00000 n -0000094294 00000 n -0000092782 00000 n -0000094416 00000 n -0000098578 00000 n -0000096649 00000 n -0000096399 00000 n -0000094783 00000 n -0000096521 00000 n -0000100148 00000 n -0000098456 00000 n -0000096773 00000 n -0000100020 00000 n -0000099926 00000 n -0000103341 00000 n -0000102769 00000 n -0000100290 00000 n -0000103085 00000 n -0000102911 00000 n -0000396406 00000 n -0000105466 00000 n -0000105152 00000 n -0000103478 00000 n -0000105274 00000 n -0000107624 00000 n -0000107374 00000 n -0000105577 00000 n -0000107496 00000 n -0000110345 00000 n -0000109967 00000 n -0000107761 00000 n -0000110089 00000 n -0000112936 00000 n -0000112686 00000 n -0000110469 00000 n -0000112808 00000 n -0000115736 00000 n -0000115487 00000 n -0000113073 00000 n -0000115609 00000 n -0000118122 00000 n -0000117872 00000 n -0000115873 00000 n -0000117994 00000 n -0000396524 00000 n -0000120608 00000 n -0000120358 00000 n -0000118233 00000 n -0000120480 00000 n -0000123261 00000 n -0000122947 00000 n -0000120732 00000 n -0000123069 00000 n -0000125987 00000 n -0000125539 00000 n -0000123372 00000 n -0000125859 00000 n -0000125681 00000 n -0000128538 00000 n -0000128224 00000 n -0000126111 00000 n -0000128346 00000 n -0000131081 00000 n -0000130442 00000 n -0000128662 00000 n -0000130954 00000 n -0000130592 00000 n -0000130777 00000 n -0000133721 00000 n -0000133277 00000 n -0000131192 00000 n -0000133593 00000 n -0000133419 00000 n -0000396642 00000 n -0000135875 00000 n -0000135625 00000 n -0000133845 00000 n -0000135747 00000 n -0000138684 00000 n -0000138370 00000 n -0000135973 00000 n -0000138492 00000 n -0000140998 00000 n -0000140748 00000 n -0000138808 00000 n -0000140870 00000 n -0000143688 00000 n -0000143112 00000 n -0000141109 00000 n -0000143432 00000 n -0000143254 00000 n -0000145936 00000 n -0000145623 00000 n -0000143812 00000 n -0000145745 00000 n -0000148602 00000 n -0000148352 00000 n -0000146073 00000 n -0000148474 00000 n -0000396760 00000 n -0000151279 00000 n -0000151029 00000 n -0000148739 00000 n -0000151151 00000 n -0000153700 00000 n -0000153323 00000 n -0000151416 00000 n -0000153445 00000 n -0000155963 00000 n -0000155713 00000 n -0000153824 00000 n -0000155835 00000 n -0000159895 00000 n -0000159496 00000 n -0000156087 00000 n -0000159831 00000 n -0000159638 00000 n -0000162610 00000 n -0000162360 00000 n -0000160019 00000 n -0000162482 00000 n -0000164417 00000 n -0000164231 00000 n -0000162747 00000 n -0000164353 00000 n -0000396878 00000 n -0000167789 00000 n -0000167539 00000 n -0000164515 00000 n -0000167661 00000 n -0000170574 00000 n -0000170388 00000 n -0000167926 00000 n -0000170510 00000 n -0000172428 00000 n -0000172242 00000 n -0000170685 00000 n -0000172364 00000 n -0000173785 00000 n -0000173535 00000 n -0000172539 00000 n -0000173657 00000 n -0000175512 00000 n -0000175262 00000 n -0000173883 00000 n -0000175384 00000 n -0000177776 00000 n -0000177528 00000 n -0000175636 00000 n -0000177650 00000 n -0000396996 00000 n -0000180395 00000 n -0000180018 00000 n -0000177900 00000 n -0000180140 00000 n -0000180204 00000 n -0000180267 00000 n -0000180331 00000 n -0000183167 00000 n -0000182661 00000 n -0000180506 00000 n -0000182783 00000 n -0000182847 00000 n -0000182911 00000 n -0000182975 00000 n -0000183039 00000 n -0000185756 00000 n -0000185293 00000 n -0000183291 00000 n -0000185628 00000 n -0000185435 00000 n -0000187111 00000 n -0000238707 00000 n -0000186989 00000 n -0000185880 00000 n -0000238643 00000 n -0000241801 00000 n -0000241195 00000 n -0000238854 00000 n -0000241545 00000 n -0000241337 00000 n -0000243380 00000 n -0000243194 00000 n -0000241912 00000 n -0000243316 00000 n -0000397114 00000 n -0000245834 00000 n -0000245520 00000 n -0000243465 00000 n -0000245642 00000 n -0000245706 00000 n -0000245770 00000 n -0000248901 00000 n -0000248332 00000 n -0000245945 00000 n -0000248645 00000 n -0000248474 00000 n -0000251589 00000 n -0000251339 00000 n -0000249012 00000 n -0000251461 00000 n -0000253904 00000 n -0000253590 00000 n -0000251700 00000 n -0000253712 00000 n -0000256261 00000 n -0000256011 00000 n -0000254028 00000 n -0000256133 00000 n -0000258683 00000 n -0000258433 00000 n -0000256359 00000 n -0000258555 00000 n -0000397232 00000 n -0000261127 00000 n -0000260877 00000 n -0000258820 00000 n -0000260999 00000 n -0000263283 00000 n -0000263033 00000 n -0000261238 00000 n -0000263155 00000 n -0000265386 00000 n -0000265137 00000 n -0000263420 00000 n -0000265259 00000 n -0000267903 00000 n -0000267717 00000 n -0000265497 00000 n -0000267839 00000 n -0000269499 00000 n -0000269313 00000 n -0000268027 00000 n -0000269435 00000 n -0000272451 00000 n -0000272201 00000 n -0000269597 00000 n -0000272323 00000 n -0000397350 00000 n -0000274534 00000 n -0000274348 00000 n -0000272575 00000 n -0000274470 00000 n -0000277164 00000 n -0000276978 00000 n -0000274645 00000 n -0000277100 00000 n -0000279947 00000 n -0000279229 00000 n -0000277262 00000 n -0000279755 00000 n -0000279379 00000 n -0000279567 00000 n -0000282747 00000 n -0000281787 00000 n -0000280058 00000 n -0000282555 00000 n -0000281945 00000 n -0000282136 00000 n -0000282329 00000 n -0000284340 00000 n -0000283867 00000 n -0000282845 00000 n -0000284212 00000 n -0000284009 00000 n -0000286355 00000 n -0000285978 00000 n -0000284487 00000 n -0000286100 00000 n -0000397468 00000 n -0000287912 00000 n -0000287726 00000 n -0000286466 00000 n -0000287848 00000 n -0000289839 00000 n -0000289525 00000 n -0000287997 00000 n -0000289647 00000 n -0000291376 00000 n -0000291126 00000 n -0000289950 00000 n -0000291248 00000 n -0000293529 00000 n -0000293151 00000 n -0000291474 00000 n -0000293273 00000 n -0000295319 00000 n -0000295067 00000 n -0000293640 00000 n -0000295190 00000 n -0000297661 00000 n -0000296985 00000 n -0000295417 00000 n -0000297335 00000 n -0000297132 00000 n -0000397586 00000 n -0000299388 00000 n -0000298364 00000 n -0000297773 00000 n -0000299322 00000 n -0000298538 00000 n -0000298764 00000 n -0000298958 00000 n -0000299162 00000 n -0000301572 00000 n -0000301547 00000 n -0000319790 00000 n -0000319353 00000 n -0000335372 00000 n -0000334999 00000 n -0000338371 00000 n -0000338148 00000 n -0000351807 00000 n -0000351444 00000 n -0000364678 00000 n -0000364303 00000 n -0000382870 00000 n -0000382450 00000 n -0000390648 00000 n -0000390409 00000 n -0000395550 00000 n -0000395399 00000 n -0000397675 00000 n -0000397795 00000 n -0000397915 00000 n -0000398020 00000 n -0000398102 00000 n -0000408444 00000 n -0000413130 00000 n -0000413171 00000 n -0000413211 00000 n -0000413345 00000 n -trailer -<< -/Size 1044 -/Root 1042 0 R -/Info 1043 0 R -/ID [ ] ->> -startxref -413609 -%%EOF diff --git a/doc/tutorial/gf-tutorial2.txt b/doc/tutorial/gf-tutorial2.txt deleted file mode 100644 index dda61ab81..000000000 --- a/doc/tutorial/gf-tutorial2.txt +++ /dev/null @@ -1,3943 +0,0 @@ -Grammatical Framework Tutorial -Author: Aarne Ranta aarne (at) cs.chalmers.se -Last update: %%date(%c) - -% NOTE: this is a txt2tags file. -% Create an html file from this file using: -% txt2tags --toc gf-tutorial2.txt - -%!target:html -%!encoding: iso-8859-1 - -%!postproc(tex): "section\*" "section" - -%!postproc(html): #BCEN
-%!postproc(html): #ECEN
- -%!postproc(tex): #BCEN "begin{center}" -%!postproc(tex): #ECEN "end{center}" - -%!preproc(html): #EDITORPNG [../quick-editor.png] -%!preproc(tex): #EDITORPNG [../../lib/resource-1.0/doc/10lang-small.png] - - -[../gf-logo.png] - - - -%--! -=Introduction= - -==GF = Grammatical Framework== - -The term GF is used for different things: -- a **program** used for working with grammars -- a **programming language** in which grammars can be written -- a **theory** about grammars and languages - - -This tutorial is primarily about the GF program and -the GF programming language. -It will guide you -- to use the GF program -- to write GF grammars -- to write programs in which GF grammars are used as components - - - -%--! -==What are GF grammars used for== - -A grammar is a definition of a language. -From this definition, different language processing components -can be derived: -- **parsing**: to analyse the language -- **linearization**: to generate the language -- **translation**: to analyse one language and generate another - - -A GF grammar can be seen as a declarative program from which these -processing tasks can be automatically derived. In addition, many -other tasks are readily available for GF grammars: -- **morphological analysis**: find out the possible inflection forms of words -- **morphological synthesis**: generate all inflection forms of words -- **random generation**: generate random expressions -- **corpus generation**: generate all expressions -- **treebank generation**: generate a list of trees with multiple linearizations -- **teaching quizzes**: train morphology and translation -- **multilingual authoring**: create a document in many languages simultaneously -- **speech input**: optimize a speech recognition system for your grammar - - -A typical GF application is based on a **multilingual grammar** involving -translation on a special domain. Existing applications of this idea include -- [Alfa: http://www.cs.chalmers.se/~hallgren/Alfa/Tutorial/GFplugin.html]: - a natural-language interface to a proof editor - (languages: English, French, Swedish) -- [KeY http://www.key-project.org/]: - a multilingual authoring system for creating software specifications - (languages: OCL, English, German) -- [TALK http://www.talk-project.org]: - multilingual and multimodal dialogue systems - (languages: English, Finnish, French, German, Italian, Spanish, Swedish) -- [WebALT http://webalt.math.helsinki.fi/content/index_eng.html]: - a multilingual translator of mathematical exercises - (languages: Catalan, English, Finnish, French, Spanish, Swedish) -- [Numeral translator http://www.cs.chalmers.se/~bringert/gf/translate/]: - number words from 1 to 999,999 - (88 languages) - - -The specialization of a grammar to a domain makes it possible to -obtain much better translations than in an unlimited machine translation -system. This is due to the well-defined semantics of such domains. -Grammars having this character are called **application grammars**. -They are different from most grammars written by linguists just -because they are multilingual and domain-specific. - -However, there is another kind of grammars, which we call **resource grammars**. -These are large, comprehensive grammars that can be used on any domain. -The GF Resource Grammar Library has resource grammars for 10 languages. -These grammars can be used as **libraries** to define application grammars. -In this way, it is possible to write a high-quality grammar without -knowing about linguistics: in general, to write an application grammar -by using the resource library just requires practical knowledge of -the target language. and all theoretical knowledge about its grammar -is given by the libraries. - - - - -%--! -==Who is this tutorial for== - -This tutorial is mainly for programmers who want to learn to write -application grammars. It will go through GF's programming concepts -without entering too deep into linguistics. Thus it should -be accessible to anyone who has some previous programming experience. - -A separate document has been written on how to write resource grammars: the -[Resource HOWTO ../../lib/resource-1.0/doc/Resource-HOWTO.html]. -In this tutorial, we will just cover the programming concepts that are used for -solving linguistic problems in the resource grammars. - -The easiest way to use GF is probably via the interactive syntax editor. -Its use does not require any knowledge of the GF formalism. There is -a separate -[Editor User Manual http://www.cs.chalmers.se/~aarne/GF2.0/doc/javaGUImanual/javaGUImanual.htm] -by Janna Khegai, covering the use of the editor. The editor is also a platform for many -kinds of GF applications, implementing the slogan - -//write a document in a language you don't know, while seeing it in a language you know//. - - -%--! -==The coverage of the tutorial== - -The tutorial gives a hands-on introduction to grammar writing. -We start by building a small grammar for the domain of food: -in this grammar, you can say things like -``` - this Italian cheese is delicious -``` -in English and Italian. - -The first English grammar -[``food.cf`` food.cf] -is written in a context-free -notation (also known as BNF). The BNF format is often a good -starting point for GF grammar development, because it is -simple and widely used. However, the BNF format is not -good for multilingual grammars. While it is possible to -"translate" by just changing the words contained in a -BNF grammar to words of some other -language, proper translation usually involves more. -For instance, the order of words may have to be changed: -``` - Italian cheese ===> formaggio italiano -``` -The full GF grammar format is designed to support such -changes, by separating between the **abstract syntax** -(the logical structure) and the **concrete syntax** (the -sequence of words) of expressions. - -There is more than words and word order that makes languages -different. Words can have different forms, and which forms -they have vary from language to language. For instance, -Italian adjectives usually have four forms where English -has just one: -``` - delicious (wine, wines, pizza, pizzas) - vino delizioso, vini deliziosi, pizza deliziosa, pizze deliziose -``` -The **morphology** of a language describes the -forms of its words. While the complete description of morphology -belongs to resource grammars, this tutorial will explain the -programming concepts involved in morphology. This will moreover -make it possible to grow the fragment covered by the food example. -The tutorial will in fact build a miniature resource grammar in order -to give an introduction to linguistically oriented grammar writing. - -Thus it is by elaborating the initial ``food.cf`` example that -the tutorial makes a guided tour through all concepts of GF. -While the constructs of the GF language are the main focus, -also the commands of the GF system are introduced as they -are needed. - -To learn how to write GF grammars is not the only goal of -this tutorial. We will also explain the most important -commands of the GF system. With these commands, -simple applications of grammars, such as translation and -quiz systems, can be built simply by writing scripts for the -system. - -More complicated applications, such as natural-language -interfaces and dialogue systems, moreover require programming in -some general-purpose language. Thus we will briefly explain how -GF grammars are used as components of Haskell programs. -Chapters on using them in Java and Javascript programs are -forthcoming; a comprehensive manual on GF embedded in Java, by Björn Bringert, is -available in -[``http://www.cs.chalmers.se/~bringert/gf/gf-java.html`` http://www.cs.chalmers.se/~bringert/gf/gf-java.html]. - - - -%--! -==Getting the GF program== - -The GF program is open-source free software, which you can download via the -GF Homepage: - -[``http://www.cs.chalmers.se/~aarne/GF`` http://www.cs.chalmers.se/~aarne/GF] - -There you can download -- binaries for Linux, Mac OS X, and Windows -- source code and documentation -- grammar libraries and examples - - -If you want to compile GF from source, you need a Haskell compiler. -To compile the interactive editor, you also need a Java compilers. -But normally you don't have to compile, and you definitely -don't need to know Haskell or Java to use GF. - -We are assuming the availability of a Unix shell. Linux and Mac OS X users -have it automatically, the latter under the name "terminal". -Windows users are recommended to install Cywgin, the free Unix shell for Windows. - - -%--! -==Running the GF program== - -To start the GF program, assuming you have installed it, just type -``` - % gf -``` -in the shell. -You will see GF's welcome message and the prompt ``>``. -The command -``` - > help -``` -will give you a list of available commands. - -As a common convention in this Tutorial, we will use -- ``%`` as a prompt that marks system commands -- ``>`` as a prompt that marks GF commands - - -Thus you should not type these prompts, but only the lines that -follow them. - - - -%--! -=The .cf grammar format= - -Now you are ready to try out your first grammar. -We start with one that is not written in the GF language, but -in the much more common BNF notation (Backus Naur Form). The GF -program understands a variant of this notation and translates it -internally to GF's own representation. - -To get started, type (or copy) the following lines into a file named -``food.cf``: -``` -Is. S ::= Item "is" Quality ; -That. Item ::= "that" Kind ; -This. Item ::= "this" Kind ; -QKind. Kind ::= Quality Kind ; -Cheese. Kind ::= "cheese" ; -Fish. Kind ::= "fish" ; -Wine. Kind ::= "wine" ; -Italian. Quality ::= "Italian" ; -Boring. Quality ::= "boring" ; -Delicious. Quality ::= "delicious" ; -Expensive. Quality ::= "expensive" ; -Fresh. Quality ::= "fresh" ; -Very. Quality ::= "very" Quality ; -Warm. Quality ::= "warm" ; -``` -For those who know ordinary BNF, the -notation we use includes one extra element: a **label** appearing -as the first element of each rule and terminated by a full stop. - -The grammar we wrote defines a set of phrases usable for speaking about food. -It builds **sentences** (``S``) by assigning ``Quality``s to -``Item``s. ``Item``s are build from ``Kind``s by prepending the -word "this" or "that". ``Kind``s are either **atomic**, such as -"cheese" and "wine", or formed by prepending a ``Quality`` to a -``Kind``. A ``Quality`` is either atomic, such as "Italian" and "boring", -or built by another ``Quality`` by prepending "very". Those familiar with -the context-free grammar notation will notice that, for instance, the -following sentence can be built using this grammar: -``` - this delicious Italian wine is very very expensive -``` - - - -%--! -==Importing grammars and parsing strings== - -The first GF command needed when using a grammar is to **import** it. -The command has a long name, ``import``, and a short name, ``i``. -You can type either -``` - > import food.cf -``` -or -``` - > i food.cf -``` -to get the same effect. -The effect is that the GF program **compiles** your grammar into an internal -representation, and shows a new prompt when it is ready. It will also show how much -CPU time is consumed: -``` - > i food.cf - - parsing cf food.cf 12 msec - 16 msec - > -``` -You can now use GF for **parsing**: -``` - > parse "this cheese is delicious" - Is (This Cheese) Delicious - - > p "that wine is very very Italian" - Is (That Wine) (Very (Very Italian)) -``` -The ``parse`` (= ``p``) command takes a **string** -(in double quotes) and returns an **abstract syntax tree** - the thing -beginning with ``Is``. Trees are built from the rule labels given in the -grammar, and record the ways in which the rules are used to produce the -strings. A tree is, in general, something easier than a string -for a machine to understand and to process further. - -Strings that return a tree when parsed do so in virtue of the grammar -you imported. Try parsing something else, and you fail -``` - > p "hello world" - Unknown words: hello world -``` - -**Exercise**. Extend the grammar ``food.cf`` by ten new food kinds and -qualities, and run the parser with new kinds of examples. - - -**Exercise**. Add a rule that enables questions of the form -//is this cheese Italian//. - - - -**Exercise**. Add the rule -``` - IsVery. S ::= Item "is" "very" Quality ; -``` -and see what happens when parsing ``this wine is very very Italian``. -You have just made the grammar **ambiguous**: it now assigns several -trees to some strings. - - -**Exercise**. Modify the grammar so that at most one ``Quality`` may -attach to a given ``Kind``. Thus //boring Italian fish// will no longer -be recognized. - - - - -%--! -==Generating trees and strings== - -You can also use GF for **linearizing** -(``linearize = l``). This is the inverse of -parsing, taking trees into strings: -``` - > linearize Is (That Wine) Warm - that wine is warm -``` -What is the use of this? Typically not that you type in a tree at -the GF prompt. The utility of linearization comes from the fact that -you can obtain a tree from somewhere else. One way to do so is -**random generation** (``generate_random = gr``): -``` - > generate_random - Is (This (QKind Italian Fish)) Fresh -``` -Now you can copy the tree and paste it to the ``linearize command``. -Or, more conveniently, feed random generation into linearization by using -a **pipe**. -``` - > gr | l - this Italian fish is fresh -``` -Pipes in GF work much the same way as Unix pipes: they feed the output -of one command into another command as its input. - - -%--! -==Visualizing trees== - -The gibberish code with parentheses returned by the parser does not -look like trees. Why is it called so? From the abstract mathematical -point of view, trees are a data structure that -represents **nesting**: trees are branching entities, and the branches -are themselves trees. Parentheses give a linear representation of trees, -useful for the computer. But the human eye may prefer to see a visualization; -for this purpose, GF provides the command ``visualizre_tree = vt``, to which -parsing (and any other tree-producing command) can be piped: - -``` - > parse "this delicious cheese is very Italian" | vt -``` - -[Tree2.png] - -This command uses the programs Graphviz and Ghostview, which you -might not have, but which are freely available on the web. - - - -%--! -==Some random-generated sentences== - -Random generation is a good way to test a grammar; it can also -be fun. So you may want to -generate ten strings with one and the same command: -``` - > gr -number=10 | l - that wine is boring - that fresh cheese is fresh - that cheese is very boring - this cheese is Italian - that expensive cheese is expensive - that fish is fresh - that wine is very Italian - this wine is Italian - this cheese is boring - this fish is boring -``` - - -%--! -==Systematic generation== - -To generate //all// sentence that a grammar -can generate, use the command ``generate_trees = gt``. -``` - > generate_trees | l - that cheese is very Italian - that cheese is very boring - that cheese is very delicious - that cheese is very expensive - that cheese is very fresh - ... - this wine is expensive - this wine is fresh - this wine is warm - -``` -You get quite a few trees but not all of them: only up to a given -**depth** of trees. To see how you can get more, use the -``help = h`` command, -``` - > help gt -``` - -**Exercise**. If the command ``gt`` generated all -trees in your grammar, it would never terminate. Why? - -**Exercise**. Measure how many trees the grammar gives with depths 4 and 5, -respectively. You use the Unix **word count** command ``wc`` to count lines. -**Hint**. You can pipe the output of a GF command into a Unix command by -using the escape ``?``, as follows: -``` - > generate_trees | ? wc -``` - - - - - -%--! -==More on pipes; tracing== - -A pipe of GF commands can have any length, but the "output type" -(either string or tree) of one command must always match the "input type" -of the next command. - -The intermediate results in a pipe can be observed by putting the -**tracing** flag ``-tr`` to each command whose output you -want to see: -``` - > gr -tr | l -tr | p - - Is (This Cheese) Boring - this cheese is boring - Is (This Cheese) Boring -``` -This facility is good for test purposes: for instance, you -may want to see if a grammar is **ambiguous**, i.e. -contains strings that can be parsed in more than one way. - -**Exercise**. Extend the grammar ``food.cf`` so that it produces ambiguous strings, -and try out the ambiguity test. - - - - -%--! -==Writing and reading files== - -To save the outputs of GF commands into a file, you can -pipe it to the ``write_file = wf`` command, -``` - > gr -number=10 | l | write_file exx.tmp -``` -You can read the file back to GF with the -``read_file = rf`` command, -``` - > read_file exx.tmp | p -lines -``` -Notice the flag ``-lines`` given to the parsing -command. This flag tells GF to parse each line of -the file separately. Without the flag, the grammar could -not recognize the string in the file, because it is not -a sentence but a sequence of ten sentences. - - - - -%--! -=The .gf grammar format= - -To see GF's internal representation of a grammar -that you have imported, you can give the command -``print_grammar = pg``, -``` - > print_grammar -``` -The output is quite unreadable at this stage, and you may feel happy that -you did not need to write the grammar in that notation, but that the -GF grammar compiler produced it. - -However, we will now start the demonstration -how GF's own notation gives you -much more expressive power than the ``.cf`` -format. We will introduce the ``.gf`` format by presenting -another way of defining the same grammar as in -``food.cf``. -Then we will show how the full GF grammar format enables you -to do things that are not possible in the context-free format. - - -%--! -==Abstract and concrete syntax== - -A GF grammar consists of two main parts: - -- **abstract syntax**, defining what syntax trees there are -- **concrete syntax**, defining how trees are linearized into strings - - -The context-free format fuses these two things together, but it is always -possible to take them apart. For instance, the sentence formation rule -``` - Is. S ::= Item "is" Quality ; -``` -is interpreted as the following pair of GF rules: -``` - fun Is : Item -> Quality -> S ; - lin Is item quality = {s = item.s ++ "is" ++ quality.s} ; -``` -The former rule, with the keyword ``fun``, belongs to the abstract syntax. -It defines the **function** -``Is`` which constructs syntax trees of form -(``Is`` //item// //quality//). - -The latter rule, with the keyword ``lin``, belongs to the concrete syntax. -It defines the **linearization function** for -syntax trees of form (``Is`` //item// //quality//). - - -%--! -==Judgement forms== - -Rules in a GF grammar are called **judgements**, and the keywords -``fun`` and ``lin`` are used for distinguishing between two -**judgement forms**. Here is a summary of the most important -judgement forms: - - - abstract syntax - - | form | reading | - | ``cat`` C | C is a category - | ``fun`` f ``:`` A | f is a function of type A - - - concrete syntax - - | form | reading | - | ``lincat`` C ``=`` T | category C has linearization type T - | ``lin`` f ``=`` t | function f has linearization t - - - -We return to the precise meanings of these judgement forms later. -First we will look at how judgements are grouped into modules, and -show how the food grammar is -expressed by using modules and judgements. - - -%--! -==Module types== - -A GF grammar consists of **modules**, -into which judgements are grouped. The most important -module forms are - - - ``abstract`` A ``=`` M, abstract syntax A with judgements in - the module body M. - - ``concrete`` C ``of`` A ``=`` M, concrete syntax C of the - abstract syntax A, with judgements in the module body M. - - -%--! -==Basic types and function types== - -The nonterminals of a context-free grammar, i.e. categories, -are called **basic types** in the type system of GF. In addition -to them, there are **function types** such as -``` - Item -> Quality -> S -``` -This type is read "a function from iterms and qualities to sentences". -The last type in the arrow-separated sequence is the **value type** -of the function type, the earlier types are its **argument types**. - - - - -%--! -==Records and strings== - -The linearization type of a category is a **record type**, with -zero of more **fields** of different types. The simplest record -type used for linearization in GF is -``` - {s : Str} -``` -which has one field, with **label** ``s`` and type ``Str``. - -Examples of records of this type are -``` - {s = "foo"} - {s = "hello" ++ "world"} -``` - -Whenever a record ``r`` of type ``{s : Str}`` is given, -``r.s`` is an object of type ``Str``. This is -a special case of the **projection** rule, allowing the extraction -of fields from a record: - -- if //r// : ``{`` ... //p// : //T// ... ``}`` then //r.p// : //T// - - -The type ``Str`` is really the type of **token lists**, but -most of the time one can conveniently think of it as the type of strings, -denoted by string literals in double quotes. - -Notice that -``` "hello world" -is not recommended as an expression of type ``Str``. It denotes -a token with a space in it, and will usually -not work with the lexical analysis that precedes parsing. A shorthand -exemplified by -``` - ["hello world and people"] === "hello" ++ "world" ++ "and" ++ "people" -``` -can be used for lists of tokens. The expression -``` - [] -``` -denotes the empty token list. - - - -%--! -==An abstract syntax example== - -To express the abstract syntax of ``food.cf`` in -a file ``Food.gf``, we write two kinds of judgements: - -- Each category is introduced by a ``cat`` judgement. -- Each rule label is introduced by a ``fun`` judgement, - with the type formed from the nonterminals of the rule. - - -``` - abstract Food = { - - cat - S ; Item ; Kind ; Quality ; - - fun - Is : Item -> Quality -> S ; - This, That : Kind -> Item ; - QKind : Quality -> Kind -> Kind ; - Wine, Cheese, Fish : Kind ; - Very : Quality -> Quality ; - Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ; - } -``` -Notice the use of shorthands permitting the sharing of -the keyword in subsequent judgements, -``` - cat S ; Item ; === cat S ; cat Item ; -``` -and of the type in subsequent ``fun`` judgements, -``` - fun Wine, Fish : Kind ; === - fun Wine : Kind ; Fish : Kind ; === - fun Wine : Kind ; fun Fish : Kind ; -``` -The order of judgements in a module is free. - -**Exercise**. Extend the abstract syntax ``Food`` with ten new -kinds and qualities, and with questions of the form -//is this wine Italian//. - - - -%--! -==A concrete syntax example== - -Each category introduced in ``Food.gf`` is -given a ``lincat`` rule, and each -function is given a ``lin`` rule. Similar shorthands -apply as in ``abstract`` modules. -``` - concrete FoodEng of Food = { - - lincat - S, Item, Kind, Quality = {s : Str} ; - - lin - Is item quality = {s = item.s ++ "is" ++ quality.s} ; - This kind = {s = "this" ++ kind.s} ; - That kind = {s = "that" ++ kind.s} ; - QKind quality kind = {s = quality.s ++ kind.s} ; - Wine = {s = "wine"} ; - Cheese = {s = "cheese"} ; - Fish = {s = "fish"} ; - Very quality = {s = "very" ++ quality.s} ; - Fresh = {s = "fresh"} ; - Warm = {s = "warm"} ; - Italian = {s = "Italian"} ; - Expensive = {s = "expensive"} ; - Delicious = {s = "delicious"} ; - Boring = {s = "boring"} ; - } -``` - -**Exercise**. Extend the concrete syntax ``FoodEng`` so that it -matches the abstract syntax defined in the exercise of the previous -section. What happens if the concrete syntax lacks some of the -new functions? - - - - -%--! -==Modules and files== - -GF uses suffixes to recognize different file formats. The most -important ones are: -- Source files: Module name + ``.gf`` = file name -- Target files: each module is compiled into a ``.gfc`` file. - - -Import ``FoodEng.gf`` and see what happens: -``` - > i FoodEng.gf - - compiling Food.gf... wrote file Food.gfc 16 msec - - compiling FoodEng.gf... wrote file FoodEng.gfc 20 msec -``` -The GF program does not only read the file -``FoodEng.gf``, but also all other files that it -depends on - in this case, ``Food.gf``. - -For each file that is compiled, a ``.gfc`` file -is generated. The GFC format (="GF Canonical") is the -"machine code" of GF, which is faster to process than -GF source files. When reading a module, GF decides whether -to use an existing ``.gfc`` file or to generate -a new one, by looking at modification times. - -**Exercise**. What happens when you import ``FoodEng.gf`` for -a second time? Try this in different situations: -- Right after importing it the first time (the modules are kept in - the memory of GF and need no reloading). -- After issuing the command ``empty`` (``e``), which clears the memory - of GF. -- After making a small change in ``FoodEng.gf``, be it only an added space. -- After making a change in ``Food.gf``. - - - -%--! -=Multilingual grammars and translation= - -The main advantage of separating abstract from concrete syntax is that -one abstract syntax can be equipped with many concrete syntaxes. -A system with this property is called a **multilingual grammar**. - -Multilingual grammars can be used for applications such as -translation. Let us build an Italian concrete syntax for -``Food`` and then test the resulting -multilingual grammar. - - - - -%--! -==An Italian concrete syntax== - -``` -concrete FoodIta of Food = { - - lincat - S, Item, Kind, Quality = {s : Str} ; - - lin - Is item quality = {s = item.s ++ "è" ++ quality.s} ; - This kind = {s = "questo" ++ kind.s} ; - That kind = {s = "quello" ++ kind.s} ; - QKind quality kind = {s = kind.s ++ quality.s} ; - Wine = {s = "vino"} ; - Cheese = {s = "formaggio"} ; - Fish = {s = "pesce"} ; - Very quality = {s = "molto" ++ quality.s} ; - Fresh = {s = "fresco"} ; - Warm = {s = "caldo"} ; - Italian = {s = "italiano"} ; - Expensive = {s = "caro"} ; - Delicious = {s = "delizioso"} ; - Boring = {s = "noioso"} ; - -} -``` - -**Exercise**. Write a concrete syntax of ``Food`` for some other language. -You will probably end up with grammatically incorrect output - but don't -worry about this yet. - -**Exercise**. If you have written ``Food`` for German, Swedish, or some -other language, test with random or exhaustive generation what constructs -come out incorrect, and prepare a list of those ones that cannot be helped -with the currently available fragment of GF. - - -%--! -==Using a multilingual grammar== - -Import the two grammars in the same GF session. -``` - > i FoodEng.gf - > i FoodIta.gf -``` -Try generation now: -``` - > gr | l - quello formaggio molto noioso è italiano - - > gr | l -lang=FoodEng - this fish is warm -``` -Translate by using a pipe: -``` - > p -lang=FoodEng "this cheese is very delicious" | l -lang=FoodIta - questo formaggio è molto delizioso -``` -Generate a **multilingual treebank**, i.e. a set of trees with their -translations in different languages: -``` - > gr -number=2 | tree_bank - - Is (That Cheese) (Very Boring) - quello formaggio è molto noioso - that cheese is very boring - - Is (That Cheese) Fresh - quello formaggio è fresco - that cheese is fresh -``` -The ``lang`` flag tells GF which concrete syntax to use in parsing and -linearization. By default, the flag is set to the last-imported grammar. -To see what grammars are in scope and which is the main one, use the command -``print_options = po``: -``` - > print_options - main abstract : Food - main concrete : FoodIta - actual concretes : FoodIta FoodEng -``` -You can change the main grammar by the command ``change_main = cm``: -``` - > change_main FoodEng - main abstract : Food - main concrete : FoodEng - actual concretes : FoodIta FoodEng -``` - - -%--! -==Translation session== - -If translation is what you want to do with a set of grammars, a convenient -way to do it is to open a ``translation_session = ts``. In this session, -you can translate between all the languages that are in scope. -A dot ``.`` terminates the translation session. -``` - > ts - - trans> that very warm cheese is boring - quello formaggio molto caldo è noioso - that very warm cheese is boring - - trans> questo vino molto italiano è molto delizioso - questo vino molto italiano è molto delizioso - this very Italian wine is very delicious - - trans> . - > -``` - - - -%--! -==Translation quiz== - -This is a simple language exercise that can be automatically -generated from a multilingual grammar. The system generates a set of -random sentences, displays them in one language, and checks the user's -answer given in another language. The command ``translation_quiz = tq`` -makes this in a subshell of GF. -``` - > translation_quiz FoodEng FoodIta - - Welcome to GF Translation Quiz. - The quiz is over when you have done at least 10 examples - with at least 75 % success. - You can interrupt the quiz by entering a line consisting of a dot ('.'). - - this fish is warm - questo pesce è caldo - > Yes. - Score 1/1 - - this cheese is Italian - questo formaggio è noioso - > No, not questo formaggio è noioso, but - questo formaggio è italiano - - Score 1/2 - this fish is expensive -``` -You can also generate a list of translation exercises and save it in a -file for later use, by the command ``translation_list = tl`` -``` - > translation_list -number=25 FoodEng FoodIta | write_file transl.txt -``` -The ``number`` flag gives the number of sentences generated. - - - - -%--! -=Grammar architecture= - -==Extending a grammar== - -The module system of GF makes it possible to **extend** a -grammar in different ways. The syntax of extension is -shown by the following example. We extend ``Food`` by -adding a category of questions and two new functions. -``` - abstract Morefood = Food ** { - cat - Question ; - fun - QIs : Item -> Quality -> Question ; - Pizza : Kind ; - - } -``` -Parallel to the abstract syntax, extensions can -be built for concrete syntaxes: -``` - concrete MorefoodEng of Morefood = FoodEng ** { - lincat - Question = {s : Str} ; - lin - QIs item quality = {s = "is" ++ item.s ++ quality.s} ; - Pizza = {s = "pizza"} ; - } -``` -The effect of extension is that all of the contents of the extended -and extending module are put together. We also say that the new -module **inherits** the contents of the old module. - - - -%--! -==Multiple inheritance== - -Specialized vocabularies can be represented as small grammars that -only do "one thing" each. For instance, the following are grammars -for fruit and mushrooms -``` - abstract Fruit = { - cat Fruit ; - fun Apple, Peach : Fruit ; - } - - abstract Mushroom = { - cat Mushroom ; - fun Cep, Agaric : Mushroom ; - } -``` -They can afterwards be combined into bigger grammars by using -**multiple inheritance**, i.e. extension of several grammars at the -same time: -``` - abstract Foodmarket = Food, Fruit, Mushroom ** { - fun - FruitKind : Fruit -> Kind ; - MushroomKind : Mushroom -> Kind ; - } -``` -At this point, you would perhaps like to go back to -``Food`` and take apart ``Wine`` to build a special -``Drink`` module. - - -%--! -==Visualizing module structure== - -When you have created all the abstract syntaxes and -one set of concrete syntaxes needed for ``Foodmarket``, -your grammar consists of eight GF modules. To see how their -dependences look like, you can use the command -``visualize_graph = vg``, -``` - > visualize_graph -``` -and the graph will pop up in a separate window. - -The graph uses - -- oval boxes for abstract modules -- square boxes for concrete modules -- black-headed arrows for inheritance -- white-headed arrows for the concrete-of-abstract relation - - -[Foodmarket.png] - - -Just as the ``visualize_tree = vt`` command, the open source tools -Ghostview and Graphviz are needed. - - -%--! -==System commands== - -To document your grammar, you may want to print the -graph into a file, e.g. a ``.png`` file that -can be included in an HTML document. You can do this -by first printing the graph into a file ``.dot`` and then -processing this file with the ``dot`` program (from the Graphviz package). -``` - > pm -printer=graph | wf Foodmarket.dot - > ! dot -Tpng Foodmarket.dot > Foodmarket.png -``` -The latter command is a Unix command, issued from GF by using the -shell escape symbol ``!``. The resulting graph was shown in the previous section. - -The command ``print_multi = pm`` is used for printing the current multilingual -grammar in various formats, of which the format ``-printer=graph`` just -shows the module dependencies. Use ``help`` to see what other formats -are available: -``` - > help pm - > help -printer - > help help -``` -Another form of system commands are those usable in GF pipes. The escape symbol -is then ``?``. -``` - > generate_trees | ? wc -``` - - - -%--! -=Resource modules= - - -==The golden rule of functional programming== - -In comparison to the ``.cf`` format, the ``.gf`` format looks rather -verbose, and demands lots more characters to be written. You have probably -done this by the copy-paste-modify method, which is a common way to -avoid repeating work. - -However, there is a more elegant way to avoid repeating work than the copy-and-paste -method. The **golden rule of functional programming** says that -- whenever you find yourself programming by copy-and-paste, write a function instead. - - -A function separates the shared parts of different computations from the -changing parts, its **arguments**, or **parameters**. -In functional programming languages, such as -[Haskell http://www.haskell.org], it is possible to share much more -code with functions than in imperative languages such as C and Java. - - -==Operation definitions== - -GF is a functional programming language, not only in the sense that -the abstract syntax is a system of functions (``fun``), but also because -functional programming can be used to define concrete syntax. This is -done by using a new form of judgement, with the keyword ``oper`` (for -**operation**), distinct from ``fun`` for the sake of clarity. -Here is a simple example of an operation: -``` - oper ss : Str -> {s : Str} = \x -> {s = x} ; -``` -The operation can be **applied** to an argument, and GF will -**compute** the application into a value. For instance, -``` - ss "boy" ===> {s = "boy"} -``` -(We use the symbol ``===>`` to indicate how an expression is -computed into a value; this symbol is not a part of GF) - -Thus an ``oper`` judgement includes the name of the defined operation, -its type, and an expression defining it. As for the syntax of the defining -expression, notice the **lambda abstraction** form ``\x -> t`` of -the function. - - - -%--! -==The ``resource`` module type== - -Operator definitions can be included in a concrete syntax. -But they are not really tied to a particular set of linearization rules. -They should rather be seen as **resources** -usable in many concrete syntaxes. - -The ``resource`` module type can be used to package -``oper`` definitions into reusable resources. Here is -an example, with a handful of operations to manipulate -strings and records. -``` - resource StringOper = { - oper - SS : Type = {s : Str} ; - ss : Str -> SS = \x -> {s = x} ; - cc : SS -> SS -> SS = \x,y -> ss (x.s ++ y.s) ; - prefix : Str -> SS -> SS = \p,x -> ss (p ++ x.s) ; - } -``` -Resource modules can extend other resource modules, in the -same way as modules of other types can extend modules of the -same type. Thus it is possible to build resource hierarchies. - - - -%--! -==Opening a resource== - -Any number of ``resource`` modules can be -**opened** in a ``concrete`` syntax, which -makes definitions contained -in the resource usable in the concrete syntax. Here is -an example, where the resource ``StringOper`` is -opened in a new version of ``FoodEng``. -``` - concrete Food2Eng of Food = open StringOper in { - - lincat - S, Item, Kind, Quality = SS ; - - lin - Is item quality = cc item (prefix "is" quality) ; - This k = prefix "this" k ; - That k = prefix "that" k ; - QKind k q = cc k q ; - Wine = ss "wine" ; - Cheese = ss "cheese" ; - Fish = ss "fish" ; - Very = prefix "very" ; - Fresh = ss "fresh" ; - Warm = ss "warm" ; - Italian = ss "Italian" ; - Expensive = ss "expensive" ; - Delicious = ss "delicious" ; - Boring = ss "boring" ; - - } -``` -**Exercise**. Use the same string operations to write ``FoodIta`` -more concisely. - - - -%--! -==Partial application== - -GF, like Haskell, permits **partial application** of -functions. An example of this is the rule -``` - lin This k = prefix "this" k ; -``` -which can be written more concisely -``` - lin This = prefix "this" ; -``` -The first form is perhaps more intuitive to write -but, once you get used to partial application, you will appreciate its -conciseness and elegance. The logic of partial application -is known as **currying**, with a reference to Haskell B. Curry. -The idea is that any //n//-place function can be defined as a 1-place -function whose value is an //n-//1 -place function. Thus -``` - oper prefix : Str -> SS -> SS ; -``` -can be used as a 1-place function that takes a ``Str`` into a -function ``SS -> SS``. The expected linearization of ``This`` is exactly -a function of such a type, operating on an argument of type ``Kind`` -whose linearization is of type ``SS``. Thus we can define the -linearization directly as ``prefix "this"``. - -**Exercise**. Define an operation ``infix`` analogous to ``prefix``, -such that it allows you to write -``` - lin Is = infix "is" ; -``` - - -%--! -==Testing resource modules== - -To test a ``resource`` module independently, you must import it -with the flag ``-retain``, which tells GF to retain ``oper`` definitions -in the memory; the usual behaviour is that ``oper`` definitions -are just applied to compile linearization rules -(this is called **inlining**) and then thrown away. -``` - > i -retain StringOper.gf -``` -The command ``compute_concrete = cc`` computes any expression -formed by operations and other GF constructs. For example, -``` - > compute_concrete prefix "in" (ss "addition") - { - s : Str = "in" ++ "addition" - } -``` - - - -%--! -==Division of labour== - -Using operations defined in resource modules is a -way to avoid repetitive code. -In addition, it enables a new kind of modularity -and division of labour in grammar writing: grammarians familiar with -the linguistic details of a language can make their knowledge -available through resource grammar modules, whose users only need -to pick the right operations and not to know their implementation -details. - -In the following sections, we will go through some -such linguistic details. The programming constructs needed when -doing this are useful for all GF programmers, even if they don't -hand-code the linguistics of their applications but get them -from libraries. It is also useful to know something about the -linguistic concepts of inflection, agreement, and parts of speech. - - - - -%--! -=Morphology= - -Suppose we want to say, with the vocabulary included in -``Food.gf``, things like -``` - all Italian wines are delicious -``` -The new grammatical facility we need are the plural forms -of nouns and verbs (//wines, are//), as opposed to their -singular forms. - -The introduction of plural forms requires two things: -- the **inflection** of nouns and verbs in singular and plural -- the **agreement** of the verb to subject: - the verb must have the same number as the subject - - -Different languages have different rules of inflection and agreement. -For instance, Italian has also agreement in gender (masculine vs. feminine). -We want to express such special features of languages in the -concrete syntax while ignoring them in the abstract syntax. - -To be able to do all this, we need one new judgement form -and many new expression forms. -We also need to generalize linearization types -from strings to more complex types. - -**Exercise**. Make a list of the possible forms that nouns, -adjectives, and verbs can have in some languages that you know. - - -%--! -==Parameters and tables== - -We define the **parameter type** of number in Englisn by -using a new form of judgement: -``` - param Number = Sg | Pl ; -``` -To express that ``Kind`` expressions in English have a linearization -depending on number, we replace the linearization type ``{s : Str}`` -with a type where the ``s`` field is a **table** depending on number: -``` - lincat Kind = {s : Number => Str} ; -``` -The **table type** ``Number => Str`` is in many respects similar to -a function type (``Number -> Str``). The main difference is that the -argument type of a table type must always be a parameter type. This means -that the argument-value pairs can be listed in a finite table. The following -example shows such a table: -``` - lin Cheese = {s = table { - Sg => "cheese" ; - Pl => "cheeses" - } - } ; -``` -The table consists of **branches**, where a **pattern** on the -left of the arrow ``=>`` is assigned a **value** on the right. - -The application of a table to a parameter is done by the **selection** -operator ``!``. For instance, -``` - table {Sg => "cheese" ; Pl => "cheeses"} ! Pl -``` -is a selection that computes into the value ``"cheeses"``. -This computation is performed by **pattern matching**: return -the value from the first branch whose pattern matches the -selection argument. Thus -``` - table {Sg => "cheese" ; Pl => "cheeses"} ! Pl - ===> "cheeses" -``` - -**Exercise**. In a previous exercise, we make a list of the possible -forms that nouns, adjectives, and verbs can have in some languages that -you know. Now take some of the results and implement them by -using parameter type definitions and tables. Write them into a ``resource`` -module, which you can test by using the command ``compute_concrete``. - - - -%--! -==Inflection tables and paradigms== - -All English common nouns are inflected in number, most of them in the -same way: the plural form is obtained from the singular by adding the -ending //s//. This rule is an example of -a **paradigm** - a formula telling how the inflection -forms of a word are formed. - -From the GF point of view, a paradigm is a function that takes a **lemma** - -also known as a **dictionary form** - and returns an inflection -table of desired type. Paradigms are not functions in the sense of the -``fun`` judgements of abstract syntax (which operate on trees and not -on strings), but operations defined in ``oper`` judgements. -The following operation defines the regular noun paradigm of English: -``` - oper regNoun : Str -> {s : Number => Str} = \x -> { - s = table { - Sg => x ; - Pl => x + "s" - } - } ; -``` -The **gluing** operator ``+`` tells that -the string held in the variable ``x`` and the ending ``"s"`` -are written together to form one **token**. Thus, for instance, -``` - (regNoun "cheese").s ! Pl ---> "cheese" + "s" ---> "cheeses" -``` - -**Exercise**. Identify cases in which the ``regNoun`` paradigm does not -apply in English, and implement some alternative paradigms. - -**Exercise**. Implement a paradigm for regular verbs in English. - -**Exercise**. Implement some regular paradigms for other languages you have -considered in earlier exercises. - - -%--! -==Worst-case functions and data abstraction== - -Some English nouns, such as ``mouse``, are so irregular that -it makes no sense to see them as instances of a paradigm. Even -then, it is useful to perform **data abstraction** from the -definition of the type ``Noun``, and introduce a constructor -operation, a **worst-case function** for nouns: -``` - oper mkNoun : Str -> Str -> Noun = \x,y -> { - s = table { - Sg => x ; - Pl => y - } - } ; -``` -Thus we can define -``` - lin Mouse = mkNoun "mouse" "mice" ; -``` -and -``` - oper regNoun : Str -> Noun = \x -> - mkNoun x (x + "s") ; -``` -instead of writing the inflection tables explicitly. - -The grammar engineering advantage of worst-case functions is that -the author of the resource module may change the definitions of -``Noun`` and ``mkNoun``, and still retain the -interface (i.e. the system of type signatures) that makes it -correct to use these functions in concrete modules. In programming -terms, ``Noun`` is then treated as an **abstract datatype**. - - - -%--! -==A system of paradigms using Prelude operations== - -In addition to the completely regular noun paradigm ``regNoun``, -some other frequent noun paradigms deserve to be -defined, for instance, -``` - sNoun : Str -> Noun = \kiss -> mkNoun kiss (kiss + "es") ; -``` -What about nouns like //fly//, with the plural //flies//? The already -available solution is to use the longest common prefix -//fl// (also known as the **technical stem**) as argument, and define -``` - yNoun : Str -> Noun = \fl -> mkNoun (fl + "y") (fl + "ies") ; -``` -But this paradigm would be very unintuitive to use, because the technical stem -is not an existing form of the word. A better solution is to use -the lemma and a string operator ``init``, which returns the initial segment (i.e. -all characters but the last) of a string: -``` - yNoun : Str -> Noun = \fly -> mkNoun fly (init fly + "ies") ; -``` -The operation ``init`` belongs to a set of operations in the -resource module ``Prelude``, which therefore has to be -``open``ed so that ``init`` can be used. Its dual is ``last``: -``` - > cc init "curry" - "curr" - - > cc last "curry" - "y" -``` -As generalizations of the library functions ``init`` and ``last``, GF has -two predefined funtions: -``Predef.dp``, which "drops" suffixes of any length, -and ``Predef.tk``, which "takes" a prefix -just omitting a number of characters from the end. For instance, -``` - > cc Predef.tk 3 "worried" - "worr" - > cc Predef.dp 3 "worried" - "ied" -``` -The prefix ``Predef`` is given to a handful of functions that could -not be defined internally in GF. They are available in all modules -without explicit ``open`` of the module ``Predef``. - - - - - -%--! -==Pattern matching== - -We have so far built all expressions of the ``table`` form -from branches whose patterns are constants introduced in -``param`` definitions, as well as constant strings. -But there are more expressive patterns. Here is a summary of the possible forms: -- a variable pattern (identifier other than constant parameter) matches anything -- the wild card ``_`` matches anything -- a string literal pattern, e.g. ``"s"``, matches the same string -- a disjunctive pattern ``P | ... | Q`` matches anything that - one of the disjuncts matches - - -Pattern matching is performed in the order in which the branches -appear in the table: the branch of the first matching pattern is followed. - -As syntactic sugar, one-branch tables can be written concisely, -``` - \\P,...,Q => t === table {P => ... table {Q => t} ...} -``` -Finally, the ``case`` expressions common in functional -programming languages are syntactic sugar for table selections: -``` - case e of {...} === table {...} ! e -``` - - -%--! -==An intelligent noun paradigm using pattern matching== - -It may be hard for the user of a resource morphology to pick the right -inflection paradigm. A way to help this is to define a more intelligent -paradigm, which chooses the ending by first analysing the lemma. -The following variant for English regular nouns puts together all the -previously shown paradigms, and chooses one of them on the basis of -the final letter of the lemma (found by the prelude operator ``last``). -``` - regNoun : Str -> Noun = \s -> case last s of { - "s" | "z" => mkNoun s (s + "es") ; - "y" => mkNoun s (init s + "ies") ; - _ => mkNoun s (s + "s") - } ; -``` -This definition displays many GF expression forms not shown befores; -these forms are explained in the next section. - -The paradigms ``regNoun`` does not give the correct forms for -all nouns. For instance, //mouse - mice// and -//fish - fish// must be given by using ``mkNoun``. -Also the word //boy// would be inflected incorrectly; to prevent -this, either use ``mkNoun`` or modify -``regNoun`` so that the ``"y"`` case does not -apply if the second-last character is a vowel. - -**Exercise**. Extend the ``regNoun`` paradigm so that it takes care -of all variations there are in English. Test it with the nouns -//ax//, //bamboo//, //boy//, //bush//, //hero//, //match//. -**Hint**. The library functions ``Predef.dp`` and ``Predef.tk`` -are useful in this task. - -**Exercise**. The same rules that form plural nouns in English also -apply in the formation of third-person singular verbs. -Write a regular verb paradigm that uses this idea, but first -rewrite ``regNoun`` so that the analysis needed to build //s//-forms -is factored out as a separate ``oper``, which is shared with -``regVerb``. - - - - -%--! -==Morphological resource modules== - -A common idiom is to -gather the ``oper`` and ``param`` definitions -needed for inflecting words in -a language into a morphology module. Here is a simple -example, [``MorphoEng`` resource/MorphoEng.gf]. -``` - --# -path=.:prelude - - resource MorphoEng = open Prelude in { - - param - Number = Sg | Pl ; - - oper - Noun, Verb : Type = {s : Number => Str} ; - - mkNoun : Str -> Str -> Noun = \x,y -> { - s = table { - Sg => x ; - Pl => y - } - } ; - - regNoun : Str -> Noun = \s -> case last s of { - "s" | "z" => mkNoun s (s + "es") ; - "y" => mkNoun s (init s + "ies") ; - _ => mkNoun s (s + "s") - } ; - - mkVerb : Str -> Str -> Verb = \x,y -> mkNoun y x ; - - regVerb : Str -> Verb = \s -> case last s of { - "s" | "z" => mkVerb s (s + "es") ; - "y" => mkVerb s (init s + "ies") ; - "o" => mkVerb s (s + "es") ; - _ => mkVerb s (s + "s") - } ; - } -``` -The first line gives as a hint to the compiler the -**search path** needed to find all the other modules that the -module depends on. The directory ``prelude`` is a subdirectory of -``GF/lib``; to be able to refer to it in this simple way, you can -set the environment variable ``GF_LIB_PATH`` to point to this -directory. - - - -=Using parameters in concrete syntax= - -We can now enrich the concrete syntax definitions to -comprise morphology. This will involve a more radical -variation between languages (e.g. English and Italian) -then just the use of different words. In general, -parameters and linearization types are different in -different languages - but this does not prevent the -use of a common abstract syntax. - - -%--! -==Parametric vs. inherent features, agreement== - -The rule of subject-verb agreement in English says that the verb -phrase must be inflected in the number of the subject. This -means that a noun phrase (functioning as a subject), inherently -//has// a number, which it passes to the verb. The verb does not -//have// a number, but must be able to //receive// whatever number the -subject has. This distinction is nicely represented by the -different linearization types of **noun phrases** and **verb phrases**: -``` - lincat NP = {s : Str ; n : Number} ; - lincat VP = {s : Number => Str} ; -``` -We say that the number of ``NP`` is an **inherent feature**, -whereas the number of ``NP`` is a **variable feature** (or a -**parametric feature**). - -The agreement rule itself is expressed in the linearization rule of -the predication function: -``` - lin PredVP np vp = {s = np.s ++ vp.s ! np.n} ; -``` -The following section will present -``FoodsEng``, assuming the abstract syntax ``Foods`` -that is similar to ``Food`` but also has the -plural determiners ``These`` and ``Those``. -The reader is invited to inspect the way in which agreement works in -the formation of sentences. - - -%--! -==English concrete syntax with parameters== - -The grammar uses both -[``Prelude`` ../../lib/prelude/Prelude.gf] and -[``MorphoEng`` resource/MorphoEng]. -We will later see how to make the grammar even -more high-level by using a resource grammar library -and parametrized modules. -``` ---# -path=.:resource:prelude - -concrete FoodsEng of Foods = open Prelude, MorphoEng in { - - lincat - S, Quality = SS ; - Kind = {s : Number => Str} ; - Item = {s : Str ; n : Number} ; - - lin - Is item quality = ss (item.s ++ (mkVerb "are" "is").s ! item.n ++ quality.s) ; - This = det Sg "this" ; - That = det Sg "that" ; - These = det Pl "these" ; - Those = det Pl "those" ; - QKind quality kind = {s = \\n => quality.s ++ kind.s ! n} ; - Wine = regNoun "wine" ; - Cheese = regNoun "cheese" ; - Fish = mkNoun "fish" "fish" ; - Very = prefixSS "very" ; - Fresh = ss "fresh" ; - Warm = ss "warm" ; - Italian = ss "Italian" ; - Expensive = ss "expensive" ; - Delicious = ss "delicious" ; - Boring = ss "boring" ; - - oper - det : Number -> Str -> Noun -> {s : Str ; n : Number} = \n,d,cn -> { - s = d ++ cn.s ! n ; - n = n - } ; -} -``` - - - -%--! -==Hierarchic parameter types== - -The reader familiar with a functional programming language such as -[Haskell http://www.haskell.org] must have noticed the similarity -between parameter types in GF and **algebraic datatypes** (``data`` definitions -in Haskell). The GF parameter types are actually a special case of algebraic -datatypes: the main restriction is that in GF, these types must be finite. -(It is this restriction that makes it possible to invert linearization rules into -parsing methods.) - -However, finite is not the same thing as enumerated. Even in GF, parameter -constructors can take arguments, provided these arguments are from other -parameter types - only recursion is forbidden. Such parameter types impose a -hierarchic order among parameters. They are often needed to define -the linguistically most accurate parameter systems. - -To give an example, Swedish adjectives -are inflected in number (singular or plural) and -gender (uter or neuter). These parameters would suggest 2*2=4 different -forms. However, the gender distinction is done only in the singular. Therefore, -it would be inaccurate to define adjective paradigms using the type -``Gender => Number => Str``. The following hierarchic definition -yields an accurate system of three adjectival forms. -``` - param AdjForm = ASg Gender | APl ; - param Gender = Utr | Neutr ; -``` -Here is an example of pattern matching, the paradigm of regular adjectives. -``` - oper regAdj : Str -> AdjForm => Str = \fin -> table { - ASg Utr => fin ; - ASg Neutr => fin + "t" ; - APl => fin + "a" ; - } -``` -A constructor can be used as a pattern that has patterns as arguments. For instance, -the adjectival paradigm in which the two singular forms are the same, -can be defined -``` - oper plattAdj : Str -> AdjForm => Str = \platt -> table { - ASg _ => platt ; - APl => platt + "a" ; - } -``` - - -%--! -==Morphological analysis and morphology quiz== - -Even though morphology is in GF -mostly used as an auxiliary for syntax, it -can also be useful on its own right. The command ``morpho_analyse = ma`` -can be used to read a text and return for each word the analyses that -it has in the current concrete syntax. -``` - > rf bible.txt | morpho_analyse -``` -In the same way as translation exercises, morphological exercises can -be generated, by the command ``morpho_quiz = mq``. Usually, -the category is set to be something else than ``S``. For instance, -``` - > cd GF/lib/resource-1.0/ - > i french/IrregFre.gf - > morpho_quiz -cat=V - - Welcome to GF Morphology Quiz. - ... - - réapparaître : VFin VCondit Pl P2 - réapparaitriez - > No, not réapparaitriez, but - réapparaîtriez - Score 0/1 -``` -Finally, a list of morphological exercises can be generated -off-line and saved in a -file for later use, by the command ``morpho_list = ml`` -``` - > morpho_list -number=25 -cat=V | wf exx.txt -``` -The ``number`` flag gives the number of exercises generated. - - - -%--! -==Discontinuous constituents== - -A linearization type may contain more strings than one. -An example of where this is useful are English particle -verbs, such as //switch off//. The linearization of -a sentence may place the object between the verb and the particle: -//he switched it off//. - -The following judgement defines transitive verbs as -**discontinuous constituents**, i.e. as having a linearization -type with two strings and not just one. -``` - lincat TV = {s : Number => Str ; part : Str} ; -``` -This linearization rule -shows how the constituents are separated by the object in complementization. -``` - lin PredTV tv obj = {s = \\n => tv.s ! n ++ obj.s ++ tv.part} ; -``` -There is no restriction in the number of discontinuous constituents -(or other fields) a ``lincat`` may contain. The only condition is that -the fields must be of finite types, i.e. built from records, tables, -parameters, and ``Str``, and not functions. - -A mathematical result -about parsing in GF says that the worst-case complexity of parsing -increases with the number of discontinuous constituents. This is -potentially a reason to avoid discontinuous constituents. -Moreover, the parsing and linearization commands only give accurate -results for categories whose linearization type has a unique ``Str`` -valued field labelled ``s``. Therefore, discontinuous constituents -are not a good idea in top-level categories accessed by the users -of a grammar application. - - -%--! -==Free variation== - -Sometimes there are many alternative ways to define a concrete syntax. -For instance, the verb negation in English can be expressed both by -//does not// and //doesn't//. In linguistic terms, these expressions -are in **free variation**. The ``variants`` construct of GF can -be used to give a list of strings in free variation. For example, -``` - NegVerb verb = {s = variants {["does not"] ; "doesn't} ++ verb.s ! Pl} ; -``` -An empty variant list -``` - variants {} -``` -can be used e.g. if a word lacks a certain form. - -In general, ``variants`` should be used cautiously. It is not -recommended for modules aimed to be libraries, because the -user of the library has no way to choose among the variants. - - - -==Overloading of operations== - -Large libraries, such as the GF Resource Grammar Library, may define -hundreds of names, which can be unpractical -for both the library writer and the user. The writer has to invent longer -and longer names which are not always intuitive, -and the user has to learn or at least be able to find all these names. -A solution to this problem, adopted by languages such as C++, is **overloading**: -the same name can be used for several functions. When such a name is used, the -compiler performs **overload resolution** to find out which of the possible functions -is meant. The resolution is based on the types of the functions: all functions that -have the same name must have different types. - -In C++, functions with the same name can be scattered everywhere in the program. -In GF, they must be grouped together in ``overload`` groups. Here is an example -of an overload group, defining four ways to define nouns in Italian: -``` - oper mkN = overload { - mkN : Str -> N = -- regular nouns - mkN : Str -> Gender -> N = -- regular nouns with unexpected gender - mkN : Str -> Str -> N = -- irregular nouns - mkN : Str -> Str -> Gender -> N = -- irregular nouns with unexpected gender - } -``` -All of the following uses of ``mkN`` are easy to resolve: -``` - lin Pizza = mkN "pizza" ; -- Str -> N - lin Hand = mkN "mano" Fem ; -- Str -> Gender -> N - lin Man = mkN "uomo" "uomini" ; -- Str -> Str -> N -``` - - - - - - -%--! -=More constructs for concrete syntax= - -In this chapter, we go through constructs that are not necessary in simple grammars -or when the concrete syntax relies on libraries. But they are useful when -writing advanced concrete syntax implementations, such as resource grammar libraries. -This chapter can safely be skipped if the reader prefers to continue to the -chapter on using libraries. - - -%--! -==Local definitions== - -Local definitions ("``let`` expressions") are used in functional -programming for two reasons: to structure the code into smaller -expressions, and to avoid repeated computation of one and -the same expression. Here is an example, from -[``MorphoIta`` resource/MorphoIta.gf]: -``` - oper regNoun : Str -> Noun = \vino -> - let - vin = init vino ; - o = last vino - in - case o of { - "a" => mkNoun Fem vino (vin + "e") ; - "o" | "e" => mkNoun Masc vino (vin + "i") ; - _ => mkNoun Masc vino vino - } ; -``` - - -==Record extension and subtyping== - -Record types and records can be **extended** with new fields. For instance, -in German it is natural to see transitive verbs as verbs with a case. -The symbol ``**`` is used for both constructs. -``` - lincat TV = Verb ** {c : Case} ; - - lin Follow = regVerb "folgen" ** {c = Dative} ; -``` -To extend a record type or a record with a field whose label it -already has is a type error. - -A record type //T// is a **subtype** of another one //R//, if //T// has -all the fields of //R// and possibly other fields. For instance, -an extension of a record type is always a subtype of it. - -If //T// is a subtype of //R//, an object of //T// can be used whenever -an object of //R// is required. For instance, a transitive verb can -be used whenever a verb is required. - -**Contravariance** means that a function taking an //R// as argument -can also be applied to any object of a subtype //T//. - - - -==Tuples and product types== - -Product types and tuples are syntactic sugar for record types and records: -``` - T1 * ... * Tn === {p1 : T1 ; ... ; pn : Tn} - === {p1 = T1 ; ... ; pn = Tn} -``` -Thus the labels ``p1, p2,...`` are hard-coded. - - -==Record and tuple patterns== - -Record types of parameter types are also parameter types. -A typical example is a record of agreement features, e.g. French -``` - oper Agr : PType = {g : Gender ; n : Number ; p : Person} ; -``` -Notice the term ``PType`` rather than just ``Type`` referring to -parameter types. Every ``PType`` is also a ``Type``, but not vice-versa. - -Pattern matching is done in the expected way, but it can moreover -utilize partial records: the branch -``` - {g = Fem} => t -``` -in a table of type ``Agr => T`` means the same as -``` - {g = Fem ; n = _ ; p = _} => t -``` -Tuple patterns are translated to record patterns in the -same way as tuples to records; partial patterns make it -possible to write, slightly surprisingly, -``` - case of { - => t - ... - } -``` - - -%--! -==Regular expression patterns== - -To define string operations computed at compile time, such -as in morphology, it is handy to use regular expression patterns: - - //p// ``+`` //q// : token consisting of //p// followed by //q// - - //p// ``*`` : token //p// repeated 0 or more times - (max the length of the string to be matched) - - ``-`` //p// : matches anything that //p// does not match - - //x// ``@`` //p// : bind to //x// what //p// matches - - //p// ``|`` //q// : matches what either //p// or //q// matches - - -The last three apply to all types of patterns, the first two only to token strings. -As an example, we give a rule for the formation of English word forms -ending with an //s// and used in the formation of both plural nouns and -third-person present-tense verbs. -``` - add_s : Str -> Str = \w -> case w of { - _ + "oo" => w + "s" ; -- bamboo - _ + ("s" | "z" | "x" | "sh" | "o") => w + "es" ; -- bus, hero - _ + ("a" | "o" | "u" | "e") + "y" => w + "s" ; -- boy - x + "y" => x + "ies" ; -- fly - _ => w + "s" -- car - } ; -``` -Here is another example, the plural formation in Swedish 2nd declension. -The second branch uses a variable binding with ``@`` to cover the cases where an -unstressed pre-final vowel //e// disappears in the plural -(//nyckel-nycklar, seger-segrar, bil-bilar//): -``` - plural2 : Str -> Str = \w -> case w of { - pojk + "e" => pojk + "ar" ; - nyck + "e" + l@("l" | "r" | "n") => nyck + l + "ar" ; - bil => bil + "ar" - } ; -``` - - -Semantics: variables are always bound to the **first match**, which is the first -in the sequence of binding lists ``Match p v`` defined as follows. In the definition, -``p`` is a pattern and ``v`` is a value. The semantics is given in Haskell notation. -``` - Match (p1|p2) v = Match p1 ++ U Match p2 v - Match (p1+p2) s = [Match p1 s1 ++ Match p2 s2 | - i <- [0..length s], (s1,s2) = splitAt i s] - Match p* s = [[]] if Match "" s ++ Match p s ++ Match (p+p) s ++... /= [] - Match -p v = [[]] if Match p v = [] - Match c v = [[]] if c == v -- for constant and literal patterns c - Match x v = [[(x,v)]] -- for variable patterns x - Match x@p v = [[(x,v)]] + M if M = Match p v /= [] - Match p v = [] otherwise -- failure -``` -Examples: -- ``x + "e" + y`` matches ``"peter"`` with ``x = "p", y = "ter"`` -- ``x + "er"*`` matches ``"burgerer"`` with ``x = "burg" - - - -**Exercise**. Implement the German **Umlaut** operation on word stems. -The operation changes the vowel of the stressed stem syllable as follows: -//a// to //ä//, //au// to //äu//, //o// to //ö//, and //u// to //ü//. You -can assume that the operation only takes syllables as arguments. Test the -operation to see whether it correctly changes //Arzt// to //Ärzt//, -//Baum// to //Bäum//, //Topf// to //Töpf//, and //Kuh// to //Küh//. - - - - -%--! -==Prefix-dependent choices== - -Sometimes a token has different forms depending on the token -that follows. An example is the English indefinite article, -which is //an// if a vowel follows, //a// otherwise. -Which form is chosen can only be decided at run time, i.e. -when a string is actually build. GF has a special construct for -such tokens, the ``pre`` construct exemplified in -``` - oper artIndef : Str = - pre {"a" ; "an" / strs {"a" ; "e" ; "i" ; "o"}} ; -``` -Thus -``` - artIndef ++ "cheese" ---> "a" ++ "cheese" - artIndef ++ "apple" ---> "an" ++ "apple" -``` -This very example does not work in all situations: the prefix -//u// has no general rules, and some problematic words are -//euphemism, one-eyed, n-gram//. It is possible to write -``` - oper artIndef : Str = - pre {"a" ; - "a" / strs {"eu" ; "one"} ; - "an" / strs {"a" ; "e" ; "i" ; "o" ; "n-"} - } ; -``` - - -==Predefined types== - -GF has the following predefined categories in abstract syntax: -``` - cat Int ; -- integers, e.g. 0, 5, 743145151019 - cat Float ; -- floats, e.g. 0.0, 3.1415926 - cat String ; -- strings, e.g. "", "foo", "123" -``` -The objects of each of these categories are **literals** -as indicated in the comments above. No ``fun`` definition -can have a predefined category as its value type, but -they can be used as arguments. For example: -``` - fun StreetAddress : Int -> String -> Address ; - lin StreetAddress number street = {s = number.s ++ street.s} ; - - -- e.g. (StreetAddress 10 "Downing Street") : Address -``` -FIXME: The linearization type is ``{s : Str}`` for all these categories. - - - -%--! - -=Using the resource grammar library= - -In this chapter, we will take a look at the GF resource grammar library. -We will use the library to implement a slightly extended ``Food`` grammar -and port it to some new languages. - - -==The coverage of the library== - -The GF Resource Grammar Library contains grammar rules for -10 languages (in addition, 2 languages are available as incomplete -implementations, and a few more are under construction). Its purpose -is to make these rules available for application programmers, -who can thereby concentrate on the semantic and stylistic -aspects of their grammars, without having to think about -grammaticality. The targeted level of application grammarians -is that of a skilled programmer with -a practical knowledge of the target languages, but without -theoretical knowledge about their grammars. -Such a combination of -skills is typical of programmers who, for instance, want to localize -software to new languages. - -The current resource languages are -- ``Ara``bic (incomplete) -- ``Cat``alan (incomplete) -- ``Dan``ish -- ``Eng``lish -- ``Fin``nish -- ``Fre``nch -- ``Ger``man -- ``Ita``lian -- ``Nor``wegian -- ``Rus``sian -- ``Spa``nish -- ``Swe``dish - - -The first three letters (``Eng`` etc) are used in grammar module names. -The incomplete Arabic and Catalan implementations are -enough to be used in many applications; they both contain, amoung other -things, complete inflectional morphology. - - -==The resource API== - -The resource library API is devided into language-specific -and language-independent parts. To put it roughly, -- the syntax API is language-independent, i.e. has the same types and functions for all - languages. - Its name is ``Syntax``//L// for each language //L// -- the morphology API is language-specific, i.e. has partly different types and functions - for different languages. - Its name is ``Paradigms``//L// for each language //L// - - -A full documentation of the API is available on-line in the -[resource synopsis ../../lib/resource-1.0/synopsis.html]. For our -examples, we will only need a fragment of the full API. - -In the first examples, -we will make use of the following categories, from the module ``Syntax``. - -|| Category | Explanation | Example || -| ``Utt`` | sentence, question, word... | "be quiet" | -| ``Adv`` | verb-phrase-modifying adverb, | "in the house" | -| ``AdA`` | adjective-modifying adverb, | "very" | -| ``S`` | declarative sentence | "she lived here" | -| ``Cl`` | declarative clause, with all tenses | "she looks at this" | -| ``AP`` | adjectival phrase | "very warm" | -| ``CN`` | common noun (without determiner) | "red house" | -| ``NP`` | noun phrase (subject or object) | "the red house" | -| ``Det`` | determiner phrase | "those seven" | -| ``Predet`` | predeterminer | "only" | -| ``Quant`` | quantifier with both sg and pl | "this/these" | -| ``Prep`` | preposition, or just case | "in" | -| ``A`` | one-place adjective | "warm" | -| ``N`` | common noun | "house" | - - -We will need the following syntax rules from ``Syntax``. - -|| Function | Type | Example || -| ``mkUtt`` | ``S -> Utt`` | //John walked// | -| ``mkUtt`` | ``Cl -> Utt`` | //John walks// | -| ``mkCl`` | ``NP -> AP -> Cl`` | //John is very old// | -| ``mkNP`` | ``Det -> CN -> NP`` | //the first old man// | -| ``mkNP`` | ``Predet -> NP -> NP`` | //only John// | -| ``mkDet`` | ``Quant -> Det`` | //this// | -| ``mkCN`` | ``N -> CN`` | //house// | -| ``mkCN`` | ``AP -> CN -> CN`` | //very big blue house// | -| ``mkAP`` | ``A -> AP`` | //old// | -| ``mkAP`` | ``AdA -> AP -> AP`` | //very very old// | - -We will also need the following structural words from ``Syntax``. - -|| Function | Type | Example || -| ``all_Predet`` | ``Predet`` | //all// | -| ``defPlDet`` | ``Det`` | //the (houses)// | -| ``this_Quant`` | ``Quant`` | //this// | -| ``very_AdA`` | ``AdA`` | //very// | - - -For French, we will use the following part of ``ParadigmsFre``. - -|| Function | Type | Example || -| ``Gender`` | ``Type`` | - | -| ``masculine`` | ``Gender`` | - | -| ``feminine`` | ``Gender`` | - | -| ``mkN`` | ``(cheval : Str) -> N`` | - | -| ``mkN`` | ``(foie : Str) -> Gender -> N`` | - | -| ``mkA`` | ``(cher : Str) -> A`` | - | -| ``mkA`` | ``(sec,seche : Str) -> A`` | - | - - -For German, we will use the following part of ``ParadigmsGer``. - -|| Function | Type | Example || -| ``Gender`` | ``Type`` | - | -| ``masculine`` | ``Gender`` | - | -| ``feminine`` | ``Gender`` | - | -| ``neuter`` | ``Gender`` | - | -| ``mkN`` | ``(Stufe : Str) -> N`` | - | -| ``mkN`` | ``(Bild,Bilder : Str) -> Gender -> N`` | - | -| ``mkA`` | ``Str -> A`` | - | -| ``mkA`` | ``(gut,besser,beste : Str) -> A`` | //gut,besser,beste// | - - -**Exercise**. Try out the morphological paradigms in different languages. Do -in this way: -``` - > i -path=alltenses:prelude -retain alltenses/ParadigmsGer.gfr - > cc mkN "Farbe" - > cc mkA "gut" "besser" "beste" -``` - - -==Example: French== - -We start with an abstract syntax that is like ``Food`` before, but -has a plural determiner (//all wines//) and some new nouns that will -need different genders in most languages. -``` - abstract Food = { - cat - S ; Item ; Kind ; Quality ; - fun - Is : Item -> Quality -> S ; - This, All : Kind -> Item ; - QKind : Quality -> Kind -> Kind ; - Wine, Cheese, Fish, Beer, Pizza : Kind ; - Very : Quality -> Quality ; - Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ; - } -``` -The French implementation opens ``SyntaxFre`` and ``ParadigmsFre`` -to get access to the resource libraries needed. In order to find -the libraries, a ``path`` directive is prepended; it is interpreted -relative to the environment variable ``GF_LIB_PATH``. -``` - --# -path=.:present:prelude - - concrete FoodFre of Food = open SyntaxFre,ParadigmsFre in { - lincat - S = Utt ; - Item = NP ; - Kind = CN ; - Quality = AP ; - lin - Is item quality = mkUtt (mkCl item quality) ; - This kind = mkNP (mkDet this_Quant) kind ; - All kind = mkNP all_Predet (mkNP defPlDet kind) ; - QKind quality kind = mkCN quality kind ; - Wine = mkCN (mkN "vin") ; - Beer = mkCN (mkN "bière") ; - Pizza = mkCN (mkN "pizza" feminine) ; - Cheese = mkCN (mkN "fromage" masculine) ; - Fish = mkCN (mkN "poisson") ; - Very quality = mkAP very_AdA quality ; - Fresh = mkAP (mkA "frais" "fraîche") ; - Warm = mkAP (mkA "chaud") ; - Italian = mkAP (mkA "italien") ; - Expensive = mkAP (mkA "cher") ; - Delicious = mkAP (mkA "délicieux") ; - Boring = mkAP (mkA "ennuyeux") ; - } -``` -The ``lincat`` definitions in ``FoodFre`` assign **resource categories** -to **application categories**. In a sense, the application categories -are **semantic**, as they correspond to concepts in the grammar application, -whereas the resource categories are **syntactic**: they give the linguistic -means to express concepts in any application. - -The ``lin`` definitions likewise assign resource functions to application -functions. Under the hood, there is a lot of matching with parameters to -take care of word order, inflection, and agreement. But the user of the -library sees nothing of this: the only parameters you need to give are -the genders of some nouns, which cannot be correctly inferred from the word. - -In French, for example, the one-argument ``mkN`` assigns the noun the feminine -gender if and only if it ends with an //e//. Therefore the words //fromage// and -//pizza// are given genders. One can of course always give genders manually, to -be on the safe side. - -As for inflection, the one-argument adjective pattern ``mkA`` takes care of -completely regular adjective such as //chaud-chaude//, but also of special -cases such as //italien-italienne//, //cher-chère//, and //délicieux-délicieuse//. -But it cannot form //frais-fraîche// properly. Once again, you can give more -forms to be on the safe side. You can also test the paradigms in the GF -program. - -**Exercise**. Compile the grammar ``FoodFre`` and generate and parse some sentences. - -**Exercise**. Write a concrete syntax of ``Food`` for English or some other language -included in the resource library. You can also compare the output with the hand-written -grammars presented earlier in this tutorial. - -**Exercise**. In particular, try to write a concrete syntax for Italian, even if -you don't know Italian. What you need to know is that "beer" is //birra// and -"pizza" is //pizza//, and that all the nouns and adjectives in the grammar -are regular. - - - -==Functor implementation of multilingual grammars== - -If you did the exercise of writing a concrete syntax of ``Food`` for some other -language, you probably noticed that much of the code looks exactly the same -as for French. The immediate reason for this is that the ``Syntax`` API is the -same for all languages; the deeper reason is that all languages (at least those -in the resource package) implement the same syntactic structures and tend to use them -in similar ways. Thus it is only the lexical parts of a concrete syntax that -you need to write anew for a new language. In brief, -- first copy the concrete syntax for one language -- then change the words (the strings and perhaps some paradigms) - - -But programming by copy-and-paste is not worthy of a functional programmer. -Can we write a function that takes care of the shared parts of grammar modules? -Yes, we can. It is not a function in the ``fun`` or ``oper`` sense, but -a function operating on modules, called a **functor**. This construct -is familiar from the functional languages ML and OCaml, but it does not -exist in Haskell. It also bears some resemblance to templates in C++. -Functors are also known as **parametrized modules**. - -In GF, a functor is a module that ``open``s one or more **interfaces**. -An ``interface`` is a module similar to a ``resource``, but it only -contains the types of ``oper``s, not their definitions. You can think -of an interface as a kind of a record type. Thus a functor is a kind -of a function taking records as arguments and producins a module -as value. - -Let us look at a functor implementation of the ``Food`` grammar. -Consider its module header first: -``` - incomplete concrete FoodI of Food = open Syntax, LexFood in -``` -In the functor-function analogy, ``FoodI`` would be presented as a function -with the following type signature: -``` - FoodI : instance of Syntax -> instance of LexFood -> concrete of Food -``` -It takes as arguments two interfaces: -- ``Syntax``, the resource grammar interface -- ``LexFood``, the domain-specific lexicon interface - - -Functors opening ``Syntax`` and a domain lexicon interface are in fact -so typical in GF applications, that this structure could be called a **design patter** -for GF grammars. The idea in this pattern is, again, that -the languages use the same syntactic structures but different words. - -Before going to the details of the module bodies, let us look at how functors -are concretely used. An interface has a header such as -``` - interface LexFood = open Syntax in -``` -To give an ``instance`` of it means that all ``oper``s are given definitione (of -appropriate types). For example, -``` - instance LexFoodGer of LexFood = open SyntaxGer, ParadigmsGer in -``` -Notice that when an interface opens an interface, such as ``Syntax``, then its instance -opens an instance of it. But the instance may also open some resources - typically, -a domain lexicon instance opens a ``Paradigms`` module. - -In the function-functor analogy, we now have -``` - SyntaxGer : instance of Syntax - LexFoodGer : instance of LexFood -``` -Thus we can complete the German implementation by "applying" the functor: -``` - FoodI SyntaxGer LexFoodGer : concrete of Food -``` -The GF syntax for doing so is -``` - concrete FoodGer of Food = FoodI with - (Syntax = SyntaxGer), - (LexFood = LexFoodGer) ; -``` -Notice that this is the //complete// module, not just a header of it. -The module body is received from ``FoodI``, by instantiating the -interface constants with their definitions given in the German -instances. - -A module of this form, characterized by the keyword ``with``, is -called a **functor instantiation**. - -Here is the complete code for the functor ``FoodI``: -``` - incomplete concrete FoodI of Food = open Syntax, LexFood in { - lincat - S = Utt ; - Item = NP ; - Kind = CN ; - Quality = AP ; - lin - Is item quality = mkUtt (mkCl item quality) ; - This kind = mkNP (mkDet this_Quant) kind ; - All kind = mkNP all_Predet (mkNP defPlDet kind) ; - QKind quality kind = mkCN quality kind ; - Wine = mkCN wine_N ; - Beer = mkCN beer_N ; - Pizza = mkCN pizza_N ; - Cheese = mkCN cheese_N ; - Fish = mkCN fish_N ; - Very quality = mkAP very_AdA quality ; - Fresh = mkAP fresh_A ; - Warm = mkAP warm_A ; - Italian = mkAP italian_A ; - Expensive = mkAP expensive_A ; - Delicious = mkAP delicious_A ; - Boring = mkAP boring_A ; -} -``` - - -==Interfaces and instances== - -Let us now define the ``LexFood`` interface: -``` - interface LexFood = open Syntax in { - oper - wine_N : N ; - beer_N : N ; - pizza_N : N ; - cheese_N : N ; - fish_N : N ; - fresh_A : A ; - warm_A : A ; - italian_A : A ; - expensive_A : A ; - delicious_A : A ; - boring_A : A ; -} -``` -In this interface, only lexical items are declared. In general, an -interface can declare any functions and also types. The ``Syntax`` -interface does so. - -Here is the German instance of the interface: -``` - instance LexFoodGer of LexFood = open SyntaxGer, ParadigmsGer in { - oper - wine_N = mkN "Wein" ; - beer_N = mkN "Bier" "Biere" neuter ; - pizza_N = mkN "Pizza" "Pizzen" feminine ; - cheese_N = mkN "Käse" "Käsen" masculine ; - fish_N = mkN "Fisch" ; - fresh_A = mkA "frisch" ; - warm_A = mkA "warm" "wärmer" "wärmste" ; - italian_A = mkA "italienisch" ; - expensive_A = mkA "teuer" ; - delicious_A = mkA "köstlich" ; - boring_A = mkA "langweilig" ; - } -``` -Just to complete the picture, we repeat the German functor instantiation -for ``FoodI``, this time with a path directive that makes it compilable. -``` - --# -path=.:present:prelude - - concrete FoodGer of Food = FoodI with - (Syntax = SyntaxGer), - (LexFood = LexFoodGer) ; -``` - - -**Exercise**. Compile and test ``FoodGer``. - -**Exercise**. Refactor ``FoodFre`` into a functor instantiation. - - - -==Adding languages to a functor implementation== - -Once we have an application grammar defined by using a functor, -adding a new language is simple. Just two modules need to be written: -- a domain lexicon instance -- a functor instantiation - - -The functor instantiation is completely mechanical to write. -Here is one for Finnish: -``` ---# -path=.:present:prelude - -concrete FoodFin of Food = FoodI with - (Syntax = SyntaxFin), - (LexFood = LexFoodFin) ; -``` -The domain lexicon instance requires some knowledge of the words of the -language: what words are used for which concepts, how the words are -inflected, plus features such as genders. Here is a lexicon instance for -Finnish: -``` - instance LexFoodFin of LexFood = open SyntaxFin, ParadigmsFin in { - oper - wine_N = mkN "viini" ; - beer_N = mkN "olut" ; - pizza_N = mkN "pizza" ; - cheese_N = mkN "juusto" ; - fish_N = mkN "kala" ; - fresh_A = mkA "tuore" ; - warm_A = mkA "lämmin" ; - italian_A = mkA "italialainen" ; - expensive_A = mkA "kallis" ; - delicious_A = mkA "herkullinen" ; - boring_A = mkA "tylsä" ; - } -``` - -**Exercise**. Instantiate the functor ``FoodI`` to some language of -your choice. - - -==Division of labour revisited== - -One purpose with the resource grammars was stated to be a division -of labour between linguists and application grammarians. We can now -reflect on what this means more precisely, by asking ourselves what -skills are required of grammarians working on different components. - -Building a GF application starts from the abstract syntax. Writing -an abstract syntax requires -- understanding the semantic structure of the application domain -- knowledge of the GF fragment with categories and functions - - -If the concrete syntax is written by means of a functor, the programmer -has to decide what parts of the implementation are put to the interface -and what parts are shared in the functor. This requires -- knowing how the domain concepts are expressed in natural language -- knowledge of the resource grammar library - the categories and combinators -- understanding what parts are likely to be expressed in language-dependent - ways, so that they must belong to the interface and not the functor -- knowledge of the GF fragment with function applications and strings - - -Instantiating a ready-made functor to a new language is less demanding. -It requires essentially -- knowing how the domain words are expressed in the language -- knowing, roughly, how these words are inflected -- knowledge of the paradigms available in the library -- knowledge of the GF fragment with function applications and strings - - -Notice that none of these tasks requires the use of GF records, tables, -or parameters. Thus only a small fragment of GF is needed; the rest of -GF is only relevant for those who write the libraries. - -Of course, grammar writing is not always straightforward usage of libraries. -For example, GF can be used for other languages than just those in the -libraries - for both natural and formal languages. A knowledge of records -and tables can, unfortunately, also be needed for understanding GF's error -messages. - -**Exercise**. Design a small grammar that can be used for controlling -an MP3 player. The grammar should be able to recognize commands such -as //play this song//, with the following variations: -- verbs: //play//, //remove// -- objects: //song//, //artist// -- determiners: //this//, //the previous// -- verbs without arguments: //stop//, //pause// - - -The implementation goes in the following phases: -+ abstract syntax -+ functor and lexicon interface -+ lexicon instance for the first language -+ functor instantiation for the first language -+ lexicon instance for the second language -+ functor instantiation for the second language -+ ... - - - -==Restricted inheritance== - -A functor implementation using the resource ``Syntax`` interface -works as long as all concepts are expressed by using the same structures -in all languages. If this is not the case, the deviant linearization can -be made into a parameter and moved to the domain lexicon interface. - -Let us take a slightly contrived example: assume that English has -no word for ``Pizza``, but has to use the paraphrase //Italian pie//. -This paraphrase is no longer a noun ``N``, but a complex phrase -in the category ``CN``. An obvious way to solve this problem is -to change interface ``LexEng`` so that the constant declared for -``Pizza`` gets a new type: -``` - oper pizza_CN : CN ; -``` -But this solution is unstable: we may end up changing the interface -and the function with each new language, and we must every time also -change the interface instances for the old languages to maintain -type correctness. - -A better solution is to use **restricted inheritance**: the English -instantiation inherits the functor implementation except for the -constant ``Pizza``. This is how we write: -``` - --# -path=.:present:prelude - - concrete FoodEng of Food = FoodI - [Pizza] with - (Syntax = SyntaxEng), - (LexFood = LexFoodEng) ** - open SyntaxEng, ParadigmsEng in { - - lin Pizza = mkCN (mkA "Italian") (mkN "pie") ; - } -``` -Restricted inheritance is available for all inherited modules. One can for -instance exclude some mushrooms and pick up just some fruit in -the ``FoodMarket`` example: -``` - abstract Foodmarket = Food, Fruit [Peach], Mushroom - [Agaric] -``` -A concrete syntax of ``Foodmarket`` must then indicate the same inheritance -restrictions. - - -**Exercise**. Change ``FoodGer`` in such a way that it says, instead of -//X is Y//, the equivalent of //X must be Y// (//X muss Y sein//). -You will have to browse the full resource API to find all -the functions needed. - - -==Browsing the resource with GF commands== - -In addition to reading the -[resource synopsis ../../lib/resource-1.0/synopsis.html], you -can find resource function combinations by using the parser. This -is so because the resource library is in the end implemented as -a top-level ``abstract-concrete`` grammar, on which parsing -and linearization work. - -Unfortunately, only English and the Scandinavian languages can be -parsed within acceptable computer resource limits when the full -resource is used. - -To look for a syntax tree in the overload API by parsing, do like this: -``` - > $GF_LIB_PATH - > i -path=alltenses:prelude alltenses/OverLangEng.gfc - > p -cat=S -overload "this grammar is too big" - mkS (mkCl (mkNP (mkDet this_Quant) grammar_N) (mkAP too_AdA big_A)) -``` -To view linearizations in all languages by parsing from English: -``` - > i alltenses/langs.gfcm - > p -cat=S -lang=LangEng "this grammar is too big" | tb - UseCl TPres ASimul PPos (PredVP (DetCN (DetSg (SgQuant this_Quant) - NoOrd) (UseN grammar_N)) (UseComp (CompAP (AdAP too_AdA (PositA big_A))))) - Den här grammatiken är för stor - Esta gramática es demasiado grande - (Cyrillic: eta grammatika govorit des'at' jazykov) - Denne grammatikken er for stor - Questa grammatica è troppo grande - Diese Grammatik ist zu groß - Cette grammaire est trop grande - Tämä kielioppi on liian suuri - This grammar is too big - Denne grammatik er for stor -``` -Unfortunately, the Russian grammar uses at the moment a different -character encoding than the rest and is therefore not displayed correctly -in a terminal window. However, the GF syntax editor does display all -examples correctly: -``` - % gfeditor alltenses/langs.gfcm -``` -When you have constructed the tree, you will see the following screen: - -#BCEN - - [../../lib/resource-1.0/doc/10lang-small.png] - -#ECEN - - -**Exercise**. Find the resource grammar translations for the following -English phrases (parse in the category ``Phr``). You can first try to -build the terms manually. - -//every man loves a woman// - -//this grammar speaks more than ten languages// - -//which languages aren't in the grammar// - -//which languages did you want to speak// - - - -=More concepts of abstract syntax= - -==GF as a logical framework== - -In this section, we will show how -to encode advanced semantic concepts in an abstract syntax. -We use concepts inherited from **type theory**. Type theory -is the basis of many systems known as **logical frameworks**, which are -used for representing mathematical theorems and their proofs on a computer. -In fact, GF has a logical framework as its proper part: -this part is the abstract syntax. - -In a logical framework, the formalization of a mathematical theory -is a set of type and function declarations. The following is an example -of such a theory, represented as an ``abstract`` module in GF. -``` -abstract Arithm = { - cat - Prop ; -- proposition - Nat ; -- natural number - fun - Zero : Nat ; -- 0 - Succ : Nat -> Nat ; -- successor of x - Even : Nat -> Prop ; -- x is even - And : Prop -> Prop -> Prop ; -- A and B - } -``` - -**Exercise**. Give a concrete syntax of ``Arithm``, either from scatch or -by using the resource library. - - - - -==Dependent types== - -**Dependent types** are a characteristic feature of GF, -inherited from the **constructive type theory** of Martin-Löf and -distinguishing GF from most other grammar formalisms and -functional programming languages. - -Dependent types can be used for stating stronger -**conditions of well-formedness** than ordinary types. -A simple example is a "smart house" system, which -defines voice commands for household appliances. This example -is borrowed from the -[Regulus Book http://cslipublications.stanford.edu/site/1575865262.html] -(Rayner & al. 2006). - -One who enters a smart house can use speech to dim lights, switch -on the fan, etc. For each ``Kind`` of a device, there is a set of -``Actions`` that can be performed on it; thus one can dim the lights but - not the fan, for example. These dependencies can be expressed by -by making the type ``Action`` dependent on ``Kind``. We express this -as follows in ``cat`` declarations: -``` - cat - Command ; - Kind ; - Action Kind ; - Device Kind ; -``` -The crucial use of the dependencies is made in the rule for forming commands: -``` - fun CAction : (k : Kind) -> Action k -> Device k -> Command ; -``` -In other words: an action and a device can be combined into a command only -if they are of the same ``Kind`` ``k``. If we have the functions -``` - DKindOne : (k : Kind) -> Device k ; -- the light - - light, fan : Kind ; - dim : Action light ; -``` -we can form the syntax tree -``` - CAction light dim (DKindOne light) -``` -but we cannot form the trees -``` - CAction light dim (DKindOne fan) - CAction fan dim (DKindOne light) - CAction fan dim (DKindOne fan) -``` -Linearization rules are written as usual: the concrete syntax does not -know if a category is a dependent type. In English, you can write as follows: -``` - lincat Action = {s : Str} ; - lin CAction kind act dev = {s = act.s ++ dev.s} ; -``` -Notice that the argument ``kind`` does not appear in the linearization. -The type checker will be able to reconstruct it from the ``dev`` argument. - -Parsing with dependent types is performed in two phases: -+ context-free parsing -+ filtering through type checker - - -If you just parse in the usual way, you don't enter the second phase, and -the ``kind`` argument is not found: -``` - > parse "dim the light" - CAction ? dim (DKindOne light) -``` -Moreover, type-incorrect commands are not rejected: -``` - > parse "dim the fan" - CAction ? dim (DKindOne fan) -``` -The question mark ``?`` is a **metavariable**, and is returned by the parser -for any subtree that is suppressed by a linearization rule. - -To get rid of metavariables, you must feed the parse result into the -second phase of **solving** them. The ``solve`` process uses the dependent -type checker to restore the values of the metavariables. It is invoked by -the command ``put_tree = pt`` with the flag ``-transform=solve``: -``` - > parse "dim the light" | put_tree -transform=solve - CAction light dim (DKindOne light) -``` -The ``solve`` process may fail, in which case no tree is returned: -``` - > parse "dim the fan" | put_tree -transform=solve - no tree found -``` - - -**Exercise**. Write an abstract syntax module with above contents -and an appropriate English concrete syntax. Try to parse the commands -//dim the light// and //dim the fan//, with and without ``solve`` filtering. - - -**Exercise**. Perform random and exhaustive generation, with and without -``solve`` filtering. - -**Exercise**. Add some device kinds and actions to the grammar. - - -==Polymorphism== - -Sometimes an action can be performed on all kinds of devices. It would be -possible to introduce separate ``fun`` constants for each kind-action pair, -but this would be tedious. Instead, one can use **polymorphic** actions, -i.e. actions that take a ``Kind`` as an argument and produce an ``Action`` -for that ``Kind``: -``` - fun switchOn, switchOff : (k : Kind) -> Action k ; -``` -Functions that are not polymorphic are **monomorphic**. However, the -dichotomy into monomorphism and full polymorphism is not always sufficien -for good semantic modelling: very typically, some actions are defined -for a proper subset of devices, but not just one. For instance, both doors and -windows can be opened, whereas lights cannot. -We will return to this problem by introducing the -concept of **restricted polymorphism** later, -after a chapter on proof objects. - - - -==Dependent types and spoken language models== - -We have used dependent types to control semantic well-formedness -in grammars. This is important in traditional type theory -applications such as proof assistants, where only mathematically -meaningful formulas should be constructed. But semantic filtering has -also proved important in speech recognition, because it reduces the -ambiguity of the results. - - -===Grammar-based language models=== - -The standard way of using GF in speech recognition is by building -**grammar-based language models**. To this end, GF comes with compilers -into several formats that are used in speech recognition systems. -One such format is GSL, used in the [Nuance speech recognizer www.nuance.com]. -It is produced from GF simply by printing a grammar with the flag -``-printer=gsl``. -``` - > import -conversion=finite SmartEng.gf - > print_grammar -printer=gsl - - ;GSL2.0 - ; Nuance speech recognition grammar for SmartEng - ; Generated by GF - - .MAIN SmartEng_2 - - SmartEng_0 [("switch" "off") ("switch" "on")] - SmartEng_1 ["dim" ("switch" "off") - ("switch" "on")] - SmartEng_2 [(SmartEng_0 SmartEng_3) - (SmartEng_1 SmartEng_4)] - SmartEng_3 ("the" SmartEng_5) - SmartEng_4 ("the" SmartEng_6) - SmartEng_5 "fan" - SmartEng_6 "light" -``` -Now, GSL is a context-free format, so how does it cope with dependent types? -In general, dependent types can give rise to infinitely many basic types -(exercise!), whereas a context-free grammar can by definition only have -finitely many nonterminals. - -This is where the flag ``-conversion=finite`` is needed in the ``import`` -command. Its effect is to convert a GF grammar with dependent types to -one without, so that each instance of a dependent type is replaced by -an atomic type. This can then be used as a nonterminal in a context-free -grammar. The ``finite`` conversion presupposes that every -dependent type has only finitely many instances, which is in fact -the case in the ``Smart`` grammar. - - -**Exercise**. If you have access to the Nuance speech recognizer, -test it with GF-generated language models for ``SmartEng``. Do this -both with and without ``-conversion=finite``. - -**Exercise**. Construct an abstract syntax with infinitely many instances -of dependent types. - - -===Statistical language models=== - -An alternative to grammar-based language models are -**statistical language models** (**SLM**s). An SLM is -built from a **corpus**, i.e. a set of utterances. It specifies the -probability of each **n-gram**, i.e. sequence of //n// words. The -typical value of //n// is 2 (bigrams) or 3 (trigrams). - -One advantage of SLMs over grammar-based models is that they are -**robust**, i.e. they can be used to recognize sequences that would -be out of the grammar or the corpus. Another advantage is that -an SLM can be built "for free" if a corpus is available. - -However, collecting a corpus can require a lot of work, and writing -a grammar can be less demanding, especially with tools such as GF or -Regulus. This advantage of grammars can be combined with robustness -by creating a back-up SLM from a **synthesized corpus**. This means -simply that the grammar is used for generating such a corpus. -In GF, this can be done with the ``generate_trees`` command. -As with grammar-based models, the quality of the SLM is better -if meaningless utterances are excluded from the corpus. Thus -a good way to generate an SLM from a GF grammar is by using -dependent types and filter the results through the type checker: -``` - > generate_trees | put_trees -transform=solve | linearize -``` - - -**Exercise**. Measure the size of the corpus generated from -``SmartEng``, with and without type checker filtering. - - - -==Digression: dependent types in concrete syntax== - -===Variables in function types=== - -A dependent function type needs to introduce a variable for -its argument type, as in -``` - switchOff : (k : Kind) -> Action k -``` -Function types //without// -variables are actually a shorthand notation: writing -``` - fun PredVP : NP -> VP -> S -``` -is shorthand for -``` - fun PredVP : (x : NP) -> (y : VP) -> S -``` -or any other naming of the variables. Actually the use of variables -sometimes shortens the code, since they can share a type: -``` - octuple : (x,y,z,u,v,w,s,t : Str) -> Str -``` -If a bound variable is not used, it can here, as elsewhere in GF, be replaced by -a wildcard: -``` - octuple : (_,_,_,_,_,_,_,_ : Str) -> Str -``` -A good practice for functions with many arguments of the same type -is to indicate the number of arguments: -``` - octuple : (x1,_,_,_,_,_,_,x8 : Str) -> Str -``` -One can also use the variables to document what each argument is expected -to provide, as is done in inflection paradigms in the resource grammar. -``` - mkV : (drink,drank,drunk : Str) -> V -``` - - -===Polymorphism in concrete syntax=== - -The **functional fragment** of GF -terms and types comprises function types, applications, lambda -abstracts, constants, and variables. This fragment is similar in -abstract and concrete syntax. In particular, -dependent types are also available in concrete syntax. -We have not made use of them yet, -but we will now look at one example of how they -can be used. - -Those readers who are familiar with functional programming languages -like ML and Haskell, may already have missed **polymorphic** -functions. For instance, Haskell programmers have access to -the functions -``` - const :: a -> b -> a - const c _ = c - - flip :: (a -> b -> c) -> b -> a -> c - flip f y x = f x y -``` -which can be used for any given types ``a``,``b``, and ``c``. - -The GF counterpart of polymorphic functions are **monomorphic** -functions with explicit **type variables**. Thus the above -definitions can be written -``` - oper const :(a,b : Type) -> a -> b -> a = - \_,_,c,_ -> c ; - - oper flip : (a,b,c : Type) -> (a -> b ->c) -> b -> a -> c = - \_,_,_,f,x,y -> f y x ; -``` -When the operations are used, the type checker requires -them to be equipped with all their arguments; this may be a nuisance -for a Haskell or ML programmer. - - - -==Proof objects== - -Perhaps the most well-known idea in constructive type theory is -the **Curry-Howard isomorphism**, also known as the -**propositions as types principle**. Its earliest formulations -were attempts to give semantics to the logical systems of -propositional and predicate calculus. In this section, we will consider -a more elementary example, showing how the notion of proof is useful -outside mathematics, as well. - -We first define the category of unary (also known as Peano-style) -natural numbers: -``` - cat Nat ; - fun Zero : Nat ; - fun Succ : Nat -> Nat ; -``` -The **successor function** ``Succ`` generates an infinite -sequence of natural numbers, beginning from ``Zero``. - -We then define what it means for a number //x// to be //less than// -a number //y//. Our definition is based on two axioms: -- ``Zero`` is less than ``Succ`` //y// for any //y//. -- If //x// is less than //y//, then ``Succ`` //x// is less than ``Succ`` //y//. - - -The most straightforward way of expressing these axioms in type theory -is as typing judgements that introduce objects of a type ``Less`` //x y//: -``` - cat Less Nat Nat ; - fun lessZ : (y : Nat) -> Less Zero (Succ y) ; - fun lessS : (x,y : Nat) -> Less x y -> Less (Succ x) (Succ y) ; -``` -Objects formed by ``lessZ`` and ``lessS`` are -called **proof objects**: they establish the truth of certain -mathematical propositions. -For instance, the fact that 2 is less that -4 has the proof object -``` - lessS (Succ Zero) (Succ (Succ (Succ Zero))) - (lessS Zero (Succ (Succ Zero)) (lessZ (Succ Zero))) -``` -whose type is -``` - Less (Succ (Succ Zero)) (Succ (Succ (Succ (Succ Zero)))) -``` -which is the formalization of the proposition that 2 is less than 4. - -GF grammars can be used to provide a **semantic control** of -well-formedness of expressions. We have already seen examples of this: -the grammar of well-formed actions on household devices. By introducing proof objects -we have now added a very powerful technique of expressing semantic conditions. - -A simple example of the use of proof objects is the definition of -well-formed //time spans//: a time span is expected to be from an earlier to -a later time: -``` - from 3 to 8 -``` -is thus well-formed, whereas -``` - from 8 to 3 -``` -is not. The following rules for spans impose this condition -by using the ``Less`` predicate: -``` - cat Span ; - fun span : (m,n : Nat) -> Less m n -> Span ; -``` - -**Exercise**. Write an abstract and concrete syntax with the -concepts of this section, and experiment with it in GF. - - -**Exercise**. Define the notions of "even" and "odd" in terms -of proof objects. **Hint**. You need one function for proving -that 0 is even, and two other functions for propagating the -properties. - - - - -===Proof-carrying documents=== - -Another possible application of proof objects is **proof-carrying documents**: -to be semantically well-formed, the abstract syntax of a document must contain a proof -of some property, although the proof is not shown in the concrete document. -Think, for instance, of small documents describing flight connections: - -//To fly from Gothenburg to Prague, first take LH3043 to Frankfurt, then OK0537 to Prague.// - -The well-formedness of this text is partly expressible by dependent typing: -``` - cat - City ; - Flight City City ; - fun - Gothenburg, Frankfurt, Prague : City ; - LH3043 : Flight Gothenburg Frankfurt ; - OK0537 : Flight Frankfurt Prague ; -``` -This rules out texts saying //take OK0537 from Gothenburg to Prague//. -However, there is a -further condition saying that it must be possible to -change from LH3043 to OK0537 in Frankfurt. -This can be modelled as a proof object of a suitable type, -which is required by the constructor -that connects flights. -``` - cat - IsPossible (x,y,z : City)(Flight x y)(Flight y z) ; - fun - Connect : (x,y,z : City) -> - (u : Flight x y) -> (v : Flight y z) -> - IsPossible x y z u v -> Flight x z ; -``` - - -==Restricted polymorphism== - -In the first version of the smart house grammar ``Smart``, -all Actions were either of -- **monomorphic**: defined for one Kind -- **polymorphic**: defined for all Kinds - - -To make this scale up for new Kinds, we can refine this to -**restricted polymorphism**: defined for Kinds of a certain **class** - - -The notion of class can be expressed in abstract syntax -by using the Curry-Howard isomorphism as follows: -- a class is a **predicate** of Kinds - i.e. a type depending of Kinds -- a Kind is in a class if there is a proof object of this type - - -Here is an example with switching and dimming. The classes are called -``switchable`` and ``dimmable``. -``` -cat - Switchable Kind ; - Dimmable Kind ; -fun - switchable_light : Switchable light ; - switchable_fan : Switchable fan ; - dimmable_light : Dimmable light ; - - switchOn : (k : Kind) -> Switchable k -> Action k ; - dim : (k : Kind) -> Dimmable k -> Action k ; -``` -One advantage of this formalization is that classes for new -actions can be added incrementally. - -**Exercise**. Write a new version of the ``Smart`` grammar with -classes, and test it in GF. - -**Exercise**. Add some actions, kinds, and classes to the grammar. -Try to port the grammar to a new language. You will probably find -out that restricted polymorphism works differently in different languages. -For instance, in Finnish not only doors but also TVs and radios -can be "opened", which means switching them on. - - -==Variable bindings== - -Mathematical notation and programming languages have -expressions that **bind** variables. For instance, -a universally quantifier proposition -``` - (All x)B(x) -``` -consists of the **binding** ``(All x)`` of the variable ``x``, -and the **body** ``B(x)``, where the variable ``x`` can have -**bound occurrences**. - -Variable bindings appear in informal mathematical language as well, for -instance, -``` - for all x, x is equal to x - - the function that for any numbers x and y returns the maximum of x+y - and x*y - - Let x be a natural number. Assume that x is even. Then x + 3 is odd. -``` -In type theory, variable-binding expression forms can be formalized -as functions that take functions as arguments. The universal -quantifier is defined -``` - fun All : (Ind -> Prop) -> Prop -``` -where ``Ind`` is the type of individuals and ``Prop``, -the type of propositions. If we have, for instance, the equality predicate -``` - fun Eq : Ind -> Ind -> Prop -``` -we may form the tree -``` - All (\x -> Eq x x) -``` -which corresponds to the ordinary notation -``` - (All x)(x = x). -``` -An abstract syntax where trees have functions as arguments, as in -the two examples above, has turned out to be precisely the right -thing for the semantics and computer implementation of -variable-binding expressions. The advantage lies in the fact that -only one variable-binding expression form is needed, the lambda abstract -``\x -> b``, and all other bindings can be reduced to it. -This makes it easier to implement mathematical theories and reason -about them, since variable binding is tricky to implement and -to reason about. The idea of using functions as arguments of -syntactic constructors is known as **higher-order abstract syntax**. - -The question now arises: how to define linearization rules -for variable-binding expressions? -Let us first consider universal quantification, -``` - fun All : (Ind -> Prop) -> Prop -``` -We write -``` - lin All B = {s = "(" ++ "All" ++ B.$0 ++ ")" ++ B.s} -``` -to obtain the form shown above. -This linearization rule brings in a new GF concept - the ``$0`` -field of ``B`` containing a bound variable symbol. -The general rule is that, if an argument type of a function is -itself a function type ``A -> C``, the linearization type of -this argument is the linearization type of ``C`` -together with a new field ``$0 : Str``. In the linearization rule -for ``All``, the argument ``B`` thus has the linearization -type -``` - {$0 : Str ; s : Str}, -``` -since the linearization type of ``Prop`` is -``` - {s : Str} -``` -In other words, the linearization of a function -consists of a linearization of the body together with a -field for a linearization of the bound variable. -Those familiar with type theory or lambda calculus -should notice that GF requires trees to be in -**eta-expanded** form in order to be linearizable: -any function of type -``` - A -> B -``` -always has a syntax tree of the form -``` - \x -> b -``` -where ``b : B`` under the assumption ``x : A``. -It is in this form that an expression can be analysed -as having a bound variable and a body. - - -Given the linearization rule -``` - lin Eq a b = {s = "(" ++ a.s ++ "=" ++ b.s ++ ")"} -``` -the linearization of -``` - \x -> Eq x x -``` -is the record -``` - {$0 = "x", s = ["( x = x )"]} -``` -Thus we can compute the linearization of the formula, -``` - All (\x -> Eq x x) --> {s = "[( All x ) ( x = x )]"}. -``` -How did we get the //linearization// of the variable ``x`` -into the string ``"x"``? GF grammars have no rules for -this: it is just hard-wired in GF that variable symbols are -linearized into the same strings that represent them in -the print-out of the abstract syntax. - -To be able to //parse// variable symbols, however, GF needs to know what -to look for (instead of e.g. trying to parse //any// -string as a variable). What strings are parsed as variable symbols -is defined in the lexical analysis part of GF parsing -``` - > p -cat=Prop -lexer=codevars "(All x)(x = x)" - All (\x -> Eq x x) -``` -(see more details on lexers below). If several variables are bound in the -same argument, the labels are ``$0, $1, $2``, etc. - - -**Exercise**. Write an abstract syntax of the whole -**predicate calculus**, with the -**connectives** "and", "or", "implies", and "not", and the -**quantifiers** "exists" and "for all". Use higher-order functions -to guarantee that unbounded variables do not occur. - -**Exercise**. Write a concrete syntax for your favourite -notation of predicate calculus. Use Latex as target language -if you want nice output. You can also try producing Haskell boolean -expressions. Use as many parenthesis as you need to -guarantee non-ambiguity. - - - -==Semantic definitions== - -We have seen that, -just like functional programming languages, GF has declarations -of functions, telling what the type of a function is. -But we have not yet shown how to **compute** -these functions: all we can do is provide them with arguments -and linearize the resulting terms. -Since our main interest is the well-formedness of expressions, -this has not yet bothered -us very much. As we will see, however, computation does play a role -even in the well-formedness of expressions when dependent types are -present. - -GF has a form of judgement for **semantic definitions**, -recognized by the key word ``def``. At its simplest, it is just -the definition of one constant, e.g. -``` - def one = Succ Zero ; -``` -We can also define a function with arguments, -``` - def Neg A = Impl A Abs ; -``` -which is still a special case of the most general notion of -definition, that of a group of **pattern equations**: -``` - def - sum x Zero = x ; - sum x (Succ y) = Succ (Sum x y) ; -``` -To compute a term is, as in functional programming languages, -simply to follow a chain of reductions until no definition -can be applied. For instance, we compute -``` - Sum one one --> - Sum (Succ Zero) (Succ Zero) --> - Succ (sum (Succ Zero) Zero) --> - Succ (Succ Zero) -``` -Computation in GF is performed with the ``pt`` command and the -``compute`` transformation, e.g. -``` - > p -tr "1 + 1" | pt -transform=compute -tr | l - sum one one - Succ (Succ Zero) - s(s(0)) -``` - -The ``def`` definitions of a grammar induce a notion of -**definitional equality** among trees: two trees are -definitionally equal if they compute into the same tree. -Thus, trivially, all trees in a chain of computation -(such as the one above) -are definitionally equal to each other. So are the trees -``` - sum Zero (Succ one) - Succ one - sum (sum Zero Zero) (sum (Succ Zero) one) -``` -and infinitely many other trees. - -A fact that has to be emphasized about ``def`` definitions is that -they are //not// performed as a first step of linearization. -We say that **linearization is intensional**, which means that -the definitional equality of two trees does not imply that -they have the same linearizations. For instance, each of the seven terms -shown above has a different linearizations in arithmetic notation: -``` - 1 + 1 - s(0) + s(0) - s(s(0) + 0) - s(s(0)) - 0 + s(0) - s(1) - 0 + 0 + s(0) + 1 -``` -This notion of intensionality is -no more exotic than the intensionality of any **pretty-printing** -function of a programming language (function that shows -the expressions of the language as strings). It is vital for -pretty-printing to be intensional in this sense - if we want, -for instance, to trace a chain of computation by pretty-printing each -intermediate step, what we want to see is a sequence of different -expression, which are definitionally equal. - -What is more exotic is that GF has two ways of referring to the -abstract syntax objects. In the concrete syntax, the reference is intensional. -In the abstract syntax, the reference is extensional, since -**type checking is extensional**. The reason is that, -in the type theory with dependent types, types may depend on terms. -Two types depending on terms that are definitionally equal are -equal types. For instance, -``` - Proof (Odd one) - Proof (Odd (Succ Zero)) -``` -are equal types. Hence, any tree that type checks as a proof that -1 is odd also type checks as a proof that the successor of 0 is odd. -(Recall, in this connection, that the -arguments a category depends on never play any role -in the linearization of trees of that category, -nor in the definition of the linearization type.) - -In addition to computation, definitions impose a -**paraphrase** relation on expressions: -two strings are paraphrases if they -are linearizations of trees that are -definitionally equal. -Paraphrases are sometimes interesting for -translation: the **direct translation** -of a string, which is the linearization of the same tree -in the targer language, may be inadequate because it is e.g. -unidiomatic or ambiguous. In such a case, -the translation algorithm may be made to consider -translation by a paraphrase. - -To stress express the distinction between -**constructors** (=**canonical** functions) -and other functions, GF has a judgement form -``data`` to tell that certain functions are canonical, e.g. -``` - data Nat = Succ | Zero ; -``` -Unlike in Haskell, but similarly to ALF (where constructor functions -are marked with a flag ``C``), -new constructors can be added to -a type with new ``data`` judgements. The type signatures of constructors -are given separately, in ordinary ``fun`` judgements. -One can also write directly -``` - data Succ : Nat -> Nat ; -``` -which is equivalent to the two judgements -``` - fun Succ : Nat -> Nat ; - data Nat = Succ ; -``` - -**Exercise**. Implement an interpreter of a small functional programming -language with natural numbers, lists, pairs, lambdas, etc. Use higher-order -abstract syntax with semantic definitions. As target language, use -your favourite programming language. - -**Exercise**. To make your interpreted language look nice, use -**precedences** instead of putting parentheses everywhere. -You can use the [precedence library ../../lib/prelude/Precedence.gf] -of GF to facilitate this. - - -=Practical issues= - -==Lexers and unlexers== - -Lexers and unlexers can be chosen from -a list of predefined ones, using the flags``-lexer`` and `` -unlexer`` either -in the grammar file or on the GF command line. Here are some often-used lexers -and unlexers: -``` - The default is words. - -lexer=words tokens are separated by spaces or newlines - -lexer=literals like words, but GF integer and string literals recognized - -lexer=vars like words, but "x","x_...","$...$" as vars, "?..." as meta - -lexer=chars each character is a token - -lexer=code use Haskell's lex - -lexer=codevars like code, but treat unknown words as variables, ?? as meta - -lexer=text with conventions on punctuation and capital letters - -lexer=codelit like code, but treat unknown words as string literals - -lexer=textlit like text, but treat unknown words as string literals - - The default is unwords. - -unlexer=unwords space-separated token list (like unwords) - -unlexer=text format as text: punctuation, capitals, paragraph

- -unlexer=code format as code (spacing, indentation) - -unlexer=textlit like text, but remove string literal quotes - -unlexer=codelit like code, but remove string literal quotes - -unlexer=concat remove all spaces -``` -More options can be found by ``help -lexer`` and ``help -unlexer``: - - - - -==Speech input and output== - -The ``speak_aloud = sa`` command sends a string to the speech -synthesizer -[Flite http://www.speech.cs.cmu.edu/flite/doc/]. -It is typically used via a pipe: -``` generate_random | linearize | speak_aloud -The result is only satisfactory for English. - -The ``speech_input = si`` command receives a string from a -speech recognizer that requires the installation of -[ATK http://mi.eng.cam.ac.uk/~sjy/software.htm]. -It is typically used to pipe input to a parser: -``` speech_input -tr | parse -The method words only for grammars of English. - -Both Flite and ATK are freely available through the links -above, but they are not distributed together with GF. - - - -==Multilingual syntax editor== - -The -[Editor User Manual http://www.cs.chalmers.se/~aarne/GF2.0/doc/javaGUImanual/javaGUImanual.htm] -describes the use of the editor, which works for any multilingual GF grammar. - -Here is a snapshot of the editor: - -#BCEN - -#EDITORPNG - -#ECEN - - -The grammars of the snapshot are from the -[Letter grammar package http://www.cs.chalmers.se/~aarne/GF/examples/letter]. - - -==Communicating with GF== - -Other processes can communicate with the GF command interpreter, -and also with the GF syntax editor. Useful flags when invoking GF are -- ``-batch`` suppresses the promps and structures the communication with XML tags. -- ``-s`` suppresses non-output non-error messages and XML tags. -- ``-nocpu`` suppresses CPU time indication. - - -Thus the most silent way to invoke GF is -``` - gf -batch -s -nocpu -``` - - - -=Embedded grammars in Haskell and Java= - -GF grammars can be used as parts of programs written in the -following languages. We will go through a skeleton application in -Haskell, while the next chapter will show how to build an -application in Java. - -We will show how to build a minimal resource grammar -application whose architecture scales up to much -larger applications. The application is run from the -shell by the command -``` - math -``` -whereafter it reads user input in English and French. -To each input line, it answers by the truth value of -the sentence. -``` - ./math - zéro est pair - True - zero is odd - False - zero is even and zero is odd - False -``` -The source of the application consists of the following -files: -``` - LexEng.gf -- English instance of Lex - LexFre.gf -- French instance of Lex - Lex.gf -- lexicon interface - Makefile -- a makefile - MathEng.gf -- English instantiation of MathI - MathFre.gf -- French instantiation of MathI - Math.gf -- abstract syntax - MathI.gf -- concrete syntax functor for Math - Run.hs -- Haskell Main module -``` -The system was built in 22 steps explained below. - - -==Writing GF grammars== - -===Creating the first grammar=== - -1. Write ``Math.gf``, which defines what you want to say. -``` - abstract Math = { - cat Prop ; Elem ; - fun - And : Prop -> Prop -> Prop ; - Even : Elem -> Prop ; - Zero : Elem ; - } -``` -2. Write ``Lex.gf``, which defines which language-dependent -parts are needed in the concrete syntax. These are mostly -words (lexicon), but can in fact be any operations. The definitions -only use resource abstract syntax, which is opened. -``` - interface Lex = open Syntax in { - oper - even_A : A ; - zero_PN : PN ; - } -``` -3. Write ``LexEng.gf``, the English implementation of ``Lex.gf`` -This module uses English resource libraries. -``` - instance LexEng of Lex = open GrammarEng, ParadigmsEng in { - oper - even_A = regA "even" ; - zero_PN = regPN "zero" ; - - } -``` -4. Write ``MathI.gf``, a language-independent concrete syntax of -``Math.gf``. It opens interfaces. -which makes it an incomplete module, aka. parametrized module, aka. -functor. -``` - incomplete concrete MathI of Math = - - open Syntax, Lex in { - - flags startcat = Prop ; - - lincat - Prop = S ; - Elem = NP ; - lin - And x y = mkS and_Conj x y ; - Even x = mkS (mkCl x even_A) ; - Zero = mkNP zero_PN ; - } -``` -5. Write ``MathEng.gf``, which is just an instatiation of ``MathI.gf``, -replacing the interfaces by their English instances. This is the module -that will be used as a top module in GF, so it contains a path to -the libraries. -``` - instance LexEng of Lex = open SyntaxEng, ParadigmsEng in { - oper - even_A = mkA "even" ; - zero_PN = mkPN "zero" ; - } -``` - - -===Testing=== - -6. Test the grammar in GF by random generation and parsing. -``` - $ gf - > i MathEng.gf - > gr -tr | l -tr | p - And (Even Zero) (Even Zero) - zero is evenand zero is even - And (Even Zero) (Even Zero) -``` -When importing the grammar, you will fail if you haven't -- correctly defined your ``GF_LIB_PATH`` as ``GF/lib`` -- installed the resource package or - compiled the resource from source by ``make`` in ``GF/lib/resource-1.0`` - - - -===Adding a new language=== - -7. Now it is time to add a new language. Write a French lexicon ``LexFre.gf``: -``` - instance LexFre of Lex = open SyntaxFre, ParadigmsFre in { - oper - even_A = mkA "pair" ; - zero_PN = mkPN "zéro" ; - } -``` -8. You also need a French concrete syntax, ``MathFre.gf``: -``` - --# -path=.:present:prelude - - concrete MathFre of Math = MathI with - (Syntax = SyntaxFre), - (Lex = LexFre) ; -``` -9. This time, you can test multilingual generation: -``` - > i MathFre.gf - > gr | tb - Even Zero - zéro est pair - zero is even -``` - - -===Extending the language=== - -10. You want to add a predicate saying that a number is odd. -It is first added to ``Math.gf``: -``` - fun Odd : Elem -> Prop ; -``` -11. You need a new word in ``Lex.gf``. -``` - oper odd_A : A ; -``` -12. Then you can give a language-independent concrete syntax in -``MathI.gf``: -``` - lin Odd x = mkS (mkCl x odd_A) ; -``` -13. The new word is implemented in ``LexEng.gf``. -``` - oper odd_A = mkA "odd" ; -``` -14. The new word is implemented in ``LexFre.gf``. -``` - oper odd_A = mkA "impair" ; -``` -15. Now you can test with the extended lexicon. First empty -the environment to get rid of the old abstract syntax, then -import the new versions of the grammars. -``` - > e - > i MathEng.gf - > i MathFre.gf - > gr | tb - And (Odd Zero) (Even Zero) - zéro est impair et zéro est pair - zero is odd and zero is even -``` - - -==Building a user program== - -===Producing a compiled grammar package=== - -16. Your grammar is going to be used by persons wh``MathEng.gf``o do not need -to compile it again. They may not have access to the resource library, -either. Therefore it is advisable to produce a multilingual grammar -package in a single file. We call this package ``math.gfcm`` and -produce it, when we have ``MathEng.gf`` and -``MathEng.gf`` in the GF state, by the command -``` - > pm | wf math.gfcm -``` - - -===Writing the Haskell application=== - -17. Write the Haskell main file ``Run.hs``. It uses the ``EmbeddedAPI`` -module defining some basic functionalities such as parsing. -The answer is produced by an interpreter of trees returned by the parser. -``` -module Main where - -import GSyntax -import GF.Embed.EmbedAPI - -main :: IO () -main = do - gr <- file2grammar "math.gfcm" - loop gr - -loop :: MultiGrammar -> IO () -loop gr = do - s <- getLine - interpret gr s - loop gr - -interpret :: MultiGrammar -> String -> IO () -interpret gr s = do - let tss = parseAll gr "Prop" s - case (concat tss) of - [] -> putStrLn "no parse" - t:_ -> print $ answer $ fg t - -answer :: GProp -> Bool -answer p = case p of - (GOdd x1) -> odd (value x1) - (GEven x1) -> even (value x1) - (GAnd x1 x2) -> answer x1 && answer x2 - -value :: GElem -> Int -value e = case e of - GZero -> 0 -``` - -18. The syntax trees manipulated by the interpreter are not raw -GF trees, but objects of the Haskell datatype ``GProp``. -From any GF grammar, a file ``GFSyntax.hs`` with -datatypes corresponding to its abstract -syntax can be produced by the command -``` - > pg -printer=haskell | wf GSyntax.hs -``` -The module also defines the overloaded functions -``gf`` and ``fg`` for translating from these types to -raw trees and back. - - -===Compiling the Haskell grammar=== - -19. Before compiling ``Run.hs``, you must check that the -embedded GF modules are found. The easiest way to do this -is by two symbolic links to your GF source directories: -``` - $ ln -s /home/aarne/GF/src/GF - $ ln -s /home/aarne/GF/src/Transfer/ -``` - -20. Now you can run the GHC Haskell compiler to produce the program. -``` - $ ghc --make -o math Run.hs -``` -The program can be tested with the command ``./math``. - - -===Building a distribution=== - -21. For a stand-alone binary-only distribution, only -the two files ``math`` and ``math.gfcm`` are needed. -For a source distribution, the files mentioned in -the beginning of this documents are needed. - - -===Using a Makefile=== - -22. As a part of the source distribution, a ``Makefile`` is -essential. The ``Makefile`` is also useful when developing the -application. It should always be possible to build an executable -from source by typing ``make``. Here is a minimal such ``Makefile``: -``` - all: - echo "pm | wf math.gfcm" | gf MathEng.gf MathFre.gf - echo "pg -printer=haskell | wf GSyntax.hs" | gf math.gfcm - ghc --make -o math Run.hs -``` - - - - -=Embedded grammars in Java= - -Forthcoming; at the moment, the document - - [``http://www.cs.chalmers.se/~bringert/gf/gf-java.html`` http://www.cs.chalmers.se/~bringert/gf/gf-java.html] - -by Björn Bringert gives more information on Java. - - - -=Further reading= - -Syntax Editor User Manual: - -[``http://www.cs.chalmers.se/~aarne/GF2.0/doc/javaGUImanual/javaGUImanual.htm`` http://www.cs.chalmers.se/~aarne/GF2.0/doc/javaGUImanual/javaGUImanual.htm] - -Resource Grammar Synopsis (on using resource grammars): - -[``http://www.cs.chalmers.se/~aarne/GF/lib/resource-1.0/synopsis.html`` ../../lib/resource-1.0/synopsis.html] - -Resource Grammar HOWTO (on writing resource grammars): - -[``http://www.cs.chalmers.se/~aarne/GF/lib/resource-1.0/synopsis.html`` ../../lib/resource-1.0/doc/Resource-HOWTO.html] - -GF Homepage: - -[``http://www.cs.chalmers.se/~aarne/GF/doc`` ../..] - diff --git a/doc/tutorial/gf-tutorial2_1.html b/doc/tutorial/gf-tutorial2_1.html deleted file mode 100644 index 5576428b5..000000000 --- a/doc/tutorial/gf-tutorial2_1.html +++ /dev/null @@ -1,3504 +0,0 @@ - - - - - -Grammatical Framework Tutorial - -

Grammatical Framework Tutorial

- -Author: Aarne Ranta aarne (at) cs.chalmers.se
-Last update: Wed May 30 21:26:11 2007 -
- -

-
-

- - -

-
-

-

- -

- -

Introduction

- -

GF = Grammatical Framework

-

-The term GF is used for different things: -

-
    -
  • a program used for working with grammars -
  • a programming language in which grammars can be written -
  • a theory about grammars and languages -
- -

-This tutorial is primarily about the GF program and -the GF programming language. -It will guide you -

-
    -
  • to use the GF program -
  • to write GF grammars -
  • to write programs in which GF grammars are used as components -
- - -

What are GF grammars used for

-

-A grammar is a definition of a language. -From this definition, different language processing components -can be derived: -

-
    -
  • parsing: to analyse the language -
  • linearization: to generate the language -
  • translation: to analyse one language and generate another -
- -

-A GF grammar can be seen as a declarative program from which these -processing tasks can be automatically derived. In addition, many -other tasks are readily available for GF grammars: -

-
    -
  • morphological analysis: find out the possible inflection forms of words -
  • morphological synthesis: generate all inflection forms of words -
  • random generation: generate random expressions -
  • corpus generation: generate all expressions -
  • teaching quizzes: train morphology and translation -
  • multilingual authoring: create a document in many languages simultaneously -
  • speech input: optimize a speech recognition system for your grammar -
- -

-A typical GF application is based on a multilingual grammar involving -translation on a special domain. Existing applications of this idea include -

-
    -
  • Alfa:: - a natural-language interface to a proof editor - (languages: English, French, Swedish) -
  • KeY: - a multilingual authoring system for creating software specifications - (languages: OCL, English, German) -
  • TALK: - multilingual and multimodal dialogue systems - (languages: English, Finnish, French, German, Italian, Spanish, Swedish) -
  • WebALT: - a multilingual translator of mathematical exercises - (languages: Catalan, English, Finnish, French, Spanish, Swedish) -
  • Numeral translator: - number words from 1 to 999,999 - (88 languages) -
- -

-The specialization of a grammar to a domain makes it possible to -obtain much better translations than in an unlimited machine translation -system. This is due to the well-defined semantics of such domains. -Grammars having this character are called application grammars. -They are different from most grammars written by linguists just -because they are multilingual and domain-specific. -

-

-However, there is another kind of grammars, which we call resource grammars. -These are large, comprehensive grammars that can be used on any domain. -The GF Resource Grammar Library has resource grammars for 10 languages. -These grammars can be used as libraries to define application grammars. -In this way, it is possible to write a high-quality grammar without -knowing about linguistics: in general, to write an application grammar -by using the resource library just requires practical knowledge of -the target language. and all theoretical knowledge about its grammar -is given by the libraries. -

- -

Who is this tutorial for

-

-This tutorial is mainly for programmers who want to learn to write -application grammars. It will go through GF's programming concepts -without entering too deep into linguistics. Thus it should -be accessible to anyone who has some previous programming experience. -

-

-A separate document is being written on how to write resource grammars. -This includes the ways in which linguistic problems posed by different -languages are solved in GF. -

- -

The coverage of the tutorial

-

-The tutorial gives a hands-on introduction to grammar writing. -We start by building a small grammar for the domain of food: -in this grammar, you can say things like -

-
-    this Italian cheese is delicious
-
-

-in English and Italian. -

-

-The first English grammar -food.cf -is written in a context-free -notation (also known as BNF). The BNF format is often a good -starting point for GF grammar development, because it is -simple and widely used. However, the BNF format is not -good for multilingual grammars. While it is possible to -"translate" by just changing the words contained in a -BNF grammar to words of some other -language, proper translation usually involves more. -For instance, the order of words may have to be changed: -

-
-    Italian cheese ===> formaggio italiano
-
-

-The full GF grammar format is designed to support such -changes, by separating between the abstract syntax -(the logical structure) and the concrete syntax (the -sequence of words) of expressions. -

-

-There is more than words and word order that makes languages -different. Words can have different forms, and which forms -they have vary from language to language. For instance, -Italian adjectives usually have four forms where English -has just one: -

-
-    delicious (wine, wines, pizza, pizzas)
-    vino delizioso, vini deliziosi, pizza deliziosa, pizze deliziose
-
-

-The morphology of a language describes the -forms of its words. While the complete description of morphology -belongs to resource grammars, this tutorial will explain the -programming concepts involved in morphology. This will moreover -make it possible to grow the fragment covered by the food example. -The tutorial will in fact build a miniature resource grammar in order -to illustrate the module structure of library-based application -grammar writing. -

-

-Thus it is by elaborating the initial food.cf example that -the tutorial makes a guided tour through all concepts of GF. -While the constructs of the GF language are the main focus, -also the commands of the GF system are introduced as they -are needed. -

-

-To learn how to write GF grammars is not the only goal of -this tutorial. To learn the commands of the GF system means -that simple applications of grammars, such as translation and -quiz systems, can be built simply by writing scripts for the -system. More complicated applications, such as natural-language -interfaces and dialogue systems, also require programming in -some general-purpose language. We will briefly explain how -GF grammars are used as components of Haskell, Java, Javascript, -and Prolog grammars. The tutorial concludes with a couple of -case studies showing how such complete systems can be built. -

- -

Getting the GF program

-

-The GF program is open-source free software, which you can download via the -GF Homepage: -http://www.cs.chalmers.se/~aarne/GF -

-

-There you can download -

-
    -
  • binaries for Linux, Solaris, Macintosh, and Windows -
  • source code and documentation -
  • grammar libraries and examples -
- -

-If you want to compile GF from source, you need Haskell and Java -compilers. But normally you don't have to compile, and you definitely -don't need to know Haskell or Java to use GF. -

-

-To start the GF program, assuming you have installed it, just type -

-
-    % gf
-
-

-in the shell. You will see GF's welcome message and the prompt >. -The command -

-
-    > help
-
-

-will give you a list of available commands. -

-

-As a common convention in this Tutorial, we will use -

-
    -
  • % as a prompt that marks system commands -
  • > as a prompt that marks GF commands -
- -

-Thus you should not type these prompts, but only the lines that -follow them. -

- -

The .cf grammar format

-

-Now you are ready to try out your first grammar. -We start with one that is not written in the GF language, but -in the much more common BNF notation (Backus Naur Form). The GF -program understands a variant of this notation and translates it -internally to GF's own representation. -

-

-To get started, type (or copy) the following lines into a file named -food.cf: -

-
-  Is.        S       ::= Item "is" Quality ;
-  That.      Item    ::= "that" Kind ;
-  This.      Item    ::= "this" Kind ;
-  QKind.     Kind    ::= Quality Kind ;
-  Cheese.    Kind    ::= "cheese" ;
-  Fish.      Kind    ::= "fish" ;
-  Wine.      Kind    ::= "wine" ;
-  Italian.   Quality ::= "Italian" ;
-  Boring.    Quality ::= "boring" ;
-  Delicious. Quality ::= "delicious" ;
-  Expensive. Quality ::= "expensive" ;
-  Fresh.     Quality ::= "fresh" ;
-  Very.      Quality ::= "very" Quality ;
-  Warm.      Quality ::= "warm" ;
-
-

-For those who know ordinary BNF, the -notation we use includes one extra element: a label appearing -as the first element of each rule and terminated by a full stop. -

-

-The grammar we wrote defines a set of phrases usable for speaking about food. -It builds sentences (S) by assigning Qualitys to -Items. Items are build from Kinds by prepending the -word "this" or "that". Kinds are either atomic, such as -"cheese" and "wine", or formed by prepending a Quality to a -Kind. A Quality is either atomic, such as "Italian" and "boring", -or built by another Quality by prepending "very". Those familiar with -the context-free grammar notation will notice that, for instance, the -following sentence can be built using this grammar: -

-
-    this delicious Italian wine is very very expensive
-
-

- -

Importing grammars and parsing strings

-

-The first GF command needed when using a grammar is to import it. -The command has a long name, import, and a short name, i. -You can type either -

-
-    > import food.cf
-
-

-or -

-
-    > i food.cf
-
-

-to get the same effect. -The effect is that the GF program compiles your grammar into an internal -representation, and shows a new prompt when it is ready. -

-

-You can now use GF for parsing: -

-
-    > parse "this cheese is delicious"
-    Is (This Cheese) Delicious
-  
-    > p "that wine is very very Italian"
-    Is (That Wine) (Very (Very Italian))
-
-

-The parse (= p) command takes a string -(in double quotes) and returns an abstract syntax tree - the thing -beginning with Is. Trees are built from the rule labels given in the -grammar, and record the ways in which the rules are used to produce the -strings. A tree is, in general, something easier than a string -for a machine to understand and to process further. -

-

-Strings that return a tree when parsed do so in virtue of the grammar -you imported. Try parsing something else, and you fail -

-
-    > p "hello world"
-    No success in cf parsing hello world
-    no tree found
-
-

- -

Generating trees and strings

-

-You can also use GF for linearizing -(linearize = l). This is the inverse of -parsing, taking trees into strings: -

-
-    > linearize Is (That Wine) Warm
-    that wine is warm
-
-

-What is the use of this? Typically not that you type in a tree at -the GF prompt. The utility of linearization comes from the fact that -you can obtain a tree from somewhere else. One way to do so is -random generation (generate_random = gr): -

-
-    > generate_random
-    Is (This (QKind Italian Fish)) Fresh
-
-

-Now you can copy the tree and paste it to the linearize command. -Or, more conveniently, feed random generation into linearization by using -a pipe. -

-
-    > gr | l
-    this Italian fish is fresh
-
-

- -

Visualizing trees

-

-The gibberish code with parentheses returned by the parser does not -look like trees. Why is it called so? From the abstract mathematical -point of view, trees are a data structure that -represents nesting: trees are branching entities, and the branches -are themselves trees. Parentheses give a linear representation of trees, -useful for the computer. But the human eye may prefer to see a visualization; -for this purpose, GF provides the command visualizre_tree = vt, to which -parsing (and any other tree-producing command) can be piped: -

-
-    parse "this delicious cheese is very Italian" | vt
-
-

-

- -

- -

Some random-generated sentences

-

-Random generation is a good way to test a grammar; it can also -be quite amusing. So you may want to -generate ten strings with one and the same command: -

-
-    > gr -number=10 | l
-    that wine is boring
-    that fresh cheese is fresh
-    that cheese is very boring
-    this cheese is Italian
-    that expensive cheese is expensive
-    that fish is fresh
-    that wine is very Italian
-    this wine is Italian
-    this cheese is boring
-    this fish is boring
-
-

- -

Systematic generation

-

-To generate all sentence that a grammar -can generate, use the command generate_trees = gt. -

-
-    > generate_trees | l
-    that cheese is very Italian
-    that cheese is very boring
-    that cheese is very delicious
-    that cheese is very expensive
-    that cheese is very fresh
-    ...
-    this wine is expensive
-    this wine is fresh
-    this wine is warm
-  
-
-

-You get quite a few trees but not all of them: only up to a given -depth of trees. To see how you can get more, use the -help = h command, -

-
-    help gt
-
-

-Quiz. If the command gt generated all -trees in your grammar, it would never terminate. Why? -

- -

More on pipes; tracing

-

-A pipe of GF commands can have any length, but the "output type" -(either string or tree) of one command must always match the "input type" -of the next command. -

-

-The intermediate results in a pipe can be observed by putting the -tracing flag -tr to each command whose output you -want to see: -

-
-    > gr -tr | l -tr | p
-  
-    Is (This Cheese) Boring
-    this cheese is boring
-    Is (This Cheese) Boring  
-
-

-This facility is good for test purposes: for instance, you -may want to see if a grammar is ambiguous, i.e. -contains strings that can be parsed in more than one way. -

- -

Writing and reading files

-

-To save the outputs of GF commands into a file, you can -pipe it to the write_file = wf command, -

-
-    > gr -number=10 | l | write_file exx.tmp
-
-

-You can read the file back to GF with the -read_file = rf command, -

-
-    > read_file exx.tmp | p -lines
-
-

-Notice the flag -lines given to the parsing -command. This flag tells GF to parse each line of -the file separately. Without the flag, the grammar could -not recognize the string in the file, because it is not -a sentence but a sequence of ten sentences. -

- -

The .gf grammar format

-

-To see GF's internal representation of a grammar -that you have imported, you can give the command -print_grammar = pg, -

-
-    > print_grammar
-
-

-The output is quite unreadable at this stage, and you may feel happy that -you did not need to write the grammar in that notation, but that the -GF grammar compiler produced it. -

-

-However, we will now start the demonstration -how GF's own notation gives you -much more expressive power than the .cf -format. We will introduce the .gf format by presenting -another way of defining the same grammar as in -food.cf. -Then we will show how the full GF grammar format enables you -to do things that are not possible in the context-free format. -

- -

Abstract and concrete syntax

-

-A GF grammar consists of two main parts: -

-
    -
  • abstract syntax, defining what syntax trees there are -
  • concrete syntax, defining how trees are linearized into strings -
- -

-The context-free format fuses these two things together, but it is always -possible to take them apart. For instance, the sentence formation rule -

-
-    Is. S ::= Item "is" Quality ;
-
-

-is interpreted as the following pair of GF rules: -

-
-    fun Is : Item -> Quality -> S ;
-    lin Is item quality = {s = item.s ++ "is" ++ quality.s} ;
-
-

-The former rule, with the keyword fun, belongs to the abstract syntax. -It defines the function -Is which constructs syntax trees of form -(Is item quality). -

-

-The latter rule, with the keyword lin, belongs to the concrete syntax. -It defines the linearization function for -syntax trees of form (Is item quality). -

- -

Judgement forms

-

-Rules in a GF grammar are called judgements, and the keywords -fun and lin are used for distinguishing between two -judgement forms. Here is a summary of the most important -judgement forms: -

-
    -
  • abstract syntax -

    -
- - - - - - - - - - - - - - -
formreading
cat CC is a category
fun f : Af is a function of type A
- -
    -
  • concrete syntax -

    -
- - - - - - - - - - - - - - -
formreading
lincat C = Tcategory C has linearization type T
lin f = tfunction f has linearization t
- -

-We return to the precise meanings of these judgement forms later. -First we will look at how judgements are grouped into modules, and -show how the food grammar is -expressed by using modules and judgements. -

- -

Module types

-

-A GF grammar consists of modules, -into which judgements are grouped. The most important -module forms are -

-
    -
  • abstract A = M, abstract syntax A with judgements in - the module body M. -
  • concrete C of A = M, concrete syntax C of the - abstract syntax A, with judgements in the module body M. -
- - -

Records and strings

-

-The linearization type of a category is a record type, with -zero of more fields of different types. The simplest record -type used for linearization in GF is -

-
-    {s : Str}
-
-

-which has one field, with label s and type Str. -

-

-Examples of records of this type are -

-
-    {s = "foo"}
-    {s = "hello" ++ "world"}
-
-

-

-Whenever a record r of type {s : Str} is given, -r.s is an object of type Str. This is -a special case of the projection rule, allowing the extraction -of fields from a record: -

-
    -
  • if r : { ... p : T ... } then r.p : T -
- -

-The type Str is really the type of token lists, but -most of the time one can conveniently think of it as the type of strings, -denoted by string literals in double quotes. -

-

-Notice that -

-
-   "hello world"
-
-

-is not recommended as an expression of type Str. It denotes -a token with a space in it, and will usually -not work with the lexical analysis that precedes parsing. A shorthand -exemplified by -

-
-   ["hello world and people"]  === "hello" ++ "world" ++ "and" ++ "people"
-
-

-can be used for lists of tokens. The expression -

-
-   []
-
-

-denotes the empty token list. -

- -

An abstract syntax example

-

-To express the abstract syntax of food.cf in -a file Food.gf, we write two kinds of judgements: -

-
    -
  • Each category is introduced by a cat judgement. -
  • Each rule label is introduced by a fun judgement, - with the type formed from the nonterminals of the rule. -
- -
-    abstract Food = {
-  
-    cat
-      S ; Item ; Kind ; Quality ;
-  
-    fun
-      Is : Item -> Quality -> S ;
-      This, That : Kind -> Item ;
-      QKind : Quality -> Kind -> Kind ;
-      Wine, Cheese, Fish : Kind ;
-      Very : Quality -> Quality ;
-      Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ;
-    }
-
-

-Notice the use of shorthands permitting the sharing of -the keyword in subsequent judgements, -

-
-    cat S ; Item ;   ===   cat S ; cat Item ; 
-
-

-and of the type in subsequent fun judgements, -

-
-    fun Wine, Fish : Kind ;            ===
-    fun Wine : Kind ; Fish : Kind ;    ===
-    fun Wine : Kind ; fun Fish : Kind ;
-
-

-The order of judgements in a module is free. -

- -

A concrete syntax example

-

-Each category introduced in Food.gf is -given a lincat rule, and each -function is given a lin rule. Similar shorthands -apply as in abstract modules. -

-
-    concrete FoodEng of Food = {
-  
-    lincat
-      S, Item, Kind, Quality = {s : Str} ;
-  
-    lin
-      Is item quality = {s = item.s ++ "is" ++ quality.s} ;
-      This kind = {s = "this" ++ kind.s} ;
-      That kind = {s = "that" ++ kind.s} ;
-      QKind quality kind = {s = quality.s ++ kind.s} ;
-      Wine = {s = "wine"} ;
-      Cheese = {s = "cheese"} ;
-      Fish = {s = "fish"} ;
-      Very quality = {s = "very" ++ quality.s} ;
-      Fresh = {s = "fresh"} ;
-      Warm = {s = "warm"} ;
-      Italian = {s = "Italian"} ;
-      Expensive = {s = "expensive"} ;
-      Delicious = {s = "delicious"} ;
-      Boring = {s = "boring"} ;
-    }
-
-

- -

Modules and files

-

-Source files: Module name + .gf = file name -

-

-Target files: each module is compiled into a .gfc file. -

-

-Import FoodEng.gf and see what happens -

-
-    > i FoodEng.gf
-
-

-The GF program does not only read the file -FoodEng.gf, but also all other files that it -depends on - in this case, Food.gf. -

-

-For each file that is compiled, a .gfc file -is generated. The GFC format (="GF Canonical") is the -"machine code" of GF, which is faster to process than -GF source files. When reading a module, GF decides whether -to use an existing .gfc file or to generate -a new one, by looking at modification times. -

- -

Multilingual grammars and translation

-

-The main advantage of separating abstract from concrete syntax is that -one abstract syntax can be equipped with many concrete syntaxes. -A system with this property is called a multilingual grammar. -

-

-Multilingual grammars can be used for applications such as -translation. Let us build an Italian concrete syntax for -Food and then test the resulting -multilingual grammar. -

- -

An Italian concrete syntax

-
-  concrete FoodIta of Food = {
-  
-    lincat
-      S, Item, Kind, Quality = {s : Str} ;
-  
-    lin
-      Is item quality = {s = item.s ++ "è" ++ quality.s} ;
-      This kind = {s = "questo" ++ kind.s} ;
-      That kind = {s = "quello" ++ kind.s} ;
-      QKind quality kind = {s = kind.s ++ quality.s} ;
-      Wine = {s = "vino"} ;
-      Cheese = {s = "formaggio"} ;
-      Fish = {s = "pesce"} ;
-      Very quality = {s = "molto" ++ quality.s} ;
-      Fresh = {s = "fresco"} ;
-      Warm = {s = "caldo"} ;
-      Italian = {s = "italiano"} ;
-      Expensive = {s = "caro"} ;
-      Delicious = {s = "delizioso"} ;
-      Boring = {s = "noioso"} ;
-  
-  }
-  
-
-

- -

Using a multilingual grammar

-

-Import the two grammars in the same GF session. -

-
-    > i FoodEng.gf
-    > i FoodIta.gf
-
-

-Try generation now: -

-
-    > gr | l
-    quello formaggio molto noioso è italiano
-  
-    > gr | l -lang=FoodEng
-    this fish is warm
-
-

-Translate by using a pipe: -

-
-    > p -lang=FoodEng "this cheese is very delicious" | l -lang=FoodIta
-    questo formaggio è molto delizioso
-
-

-The lang flag tells GF which concrete syntax to use in parsing and -linearization. By default, the flag is set to the last-imported grammar. -To see what grammars are in scope and which is the main one, use the command -print_options = po: -

-
-    > print_options
-    main abstract :     Food
-    main concrete :     FoodIta
-    actual concretes :  FoodIta FoodEng
-
-

- -

Translation session

-

-If translation is what you want to do with a set of grammars, a convenient -way to do it is to open a translation_session = ts. In this session, -you can translate between all the languages that are in scope. -A dot . terminates the translation session. -

-
-    > ts
-  
-    trans> that very warm cheese is boring
-    quello formaggio molto caldo è noioso
-    that very warm cheese is boring
-  
-    trans> questo vino molto italiano è molto delizioso
-    questo vino molto italiano è molto delizioso
-    this very Italian wine is very delicious
-  
-    trans> .
-    >
-
-

- -

Translation quiz

-

-This is a simple language exercise that can be automatically -generated from a multilingual grammar. The system generates a set of -random sentences, displays them in one language, and checks the user's -answer given in another language. The command translation_quiz = tq -makes this in a subshell of GF. -

-
-    > translation_quiz FoodEng FoodIta
-  
-    Welcome to GF Translation Quiz.
-    The quiz is over when you have done at least 10 examples
-    with at least 75 % success.
-    You can interrupt the quiz by entering a line consisting of a dot ('.').
-  
-    this fish is warm
-    questo pesce è caldo
-    > Yes.
-    Score 1/1
-  
-    this cheese is Italian
-    questo formaggio è noioso
-    > No, not questo formaggio è noioso, but
-    questo formaggio è italiano
-  
-    Score 1/2
-    this fish is expensive
-
-

-You can also generate a list of translation exercises and save it in a -file for later use, by the command translation_list = tl -

-
-    > translation_list -number=25 FoodEng FoodIta
-
-

-The number flag gives the number of sentences generated. -

- -

Grammar architecture

- -

Extending a grammar

-

-The module system of GF makes it possible to extend a -grammar in different ways. The syntax of extension is -shown by the following example. We extend Food by -adding a category of questions and two new functions. -

-
-    abstract Morefood = Food ** {
-      cat
-        Question ;
-      fun
-        QIs : Item -> Quality -> Question ;
-        Pizza : Kind ;
-        
-    }
-
-

-Parallel to the abstract syntax, extensions can -be built for concrete syntaxes: -

-
-    concrete MorefoodEng of Morefood = FoodEng ** {
-      lincat
-        Question = {s : Str} ;
-      lin
-        QIs item quality = {s = "is" ++ item.s ++ quality.s} ;
-        Pizza = {s = "pizza"} ;
-    }
-
-

-The effect of extension is that all of the contents of the extended -and extending module are put together. -

- -

Multiple inheritance

-

-Specialized vocabularies can be represented as small grammars that -only do "one thing" each. For instance, the following are grammars -for fruit and mushrooms -

-
-    abstract Fruit = {
-      cat Fruit ;
-      fun Apple, Peach : Fruit ;
-    }
-  
-    abstract Mushroom = {
-      cat Mushroom ;
-      fun Cep, Agaric : Mushroom ;
-    }
-
-

-They can afterwards be combined into bigger grammars by using -multiple inheritance, i.e. extension of several grammars at the -same time: -

-
-    abstract Foodmarket = Food, Fruit, Mushroom ** {
-      fun 
-        FruitKind    : Fruit    -> Kind ;
-        MushroomKind : Mushroom -> Kind ;
-      }
-
-

-At this point, you would perhaps like to go back to -Food and take apart Wine to build a special -Drink module. -

- -

Visualizing module structure

-

-When you have created all the abstract syntaxes and -one set of concrete syntaxes needed for Foodmarket, -your grammar consists of eight GF modules. To see how their -dependences look like, you can use the command -visualize_graph = vg, -

-
-    > visualize_graph
-
-

-and the graph will pop up in a separate window. -

-

-The graph uses -

-
    -
  • oval boxes for abstract modules -
  • square boxes for concrete modules -
  • black-headed arrows for inheritance -
  • white-headed arrows for the concrete-of-abstract relation -
- -

- -

- -

System commands

-

-To document your grammar, you may want to print the -graph into a file, e.g. a .png file that -can be included in an HTML document. You can do this -by first printing the graph into a file .dot and then -processing this file with the dot program. -

-
-    > pm -printer=graph | wf Foodmarket.dot
-    > ! dot -Tpng Foodmarket.dot > Foodmarket.png
-
-

-The latter command is a Unix command, issued from GF by using the -shell escape symbol !. The resulting graph was shown in the previous section. -

-

-The command print_multi = pm is used for printing the current multilingual -grammar in various formats, of which the format -printer=graph just -shows the module dependencies. Use help to see what other formats -are available: -

-
-    > help pm
-    > help -printer
-
-

- -

Resource modules

- -

The golden rule of functional programming

-

-In comparison to the .cf format, the .gf format looks rather -verbose, and demands lots more characters to be written. You have probably -done this by the copy-paste-modify method, which is a common way to -avoid repeating work. -

-

-However, there is a more elegant way to avoid repeating work than the copy-and-paste -method. The golden rule of functional programming says that -

-
    -
  • whenever you find yourself programming by copy-and-paste, write a function instead. -
- -

-A function separates the shared parts of different computations from the -changing parts, parameters. In functional programming languages, such as -Haskell, it is possible to share much more than in -languages such as C and Java. -

- -

Operation definitions

-

-GF is a functional programming language, not only in the sense that -the abstract syntax is a system of functions (fun), but also because -functional programming can be used to define concrete syntax. This is -done by using a new form of judgement, with the keyword oper (for -operation), distinct from fun for the sake of clarity. -Here is a simple example of an operation: -

-
-    oper ss : Str -> {s : Str} = \x -> {s = x} ;
-
-

-The operation can be applied to an argument, and GF will -compute the application into a value. For instance, -

-
-    ss "boy"  --->  {s = "boy"}
-
-

-(We use the symbol ---> to indicate how an expression is -computed into a value; this symbol is not a part of GF) -

-

-Thus an oper judgement includes the name of the defined operation, -its type, and an expression defining it. As for the syntax of the defining -expression, notice the lambda abstraction form \x -> t of -the function. -

- -

The ``resource`` module type

-

-Operator definitions can be included in a concrete syntax. -But they are not really tied to a particular set of linearization rules. -They should rather be seen as resources -usable in many concrete syntaxes. -

-

-The resource module type can be used to package -oper definitions into reusable resources. Here is -an example, with a handful of operations to manipulate -strings and records. -

-
-    resource StringOper = {
-      oper
-        SS : Type = {s : Str} ;
-        ss : Str -> SS = \x -> {s = x} ;
-        cc : SS -> SS -> SS = \x,y -> ss (x.s ++ y.s) ;
-        prefix : Str -> SS -> SS = \p,x -> ss (p ++ x.s) ;
-    }
-
-

-Resource modules can extend other resource modules, in the -same way as modules of other types can extend modules of the -same type. Thus it is possible to build resource hierarchies. -

- -

Opening a ``resource``

-

-Any number of resource modules can be -opened in a concrete syntax, which -makes definitions contained -in the resource usable in the concrete syntax. Here is -an example, where the resource StringOper is -opened in a new version of FoodEng. -

-
-    concrete Food2Eng of Food = open StringOper in {
-  
-    lincat
-      S, Item, Kind, Quality = SS ;
-  
-    lin
-      Is item quality = cc item (prefix "is" quality) ;
-      This = prefix "this" ;
-      That = prefix "that" ;
-      QKind = cc ;
-      Wine = ss "wine" ;
-      Cheese = ss "cheese" ;
-      Fish = ss "fish" ;
-      Very = prefix "very" ;
-      Fresh = ss "fresh" ;
-      Warm = ss "warm" ;
-      Italian = ss "Italian" ;
-      Expensive = ss "expensive" ;
-      Delicious = ss "delicious" ;
-      Boring = ss "boring" ;
-  
-    }
-
-

-The same string operations could be used to write FoodIta -more concisely. -

- -

Division of labour

-

-Using operations defined in resource modules is a -way to avoid repetitive code. -In addition, it enables a new kind of modularity -and division of labour in grammar writing: grammarians familiar with -the linguistic details of a language can make this knowledge -available through resource grammar modules, whose users only need -to pick the right operations and not to know their implementation -details. -

- -

Morphology

-

-Suppose we want to say, with the vocabulary included in -Food.gf, things like -

-
-    all Italian wines are delicious
-
-

-The new grammatical facility we need are the plural forms -of nouns and verbs (wines, are), as opposed to their -singular forms. -

-

-The introduction of plural forms requires two things: -

-
    -
  • the inflection of nouns and verbs in singular and plural -
  • the agreement of the verb to subject: - the verb must have the same number as the subject -
- -

-Different languages have different rules of inflection and agreement. -For instance, Italian has also agreement in gender (masculine vs. feminine). -We want to express such special features of languages in the -concrete syntax while ignoring them in the abstract syntax. -

-

-To be able to do all this, we need one new judgement form -and many new expression forms. -We also need to generalize linearization types -from strings to more complex types. -

- -

Parameters and tables

-

-We define the parameter type of number in Englisn by -using a new form of judgement: -

-
-    param Number = Sg | Pl ;
-
-

-To express that Kind expressions in English have a linearization -depending on number, we replace the linearization type {s : Str} -with a type where the s field is a table depending on number: -

-
-    lincat Kind = {s : Number => Str} ;
-
-

-The table type Number => Str is in many respects similar to -a function type (Number -> Str). The main difference is that the -argument type of a table type must always be a parameter type. This means -that the argument-value pairs can be listed in a finite table. The following -example shows such a table: -

-
-    lin Cheese = {s = table {
-      Sg => "cheese" ;
-      Pl => "cheeses"
-      }
-    } ;
-
-

-The table consists of branches, where a pattern on the -left of the arrow => is assigned a value on the right. -

-

-The application of a table to a parameter is done by the selection -operator !. For instance, -

-
-     table {Sg => "cheese" ; Pl => "cheeses"} ! Pl
-
-

-is a selection that computes into the value "cheeses". -This computation is performed by pattern matching: return -the value from the first branch whose pattern matches the -selection argument. -

- -

Inflection tables, paradigms, and ``oper`` definitions

-

-All English common nouns are inflected in number, most of them in the -same way: the plural form is obtained from the singular by adding the -ending s. This rule is an example of -a paradigm - a formula telling how the inflection -forms of a word are formed. -

-

-From the GF point of view, a paradigm is a function that takes a lemma - -also known as a dictionary form - and returns an inflection -table of desired type. Paradigms are not functions in the sense of the -fun judgements of abstract syntax (which operate on trees and not -on strings), but operations defined in oper judgements. -The following operation defines the regular noun paradigm of English: -

-
-    oper regNoun : Str -> {s : Number => Str} = \x -> {
-      s = table {
-        Sg => x ;
-        Pl => x + "s"
-        }
-      } ;
-
-

-The gluing operator + tells that -the string held in the variable x and the ending "s" -are written together to form one token. Thus, for instance, -

-
-    (regNoun "cheese").s ! Pl  ---> "cheese" + "s"  --->  "cheeses"
-
-

- -

Worst-case functions and data abstraction

-

-Some English nouns, such as mouse, are so irregular that -it makes no sense to see them as instances of a paradigm. Even -then, it is useful to perform data abstraction from the -definition of the type Noun, and introduce a constructor -operation, a worst-case function for nouns: -

-
-    oper mkNoun : Str -> Str -> Noun = \x,y -> {
-      s = table {
-        Sg => x ;
-        Pl => y
-        }
-      } ;
-
-

-Thus we could define -

-
-    lin Mouse = mkNoun "mouse" "mice" ;
-
-

-and -

-
-    oper regNoun : Str -> Noun = \x -> 
-      mkNoun x (x + "s") ;
-
-

-instead of writing the inflection table explicitly. -

-

-The grammar engineering advantage of worst-case functions is that -the author of the resource module may change the definitions of -Noun and mkNoun, and still retain the -interface (i.e. the system of type signatures) that makes it -correct to use these functions in concrete modules. In programming -terms, Noun is then treated as an abstract datatype. -

- -

A system of paradigms using Prelude operations

-

-In addition to the completely regular noun paradigm regNoun, -some other frequent noun paradigms deserve to be -defined, for instance, -

-
-    sNoun : Str -> Noun = \kiss  -> mkNoun kiss  (kiss  + "es") ;
-
-

-What about nouns like fly, with the plural flies? The already -available solution is to use the longest common prefix -fl (also known as the technical stem) as argument, and define -

-
-    yNoun : Str -> Noun = \fl -> mkNoun (fl  + "y") (fl  + "ies") ;
-
-

-But this paradigm would be very unintuitive to use, because the technical stem -is not an existing form of the word. A better solution is to use -the lemma and a string operator init, which returns the initial segment (i.e. -all characters but the last) of a string: -

-
-    yNoun : Str -> Noun = \fly -> mkNoun fly (init fly  + "ies") ;  
-
-

-The operation init belongs to a set of operations in the -resource module Prelude, which therefore has to be -opened so that init can be used. -

- -

An intelligent noun paradigm using ``case`` expressions

-

-It may be hard for the user of a resource morphology to pick the right -inflection paradigm. A way to help this is to define a more intelligent -paradigm, which chooses the ending by first analysing the lemma. -The following variant for English regular nouns puts together all the -previously shown paradigms, and chooses one of them on the basis of -the final letter of the lemma (found by the prelude operator last). -

-
-    regNoun : Str -> Noun = \s -> case last s of {
-      "s" | "z" => mkNoun s (s + "es") ;
-      "y"       => mkNoun s (init s + "ies") ;
-      _         => mkNoun s (s + "s")
-      } ;
-
-

-This definition displays many GF expression forms not shown befores; -these forms are explained in the next section. -

-

-The paradigms regNoun does not give the correct forms for -all nouns. For instance, mouse - mice and -fish - fish must be given by using mkNoun. -Also the word boy would be inflected incorrectly; to prevent -this, either use mkNoun or modify -regNoun so that the "y" case does not -apply if the second-last character is a vowel. -

- -

Pattern matching

-

-We have so far built all expressions of the table form -from branches whose patterns are constants introduced in -param definitions, as well as constant strings. -But there are more expressive patterns. Here is a summary of the possible forms: -

-
    -
  • a variable pattern (identifier other than constant parameter) matches anything -
  • the wild card _ matches anything -
  • a string literal pattern, e.g. "s", matches the same string -
  • a disjunctive pattern P | ... | Q matches anything that - one of the disjuncts matches -
- -

-Pattern matching is performed in the order in which the branches -appear in the table: the branch of the first matching pattern is followed. -

-

-As syntactic sugar, one-branch tables can be written concisely, -

-
-    \\P,...,Q => t  ===  table {P => ... table {Q => t} ...}
-
-

-Finally, the case expressions common in functional -programming languages are syntactic sugar for table selections: -

-
-    case e of {...} ===  table {...} ! e
-
-

- -

Morphological resource modules

-

-A common idiom is to -gather the oper and param definitions -needed for inflecting words in -a language into a morphology module. Here is a simple -example, MorphoEng. -

-
-    --# -path=.:prelude
-  
-    resource MorphoEng = open Prelude in {
-  
-      param
-        Number = Sg | Pl ;
-  
-      oper
-        Noun, Verb : Type = {s : Number => Str} ;
-  
-        mkNoun : Str -> Str -> Noun = \x,y -> {
-          s = table {
-            Sg => x ;
-            Pl => y
-            }
-          } ;
-  
-        regNoun : Str -> Noun = \s -> case last s of {
-          "s" | "z" => mkNoun s (s + "es") ;
-          "y"       => mkNoun s (init s + "ies") ;
-          _         => mkNoun s (s + "s")
-          } ;
-  
-        mkVerb : Str -> Str -> Verb = \x,y -> mkNoun y x ;
-  
-        regVerb : Str -> Verb = \s -> case last s of {
-          "s" | "z" => mkVerb s (s + "es") ;
-          "y"       => mkVerb s (init s + "ies") ;
-          "o"       => mkVerb s (s + "es") ;
-          _         => mkVerb s (s + "s")
-          } ;
-    }
-
-

-The first line gives as a hint to the compiler the -search path needed to find all the other modules that the -module depends on. The directory prelude is a subdirectory of -GF/lib; to be able to refer to it in this simple way, you can -set the environment variable GF_LIB_PATH to point to this -directory. -

- -

Testing resource modules

-

-To test a resource module independently, you must import it -with the flag -retain, which tells GF to retain oper definitions -in the memory; the usual behaviour is that oper definitions -are just applied to compile linearization rules -(this is called inlining) and then thrown away. -

-
-    > i -retain MorphoEng.gf
-
-

-The command compute_concrete = cc computes any expression -formed by operations and other GF constructs. For example, -

-
-    > cc regVerb "echo"
-    {s : Number => Str = table Number {
-      Sg => "echoes" ;
-      Pl => "echo"
-      }
-    }
-
-

-

-The command show_operations = so` shows the type signatures -of all operations returning a given value type: -

-
-    > so Verb
-    MorphoEng.mkNoun : Str -> Str -> {s : {MorphoEng.Number} => Str}
-    MorphoEng.mkVerb : Str -> Str -> {s : {MorphoEng.Number} => Str}
-    MorphoEng.regNoun : Str -> {s : {MorphoEng.Number} => Str}
-    MorphoEng.regVerb : Str -> { s : {MorphoEng.Number} => Str}
-
-

-Why does the command also show the operations that form -Nouns? The reason is that the type expression -Verb is first computed, and its value happens to be -the same as the value of Noun. -

- -

Using parameters in concrete syntax

-

-We can now enrich the concrete syntax definitions to -comprise morphology. This will involve a more radical -variation between languages (e.g. English and Italian) -then just the use of different words. In general, -parameters and linearization types are different in -different languages - but this does not prevent the -use of a common abstract syntax. -

- -

Parametric vs. inherent features, agreement

-

-The rule of subject-verb agreement in English says that the verb -phrase must be inflected in the number of the subject. This -means that a noun phrase (functioning as a subject), inherently -has a number, which it passes to the verb. The verb does not -have a number, but must be able to receive whatever number the -subject has. This distinction is nicely represented by the -different linearization types of noun phrases and verb phrases: -

-
-    lincat NP = {s : Str ; n : Number} ;
-    lincat VP = {s : Number => Str} ;
-
-

-We say that the number of NP is an inherent feature, -whereas the number of NP is a variable feature (or a -parametric feature). -

-

-The agreement rule itself is expressed in the linearization rule of -the predication function: -

-
-    lin PredVP np vp = {s = np.s ++ vp.s ! np.n} ;
-
-

-The following section will present -FoodsEng, assuming the abstract syntax Foods -that is similar to Food but also has the -plural determiners These and Those. -The reader is invited to inspect the way in which agreement works in -the formation of sentences. -

- -

English concrete syntax with parameters

-

-The grammar uses both -Prelude and -MorphoEng. -We will later see how to make the grammar even -more high-level by using a resource grammar library -and parametrized modules. -

-
-  --# -path=.:resource:prelude
-  
-  concrete FoodsEng of Foods = open Prelude, MorphoEng in {
-  
-    lincat
-      S, Quality = SS ; 
-      Kind = {s : Number => Str} ; 
-      Item = {s : Str ; n : Number} ; 
-  
-    lin
-      Is item quality = ss (item.s ++ (mkVerb "are" "is").s ! item.n ++ quality.s) ;
-      This  = det Sg "this" ;
-      That  = det Sg "that" ;
-      These = det Pl "these" ;
-      Those = det Pl "those" ;
-      QKind quality kind = {s = \\n => quality.s ++ kind.s ! n} ;
-      Wine = regNoun "wine" ;
-      Cheese = regNoun "cheese" ;
-      Fish = mkNoun "fish" "fish" ;
-      Very = prefixSS "very" ;
-      Fresh = ss "fresh" ;
-      Warm = ss "warm" ;
-      Italian = ss "Italian" ;
-      Expensive = ss "expensive" ;
-      Delicious = ss "delicious" ;
-      Boring = ss "boring" ;
-  
-    oper
-      det : Number -> Str -> Noun -> {s : Str ; n : Number} = \n,d,cn -> {
-        s = d ++ cn.s ! n ;
-        n = n
-        } ;
-  
-  }
-
-

- -

Hierarchic parameter types

-

-The reader familiar with a functional programming language such as -Haskell must have noticed the similarity -between parameter types in GF and algebraic datatypes (data definitions -in Haskell). The GF parameter types are actually a special case of algebraic -datatypes: the main restriction is that in GF, these types must be finite. -(It is this restriction that makes it possible to invert linearization rules into -parsing methods.) -

-

-However, finite is not the same thing as enumerated. Even in GF, parameter -constructors can take arguments, provided these arguments are from other -parameter types - only recursion is forbidden. Such parameter types impose a -hierarchic order among parameters. They are often needed to define -the linguistically most accurate parameter systems. -

-

-To give an example, Swedish adjectives -are inflected in number (singular or plural) and -gender (uter or neuter). These parameters would suggest 2*2=4 different -forms. However, the gender distinction is done only in the singular. Therefore, -it would be inaccurate to define adjective paradigms using the type -Gender => Number => Str. The following hierarchic definition -yields an accurate system of three adjectival forms. -

-
-    param AdjForm = ASg Gender | APl ;
-    param Gender  = Utr | Neutr ;
-
-

-Here is an example of pattern matching, the paradigm of regular adjectives. -

-
-    oper regAdj : Str -> AdjForm => Str = \fin -> table {
-      ASg Utr   => fin ;
-      ASg Neutr => fin + "t" ;
-      APl       => fin + "a" ;
-      }
-
-

-A constructor can be used as a pattern that has patterns as arguments. For instance, -the adjectival paradigm in which the two singular forms are the same, -can be defined -

-
-    oper plattAdj : Str -> AdjForm => Str = \platt -> table {
-      ASg _ => platt ;
-      APl   => platt + "a" ;
-      }
-
-

- -

Morphological analysis and morphology quiz

-

-Even though morphology is in GF -mostly used as an auxiliary for syntax, it -can also be useful on its own right. The command morpho_analyse = ma -can be used to read a text and return for each word the analyses that -it has in the current concrete syntax. -

-
-    > rf bible.txt | morpho_analyse
-
-

-In the same way as translation exercises, morphological exercises can -be generated, by the command morpho_quiz = mq. Usually, -the category is set to be something else than S. For instance, -

-
-    > i lib/resource/french/VerbsFre.gf
-    > morpho_quiz -cat=V
-  
-    Welcome to GF Morphology Quiz.
-    ...
-  
-    réapparaître : VFin VCondit  Pl  P2
-    réapparaitriez
-    > No, not réapparaitriez, but
-    réapparaîtriez
-    Score 0/1
-
-

-Finally, a list of morphological exercises can be generated -off-line and saved in a -file for later use, by the command morpho_list = ml -

-
-    > morpho_list -number=25 -cat=V | wf exx.txt
-
-

-The number flag gives the number of exercises generated. -

- -

Discontinuous constituents

-

-A linearization type may contain more strings than one. -An example of where this is useful are English particle -verbs, such as switch off. The linearization of -a sentence may place the object between the verb and the particle: -he switched it off. -

-

-The following judgement defines transitive verbs as -discontinuous constituents, i.e. as having a linearization -type with two strings and not just one. -

-
-    lincat TV = {s : Number => Str ; part : Str} ;
-
-

-This linearization rule -shows how the constituents are separated by the object in complementization. -

-
-    lin PredTV tv obj = {s = \\n => tv.s ! n ++ obj.s ++ tv.part} ;
-
-

-There is no restriction in the number of discontinuous constituents -(or other fields) a lincat may contain. The only condition is that -the fields must be of finite types, i.e. built from records, tables, -parameters, and Str, and not functions. -

-

-A mathematical result -about parsing in GF says that the worst-case complexity of parsing -increases with the number of discontinuous constituents. This is -potentially a reason to avoid discontinuous constituents. -Moreover, the parsing and linearization commands only give accurate -results for categories whose linearization type has a unique Str -valued field labelled s. Therefore, discontinuous constituents -are not a good idea in top-level categories accessed by the users -of a grammar application. -

- -

Free variation

-

-Sometimes there are many alternative ways to define a concrete syntax. -For instance, the verb negation in English can be expressed both by -does not and doesn't. In linguistic terms, these expressions -are in free variation. The variants construct of GF can -be used to give a list of strings in free variation. For example, -

-
-    NegVerb verb = {s = variants {["does not"] ; "doesn't} ++ verb.s ! Pl} ;
-
-

-An empty variant list -

-
-    variants {}
-
-

-can be used e.g. if a word lacks a certain form. -

-

-In general, variants should be used cautiously. It is not -recommended for modules aimed to be libraries, because the -user of the library has no way to choose among the variants. -

- -

Overloading of operations

-

-Large libraries, such as the GF Resource Grammar Library, may define -hundreds of names, which can be unpractical -for both the library writer and the user. The writer has to invent longer -and longer names which are not always intuitive, -and the user has to learn or at least be able to find all these names. -A solution to this problem, adopted by languages such as C++, is overloading: -the same name can be used for several functions. When such a name is used, the -compiler performs overload resolution to find out which of the possible functions -is meant. The resolution is based on the types of the functions: all functions that -have the same name must have different types. -

-

-In C++, functions with the same name can be scattered everywhere in the program. -In GF, they must be grouped together in overload groups. Here is an example -of an overload group, defining four ways to define nouns in Italian: -

-
-    oper mkN = overload {
-      mkN : Str -> N                  = -- regular nouns
-      mkN : Str -> Gender -> N        = -- regular nouns with unexpected gender
-      mkN : Str -> Str -> N           = -- irregular nouns
-      mkN : Str -> Str -> Gender -> N = -- irregular nouns with unexpected gender
-    }
-
-

-All of the following uses of mkN are easy to resolve: -

-
-    lin Pizza = mkN "pizza" ;         -- Str -> N
-    lin Hand  = mkN "mano" Fem ;      -- Str -> Gender -> N
-    lin Man   = mkN "uomo" "uomini" ; -- Str -> Str -> N
-
-

- -

Using the resource grammar library TODO

-

-A resource grammar is a grammar built on linguistic grounds, -to describe a language rather than a domain. -The GF resource grammar library, which contains resource grammars for -10 languages, is described more closely in the following -documents: -

- - - -

Interfaces, instances, and functors

- -

The simplest way

-

-The simplest way is to open a top-level Lang module -and a Paradigms module: -

-
-    abstract Foo = ...
-  
-    concrete FooEng = open LangEng, ParadigmsEng in ...
-    concrete FooSwe = open LangSwe, ParadigmsSwe in ...
-
-

-Here is an example. -

-
-  abstract Arithm = {
-    cat
-      Prop ;
-      Nat ;
-    fun
-      Zero : Nat ;
-      Succ : Nat -> Nat ;
-      Even : Nat -> Prop ;
-      And  : Prop -> Prop -> Prop ;
-  }
-  
-  --# -path=.:alltenses:prelude
-  
-  concrete ArithmEng of Arithm = open LangEng, ParadigmsEng in {
-    lincat
-      Prop = S ;
-      Nat  = NP ;
-    lin
-      Zero = 
-        UsePN (regPN "zero" nonhuman) ;
-      Succ n = 
-        DetCN (DetSg (SgQuant DefArt) NoOrd) (ComplN2 (regN2 "successor") n) ;
-      Even n = 
-        UseCl TPres ASimul PPos 
-          (PredVP n (UseComp (CompAP (PositA (regA "even"))))) ;
-      And x y = 
-        ConjS and_Conj (BaseS x y) ;
-  
-  }
-  
-  --# -path=.:alltenses:prelude
-  
-  concrete ArithmSwe of Arithm = open LangSwe, ParadigmsSwe in {
-    lincat
-      Prop = S ;
-      Nat  = NP ;
-    lin
-      Zero = 
-        UsePN (regPN "noll" neutrum) ;
-      Succ n = 
-        DetCN (DetSg (SgQuant DefArt) NoOrd) 
-          (ComplN2 (mkN2 (mk2N "efterföljare" "efterföljare") 
-             (mkPreposition "till")) n) ;
-      Even n = 
-        UseCl TPres ASimul PPos 
-          (PredVP n (UseComp (CompAP (PositA (regA "jämn"))))) ;
-      And x y = 
-        ConjS and_Conj (BaseS x y) ;
-  }
-
-

- -

How to find resource functions

-

-The definitions in this example were found by parsing: -

-
-    > i LangEng.gf
-  
-    -- for Successor:
-    > p -cat=NP -mcfg -parser=topdown "the mother of Paris"
-  
-    -- for Even:
-    > p -cat=S -mcfg -parser=topdown "Paris is old"
-  
-    -- for And:
-    > p -cat=S -mcfg -parser=topdown "Paris is old and I am old"
-
-

-The use of parsing can be systematized by example-based grammar writing, -to which we will return later. -

- -

A functor implementation

-

-The interesting thing now is that the -code in ArithmSwe is similar to the code in ArithmEng, except for -some lexical items ("noll" vs. "zero", "efterföljare" vs. "successor", -"jämn" vs. "even"). How can we exploit the similarities and -actually share code between the languages? -

-

-The solution is to use a functor: an incomplete module that opens -an abstract as an interface, and then instantiate it to different -languages that implement the interface. The structure is as follows: -

-
-    abstract Foo ...
-  
-    incomplete concrete FooI = open Lang, Lex in ...
-  
-    concrete FooEng of Foo = FooI with (Lang=LangEng), (Lex=LexEng) ;
-    concrete FooSwe of Foo = FooI with (Lang=LangSwe), (Lex=LexSwe) ;
-
-

-where Lex is an abstract lexicon that includes the vocabulary -specific to this application: -

-
-    abstract Lex = Cat ** ...
-  
-    concrete LexEng of Lex = CatEng ** open ParadigmsEng in ...
-    concrete LexSwe of Lex = CatSwe ** open ParadigmsSwe in ...  
-
-

-Here, again, a complete example (abstract Arithm is as above): -

-
-  incomplete concrete ArithmI of Arithm = open Lang, Lex in {
-    lincat
-      Prop = S ;
-      Nat  = NP ;
-    lin
-      Zero = 
-        UsePN zero_PN ;
-      Succ n = 
-        DetCN (DetSg (SgQuant DefArt) NoOrd) (ComplN2 successor_N2 n) ;
-      Even n = 
-        UseCl TPres ASimul PPos 
-          (PredVP n (UseComp (CompAP (PositA even_A)))) ;
-      And x y = 
-        ConjS and_Conj (BaseS x y) ;
-  }
-  
-  --# -path=.:alltenses:prelude
-  concrete ArithmEng of Arithm = ArithmI with
-    (Lang = LangEng),
-    (Lex = LexEng) ;
-  
-  --# -path=.:alltenses:prelude
-  concrete ArithmSwe of Arithm = ArithmI with
-    (Lang = LangSwe),
-    (Lex = LexSwe) ;
-  
-  abstract Lex = Cat ** {
-    fun
-      zero_PN : PN ;
-      successor_N2 : N2 ;  
-      even_A : A ;
-  }
-  
-  concrete LexSwe of Lex = CatSwe ** open ParadigmsSwe in {
-    lin 
-      zero_PN = regPN "noll" neutrum ;
-      successor_N2 = 
-        mkN2 (mk2N "efterföljare" "efterföljare") (mkPreposition "till") ;
-      even_A = regA "jämn" ;
-  }
-
-

- -

Restricted inheritance and qualified opening

- -

More constructs for concrete syntax

-

-In this chapter, we go through constructs that are not necessary in simple grammars -or when the concrete syntax relies on libraries, but very useful when writing advanced -concrete syntax implementations, such as resource grammar libraries. -

- -

Local definitions

-

-Local definitions ("let expressions") are used in functional -programming for two reasons: to structure the code into smaller -expressions, and to avoid repeated computation of one and -the same expression. Here is an example, from -MorphoIta: -

-
-    oper regNoun : Str -> Noun = \vino -> 
-          let 
-            vin = init vino ;
-            o   = last vino
-          in
-          case o of {
-            "a"       => mkNoun Fem  vino (vin + "e") ;
-            "o" | "e" => mkNoun Masc vino (vin + "i") ;
-            _         => mkNoun Masc vino vino         
-            } ;
-
-

- -

Record extension and subtyping

-

-Record types and records can be extended with new fields. For instance, -in German it is natural to see transitive verbs as verbs with a case. -The symbol ** is used for both constructs. -

-
-    lincat TV = Verb ** {c : Case} ;
-  
-    lin Follow = regVerb "folgen" ** {c = Dative} ; 
-
-

-To extend a record type or a record with a field whose label it -already has is a type error. -

-

-A record type T is a subtype of another one R, if T has -all the fields of R and possibly other fields. For instance, -an extension of a record type is always a subtype of it. -

-

-If T is a subtype of R, an object of T can be used whenever -an object of R is required. For instance, a transitive verb can -be used whenever a verb is required. -

-

-Contravariance means that a function taking an R as argument -can also be applied to any object of a subtype T. -

- -

Tuples and product types

-

-Product types and tuples are syntactic sugar for record types and records: -

-
-    T1 * ... * Tn   ===   {p1 : T1 ; ... ; pn : Tn}
-    <t1, ...,  tn>  ===   {p1 = T1 ; ... ; pn = Tn}
-
-

-Thus the labels p1, p2,... are hard-coded. -

- -

Record and tuple patterns

-

-Record types of parameter types are also parameter types. -A typical example is a record of agreement features, e.g. French -

-
-    oper Agr : PType = {g : Gender ; n : Number ; p : Person} ;
-
-

-Notice the term PType rather than just Type referring to -parameter types. Every PType is also a Type, but not vice-versa. -

-

-Pattern matching is done in the expected way, but it can moreover -utilize partial records: the branch -

-
-    {g = Fem} => t
-
-

-in a table of type Agr => T means the same as -

-
-    {g = Fem ; n = _ ; p = _} => t
-
-

-Tuple patterns are translated to record patterns in the -same way as tuples to records; partial patterns make it -possible to write, slightly surprisingly, -

-
-    case <g,n,p> of {
-      <Fem> => t
-      ...
-      }
-
-

- -

Regular expression patterns

-

-To define string operations computed at compile time, such -as in morphology, it is handy to use regular expression patterns: -

-
    -
  • p + q : token consisting of p followed by q -
  • p * : token p repeated 0 or more times - (max the length of the string to be matched) -
  • - p : matches anything that p does not match -
  • x @ p : bind to x what p matches -
  • p | q : matches what either p or q matches -
- -

-The last three apply to all types of patterns, the first two only to token strings. -As an example, we give a rule for the formation of English word forms -ending with an s and used in the formation of both plural nouns and -third-person present-tense verbs. -

-
-    add_s : Str -> Str = \w -> case w of {
-      _ + "oo"                           => s + "s" ;   -- bamboo
-      _ + ("s" | "z" | "x" | "sh" | "o") => w + "es" ;  -- bus, hero
-      _ + ("a" | "o" | "u" | "e") + "y"  => w + "s" ;   -- boy
-      x + "y"                            => x + "ies" ; -- fly
-      _                                  => w + "s"     -- car
-      } ;
-
-

-Here is another example, the plural formation in Swedish 2nd declension. -The second branch uses a variable binding with @ to cover the cases where an -unstressed pre-final vowel e disappears in the plural -(nyckel-nycklar, seger-segrar, bil-bilar): -

-
-    plural2 : Str -> Str = \w -> case w of {
-      pojk + "e"                       => pojk + "ar" ;
-      nyck + "e" + l@("l" | "r" | "n") => nyck + l + "ar" ;
-      bil                              => bil + "ar"
-      } ;
-
-

-

-Semantics: variables are always bound to the first match, which is the first -in the sequence of binding lists Match p v defined as follows. In the definition, -p is a pattern and v is a value. -

-
-    Match (p1|p2) v = Match p1 v ++ Match p2 v
-    Match (p1+p2) s = [Match p1 s1 ++ Match p2 s2 | 
-                         i <- [0..length s], (s1,s2) = splitAt i s]
-    Match p*      s = [[]] if Match "" s ++ Match p s ++ Match (p+p) s ++... /= []
-    Match -p      v = [[]] if Match p v = []
-    Match c       v = [[]] if c == v  -- for constant and literal patterns c
-    Match x       v = [[(x,v)]]       -- for variable patterns x
-    Match x@p     v = [[(x,v)]] + M   if M = Match p v /= []
-    Match p       v = [] otherwise    -- failure
-
-

-Examples: -

-
    -
  • x + "e" + y matches "peter" with x = "p", y = "ter" -
  • x + "er"* matches "burgerer" with ``x = "burg" -
- - -

Prefix-dependent choices

-

-Sometimes a token has different forms depending on the token -that follows. An example is the English indefinite article, -which is an if a vowel follows, a otherwise. -Which form is chosen can only be decided at run time, i.e. -when a string is actually build. GF has a special construct for -such tokens, the pre construct exemplified in -

-
-    oper artIndef : Str = 
-      pre {"a" ; "an" / strs {"a" ; "e" ; "i" ; "o"}} ;
-
-

-Thus -

-
-    artIndef ++ "cheese"  --->  "a" ++ "cheese"
-    artIndef ++ "apple"   --->  "an" ++ "apple"
-
-

-This very example does not work in all situations: the prefix -u has no general rules, and some problematic words are -euphemism, one-eyed, n-gram. It is possible to write -

-
-    oper artIndef : Str = 
-      pre {"a" ; 
-           "a"  / strs {"eu" ; "one"} ;
-           "an" / strs {"a" ; "e" ; "i" ; "o" ; "n-"}
-          } ;
-
-

- -

Predefined types and operations

-

-GF has the following predefined categories in abstract syntax: -

-
-    cat Int ;     -- integers, e.g. 0, 5, 743145151019
-    cat Float ;   -- floats,   e.g. 0.0, 3.1415926
-    cat String ;  -- strings,  e.g. "", "foo", "123"
-
-

-The objects of each of these categories are literals -as indicated in the comments above. No fun definition -can have a predefined category as its value type, but -they can be used as arguments. For example: -

-
-    fun StreetAddress : Int -> String -> Address ;
-    lin StreetAddress number street = {s = number.s ++ street.s} ;
-  
-    -- e.g. (StreetAddress 10 "Downing Street") : Address
-
-

-FIXME: The linearization type is {s : Str} for all these categories. -

- -

More concepts of abstract syntax

-

-This section is about the use of the type theory part of GF for -including more semantics in grammars. Some of the subsections present -ideas that have not yet been used in real-world applications, and whose -tool support outside the GF program is not complete. -

- -

GF as a logical framework

-

-In this section, we will show how -to encode advanced semantic concepts in an abstract syntax. -We use concepts inherited from type theory. Type theory -is the basis of many systems known as logical frameworks, which are -used for representing mathematical theorems and their proofs on a computer. -In fact, GF has a logical framework as its proper part: -this part is the abstract syntax. -

-

-In a logical framework, the formalization of a mathematical theory -is a set of type and function declarations. The following is an example -of such a theory, represented as an abstract module in GF. -

-
-  abstract Arithm = {
-    cat
-      Prop ;                        -- proposition
-      Nat ;                         -- natural number
-    fun
-      Zero : Nat ;                  -- 0
-      Succ : Nat -> Nat ;           -- successor of x
-      Even : Nat -> Prop ;          -- x is even
-      And  : Prop -> Prop -> Prop ; -- A and B
-      } 
-
-

-A concrete syntax is given below, as an example of using the resource grammar -library. -

- -

Dependent types

-

-Dependent types are a characteristic feature of GF, -inherited from the -constructive type theory of Martin-Löf and -distinguishing GF from most other grammar formalisms and -functional programming languages. -The initial main motivation for developing GF was, indeed, -to have a grammar formalism with dependent types. -As can be inferred from the fact that we introduce them only now, -after having written lots of grammars without them, -dependent types are no longer the only motivation for GF. -But they are still important and interesting. -

-

-Dependent types can be used for stating stronger -conditions of well-formedness than non-dependent types. -A simple example is postal addresses. Ignoring the other details, -let us take a look at addresses consisting of -a street, a city, and a country. -

-
-  abstract Address = {
-    cat 
-      Address ; Country ; City ; Street ;
-  
-    fun
-      mkAddress : Country -> City -> Street -> Address ;
-  
-      UK, France : Country ;
-      Paris, London, Grenoble : City ;
-      OxfordSt, ShaftesburyAve, BdRaspail, RueBlondel, AvAlsaceLorraine : Street ;
-    }
-
-

-The linearization rules are straightforward, -

-
-    lin
-      mkAddress country city street = 
-        ss (street.s ++ "," ++ city.s ++ "," ++ country.s) ;
-      UK = ss ("U.K.") ;
-      France = ss ("France") ;
-      Paris = ss ("Paris") ;
-      London = ss ("London") ;
-      Grenoble = ss ("Grenoble") ;
-      OxfordSt = ss ("Oxford" ++ "Street") ;
-      ShaftesburyAve = ss ("Shaftesbury" ++ "Avenue") ;
-      BdRaspail = ss ("boulevard" ++ "Raspail") ;
-      RueBlondel = ss ("rue" ++ "Blondel") ;
-      AvAlsaceLorraine = ss ("avenue" ++ "Alsace-Lorraine") ;
-
-

-Notice that, in mkAddress, we have -reversed the order of the constituents. The type of mkAddress -in the abstract syntax takes its arguments in a "logical" order, -with increasing precision. (This order is sometimes even used in the -concrete syntax of addresses, e.g. in Russia). -

-

-Both existing and non-existing addresses are recognized by this -grammar. The non-existing ones in the following randomly generated -list have afterwards been marked by *: -

-
-    > gr -cat=Address -number=7 | l
-  
-    * Oxford Street , Paris , France
-    * Shaftesbury Avenue , Grenoble , U.K.
-    boulevard Raspail , Paris , France
-    * rue Blondel , Grenoble , U.K.
-    * Shaftesbury Avenue , Grenoble , France
-    * Oxford Street , London , France
-    * Shaftesbury Avenue , Grenoble , France
-
-

-Dependent types provide a way to guarantee that addresses are -well-formed. What we do is to include contexts in -cat judgements: -

-
-    cat 
-      Address ; 
-      Country ; 
-      City Country ; 
-      Street (x : Country)(City x) ;
-
-

-The first two judgements are as before, but the third one makes -City dependent on Country: there are no longer just cities, -but cities of the U.K. and cities of France. The fourth judgement -makes Street dependent on City; but since -City is itself dependent on Country, we must -include them both in the context, moreover guaranteeing that -the city is one of the given country. Since the context itself -is built by using a dependent type, we have to use variables -to indicate the dependencies. The judgement we used for City -is actually shorthand for -

-
-    cat City (x : Country)
-
-

-which is only possible if the subsequent context does not depend on x. -

-

-The fun judgements of the grammar are modified accordingly: -

-
-    fun
-      mkAddress : (x : Country) -> (y : City x) -> Street x y -> Address ;
-    
-      UK : Country ;
-      France : Country ;
-      Paris : City France ; 
-      London : City UK ; 
-      Grenoble : City France ;
-      OxfordSt : Street UK London ; 
-      ShaftesburyAve : Street UK London ;
-      BdRaspail : Street France Paris ; 
-      RueBlondel : Street France Paris ; 
-      AvAlsaceLorraine : Street France Grenoble ;
-
-

-Since the type of mkAddress now has dependencies among -its argument types, we have to use variables just like we used in -the context of Street above. What we claimed to be the -"logical" order of the arguments is now forced by the type system -of GF: a variable must be declared (=bound) before it can be -referenced (=used). -

-

-The effect of dependent types is that the *-marked addresses above are -no longer well-formed. What the GF parser actually does is that it -initially accepts them (by using a context-free parsing algorithm) -and then rejects them (by type checking). The random generator does not produce -illegal addresses (this could be useful in bulk mailing!). -The linearization algorithm does not care about type dependencies; -actually, since the categories (ignoring their arguments) -are the same in both abstract syntaxes, -we use the same concrete syntax -for both of them. -

-

-Remark. Function types without -variables are actually a shorthand notation: writing -

-
-    fun PredV1 : NP -> V1 -> S
-
-

-is shorthand for -

-
-    fun PredV1 : (x : NP) -> (y : V1) -> S
-
-

-or any other naming of the variables. Actually the use of variables -sometimes shortens the code, since we can write e.g. -

-
-    oper triple : (x,y,z : Str) -> Str = ...
-
-

-If a bound variable is not used, it can here, as elswhere in GF, be replaced by -a wildcard: -

-
-    oper triple : (_,_,_ : Str) -> Str = ...
-
-

- -

Dependent types in concrete syntax

-

-The functional fragment of GF -terms and types comprises function types, applications, lambda -abstracts, constants, and variables. This fragment is similar in -abstract and concrete syntax. In particular, -dependent types are also available in concrete syntax. -We have not made use of them yet, -but we will now look at one example of how they -can be used. -

-

-Those readers who are familiar with functional programming languages -like ML and Haskell, may already have missed polymorphic -functions. For instance, Haskell programmers have access to -the functions -

-
-    const :: a -> b -> a
-    const c _ = c
-  
-    flip :: (a -> b -> c) -> b -> a -> c
-    flip f y x = f x y
-
-

-which can be used for any given types a,b, and c. -

-

-The GF counterpart of polymorphic functions are monomorphic -functions with explicit type variables. Thus the above -definitions can be written -

-
-    oper const :(a,b : Type) -> a -> b -> a =
-      \_,_,c,_ -> c ;
-  
-    oper flip : (a,b,c : Type) -> (a -> b ->c) -> b -> a -> c =
-      \_,_,_,f,x,y -> f y x ;
-
-

-When the operations are used, the type checker requires -them to be equipped with all their arguments; this may be a nuisance -for a Haskell or ML programmer. -

- -

Expressing selectional restrictions

-

-This section introduces a way of using dependent types to -formalize a notion known as selectional restrictions -in linguistics. We first present a mathematical model -of the notion, and then integrate it in a linguistically -motivated syntax. -

-

-In linguistics, a -grammar is usually thought of as being about syntactic well-formedness -in a rather liberal sense: an expression can be well-formed without -being meaningful, in other words, without being -semantically well-formed. -For instance, the sentence -

-
-    the number 2 is equilateral
-
-

-is syntactically well-formed but semantically ill-formed. -It is well-formed because it combines a well-formed -noun phrase ("the number 2") with a well-formed -verb phrase ("is equilateral") and satisfies the agreement -rule saying that the verb phrase is inflected in the -number of the noun phrase: -

-
-    fun PredVP : NP -> VP -> S ;
-    lin PredVP np v = {s = np.s ++ vp.s ! np.n} ;
-
-

-It is ill-formed because the predicate "is equilateral" -is only defined for triangles, not for numbers. -

-

-In a straightforward type-theoretical formalization of -mathematics, domains of mathematical objects -are defined as types. In GF, we could write -

-
-    cat Nat ;
-    cat Triangle ;
-    cat Prop ;
-
-

-for the types of natural numbers, triangles, and propositions, -respectively. -Noun phrases are typed as objects of basic types other than -Prop, whereas verb phrases are functions from basic types -to Prop. For instance, -

-
-    fun two : Nat ;
-    fun Even : Nat -> Prop ;
-    fun Equilateral : Triangle -> Prop ;
-
-

-With these judgements, and the linearization rules -

-
-    lin two = ss ["the number 2"] ;
-    lin Even x = ss (x.s ++ ["is even"]) ;
-    lin Equilateral x = ss (x.s ++ ["is equilateral"]) ;
-
-

-we can form the proposition Even two -

-
-    the number 2 is even
-
-

-but no proposition linearized to -

-
-    the number 2 is equilateral
-
-

-since Equilateral two is not a well-formed type-theoretical object. -It is not even accepted by the context-free parser. -

-

-When formalizing mathematics, e.g. in the purpose of -computer-assisted theorem proving, we are certainly interested -in semantic well-formedness: we want to be sure that a proposition makes -sense before we make the effort of proving it. The straightforward typing -of nouns and predicates shown above is the way in which this -is guaranteed in various proof systems based on type theory. -(Notice that it is still possible to form false propositions, -e.g. "the number 3 is even". -False and meaningless are different things.) -

-

-As shown by the linearization rules for two, Even, -etc, it is possible to use straightforward mathematical typings -as the abstract syntax of a grammar. However, this syntax is not very -expressive linguistically: for instance, there is no distinction between -adjectives and verbs. It is hard to give rules for structures like -adjectival modification ("even number") and conjunction of predicates -("even or odd"). -

-

-By using dependent types, it is simple to combine a linguistically -motivated system of categories with mathematically motivated -type restrictions. What we need is a category of domains of -individual objects, -

-
-    cat Dom
-
-

-and dependencies of other categories on this: -

-
-    cat 
-      S ;            -- sentence
-      V1 Dom ;       -- one-place verb with specific subject type
-      V2 Dom Dom ;   -- two-place verb with specific subject and object types
-      A1 Dom ;       -- one-place adjective
-      A2 Dom Dom ;   -- two-place adjective
-      NP Dom ;       -- noun phrase for an object of specific type
-      Conj ;         -- conjunction
-      Det ;          -- determiner
-
-

-Having thus parametrized categories on domains, we have to reformulate -the rules of predication, etc, accordingly. This is straightforward: -

-
-    fun
-      PredV1  : (A   : Dom) -> NP A -> V1 A -> S ;
-      ComplV2 : (A,B : Dom) -> V2 A B -> NP B -> V1 A ;
-      DetCN   :                Det -> (A : Dom) -> NP A ;
-      ModA1   :                (A : Dom) -> A1 A -> Dom ;
-      ConjS   :                Conj -> S -> S -> S ;
-      ConjV1  : (A   : Dom) -> Conj -> V1 A -> V1 A -> V1 A ;
-
-

-In linearization rules, -we use wildcards for the domain arguments, -because they don't affect linearization: -

-
-    lin
-      PredV1 _ np vp = ss (np.s ++ vp.s) ;
-      ComplV2 _ _ v2 np = ss (v2.s ++ np.s) ;
-      DetCN det cn = ss (det.s ++ cn.s) ;
-      ModA1 cn a1 = ss (a1.s ++ cn.s) ;
-      ConjS conj s1 s2 = ss (s1.s ++ conj.s ++ s2.s) ;
-      ConjV1 _ conj v1 v2 = ss (v1.s ++ conj.s ++ v2.s) ;
-
-

-The domain arguments thus get suppressed in linearization. -Parsing initially returns metavariables for them, -but type checking can usually restore them -by inference from those arguments that are not suppressed. -

-

-One traditional linguistic example of domain restrictions -(= selectional restrictions) is the contrast between the two sentences -

-
-    John plays golf
-    golf plays John
-
-

-To explain the contrast, we introduce the functions -

-
-    human : Dom ; 
-    game : Dom ;
-    play : V2 human game ;
-    John : NP human ;
-    Golf : NP game ;
-
-

-Both sentences still pass the context-free parser, -returning trees with lots of metavariables of type Dom: -

-
-    PredV1 ?0 John (ComplV2 ?1 ?2 play Golf)
-    PredV1 ?0 Golf (ComplV2 ?1 ?2 play John)
-
-

-But only the former sentence passes the type checker, which moreover -infers the domain arguments: -

-
-    PredV1 human John (ComplV2 human game play Golf)
-
-

-To try this out in GF, use pt = put_term with the tree transformation -that solves the metavariables by type checking: -

-
-    > p -tr "John plays golf" | pt -transform=solve
-    > p -tr "golf plays John" | pt -transform=solve
-
-

-In the latter case, no solutions are found. -

-

-A known problem with selectional restrictions is that they can be more -or less liberal. For instance, -

-
-    John loves Mary
-    John loves golf
-
-

-should both make sense, even though Mary and golf -are of different types. A natural solution in this case is to -formalize love as a polymorphic verb, which takes -a human as its first argument but an object of any type as its second -argument: -

-
-    fun love : (A : Dom) -> V2 human A ;
-    lin love _ = ss "loves" ;
-
-

-In other words, it is possible for a human to love anything. -

-

-A problem related to polymorphism is subtyping: what -is meaningful for a human is also meaningful for -a man and a woman, but not the other way round. -One solution to this is coercions: functions that -"lift" objects from subtypes to supertypes. -

- -

Case study: selectional restrictions and statistical language models TODO

- -

Proof objects

-

-Perhaps the most well-known idea in constructive type theory is -the Curry-Howard isomorphism, also known as the -propositions as types principle. Its earliest formulations -were attempts to give semantics to the logical systems of -propositional and predicate calculus. In this section, we will consider -a more elementary example, showing how the notion of proof is useful -outside mathematics, as well. -

-

-We first define the category of unary (also known as Peano-style) -natural numbers: -

-
-    cat Nat ; 
-    fun Zero : Nat ;
-    fun Succ : Nat -> Nat ;
-
-

-The successor function Succ generates an infinite -sequence of natural numbers, beginning from Zero. -

-

-We then define what it means for a number x to be less than -a number y. Our definition is based on two axioms: -

-
    -
  • Zero is less than Succ y for any y. -
  • If x is less than y, thenSucc x is less than Succ y. -
- -

-The most straightforward way of expressing these axioms in type theory -is as typing judgements that introduce objects of a type Less //x y //: -

-
-    cat Less Nat Nat ; 
-    fun lessZ : (y : Nat) -> Less Zero (Succ y) ;
-    fun lessS : (x,y : Nat) -> Less x y -> Less (Succ x) (Succ y) ;
-
-

-Objects formed by lessZ and lessS are -called proof objects: they establish the truth of certain -mathematical propositions. -For instance, the fact that 2 is less that -4 has the proof object -

-
-    lessS (Succ Zero) (Succ (Succ (Succ Zero)))
-          (lessS Zero (Succ (Succ Zero)) (lessZ (Succ Zero)))
-
-

-whose type is -

-
-    Less (Succ (Succ Zero)) (Succ (Succ (Succ (Succ Zero))))
-
-

-which is the formalization of the proposition that 2 is less than 4. -

-

-GF grammars can be used to provide a semantic control of -well-formedness of expressions. We have already seen examples of this: -the grammar of well-formed addresses and the grammar with -selectional restrictions above. By introducing proof objects -we have now added a very powerful technique of expressing semantic conditions. -

-

-A simple example of the use of proof objects is the definition of -well-formed time spans: a time span is expected to be from an earlier to -a later time: -

-
-    from 3 to 8
-
-

-is thus well-formed, whereas -

-
-    from 8 to 3
-
-

-is not. The following rules for spans impose this condition -by using the Less predicate: -

-
-    cat Span ;
-    fun span : (m,n : Nat) -> Less m n -> Span ;
-
-

-A possible practical application of this idea is proof-carrying documents: -to be semantically well-formed, the abstract syntax of a document must contain a proof -of some property, although the proof is not shown in the concrete document. -Think, for instance, of small documents describing flight connections: -

-

-To fly from Gothenburg to Prague, first take LH3043 to Frankfurt, then OK0537 to Prague. -

-

-The well-formedness of this text is partly expressible by dependent typing: -

-
-    cat
-      City ;
-      Flight City City ;
-    fun
-      Gothenburg, Frankfurt, Prague : City ;
-      LH3043 : Flight Gothenburg Frankfurt ;
-      OK0537 : Flight Frankfurt Prague ;
-
-

-This rules out texts saying take OK0537 from Gothenburg to Prague. However, there is a -further condition saying that it must be possible to change from LH3043 to OK0537 in Frankfurt. -This can be modelled as a proof object of a suitable type, which is required by the constructor -that connects flights. -

-
-    cat
-      IsPossible (x,y,z : City)(Flight x y)(Flight y z) ;
-    fun
-      Connect : (x,y,z : City) -> 
-        (u : Flight x y) -> (v : Flight y z) -> 
-          IsPossible x y z u v -> Flight x z ;
-
-

- -

Variable bindings

-

-Mathematical notation and programming languages have lots of -expressions that bind variables. For instance, -a universally quantifier proposition -

-
-    (All x)B(x)
-
-

-consists of the binding (All x) of the variable x, -and the body B(x), where the variable x can have -bound occurrences. -

-

-Variable bindings appear in informal mathematical language as well, for -instance, -

-
-    for all x, x is equal to x
-  
-    the function that for any numbers x and y returns the maximum of x+y
-    and x*y
-
-

-In type theory, variable-binding expression forms can be formalized -as functions that take functions as arguments. The universal -quantifier is defined -

-
-    fun All : (Ind -> Prop) -> Prop
-
-

-where Ind is the type of individuals and Prop, -the type of propositions. If we have, for instance, the equality predicate -

-
-    fun Eq : Ind -> Ind -> Prop
-
-

-we may form the tree -

-
-    All (\x -> Eq x x)
-
-

-which corresponds to the ordinary notation -

-
-    (All x)(x = x).
-
-

-

-An abstract syntax where trees have functions as arguments, as in -the two examples above, has turned out to be precisely the right -thing for the semantics and computer implementation of -variable-binding expressions. The advantage lies in the fact that -only one variable-binding expression form is needed, the lambda abstract -\x -> b, and all other bindings can be reduced to it. -This makes it easier to implement mathematical theories and reason -about them, since variable binding is tricky to implement and -to reason about. The idea of using functions as arguments of -syntactic constructors is known as higher-order abstract syntax. -

-

-The question now arises: how to define linearization rules -for variable-binding expressions? -Let us first consider universal quantification, -

-
-    fun All : (Ind -> Prop) -> Prop
-
-

-We write -

-
-    lin All B = {s = "(" ++ "All" ++ B.$0 ++ ")" ++ B.s}
-
-

-to obtain the form shown above. -This linearization rule brings in a new GF concept - the $0 -field of B containing a bound variable symbol. -The general rule is that, if an argument type of a function is -itself a function type A -> C, the linearization type of -this argument is the linearization type of C -together with a new field $0 : Str. In the linearization rule -for All, the argument B thus has the linearization -type -

-
-    {$0 : Str ; s : Str},
-
-

-since the linearization type of Prop is -

-
-    {s : Str}
-
-

-In other words, the linearization of a function -consists of a linearization of the body together with a -field for a linearization of the bound variable. -Those familiar with type theory or lambda calculus -should notice that GF requires trees to be in -eta-expanded form in order to be linearizable: -any function of type -

-
-    A -> B
-
-

-always has a syntax tree of the form -

-
-    \x -> b
-
-

-where b : B under the assumption x : A. -It is in this form that an expression can be analysed -as having a bound variable and a body. -

-

-Given the linearization rule -

-
-    lin Eq a b = {s = "(" ++ a.s ++ "=" ++ b.s ++ ")"}
-
-

-the linearization of -

-
-    \x -> Eq x x
-
-

-is the record -

-
-    {$0 = "x", s = ["( x = x )"]}
-
-

-Thus we can compute the linearization of the formula, -

-
-    All (\x -> Eq x x)  --> {s = "[( All x ) ( x = x )]"}.
-
-

-

-How did we get the linearization of the variable x -into the string "x"? GF grammars have no rules for -this: it is just hard-wired in GF that variable symbols are -linearized into the same strings that represent them in -the print-out of the abstract syntax. -

-

-To be able to parse variable symbols, however, GF needs to know what -to look for (instead of e.g. trying to parse any -string as a variable). What strings are parsed as variable symbols -is defined in the lexical analysis part of GF parsing -

-
-    > p -cat=Prop -lexer=codevars "(All x)(x = x)"
-    All (\x -> Eq x x)
-
-

-(see more details on lexers below). If several variables are bound in the -same argument, the labels are $0, $1, $2, etc. -

- -

Semantic definitions

-

-We have seen that, -just like functional programming languages, GF has declarations -of functions, telling what the type of a function is. -But we have not yet shown how to compute -these functions: all we can do is provide them with arguments -and linearize the resulting terms. -Since our main interest is the well-formedness of expressions, -this has not yet bothered -us very much. As we will see, however, computation does play a role -even in the well-formedness of expressions when dependent types are -present. -

-

-GF has a form of judgement for semantic definitions, -recognized by the key word def. At its simplest, it is just -the definition of one constant, e.g. -

-
-    def one = Succ Zero ;
-
-

-We can also define a function with arguments, -

-
-    def Neg A = Impl A Abs ;
-
-

-which is still a special case of the most general notion of -definition, that of a group of pattern equations: -

-
-    def 
-      sum x Zero = x ;
-      sum x (Succ y) = Succ (Sum x y) ;
-
-

-To compute a term is, as in functional programming languages, -simply to follow a chain of reductions until no definition -can be applied. For instance, we compute -

-
-    Sum one one -->
-    Sum (Succ Zero) (Succ Zero) -->
-    Succ (sum (Succ Zero) Zero) -->
-    Succ (Succ Zero)
-
-

-Computation in GF is performed with the pt command and the -compute transformation, e.g. -

-
-    > p -tr "1 + 1" | pt -transform=compute -tr | l
-    sum one one
-    Succ (Succ Zero)
-    s(s(0))
-
-

-

-The def definitions of a grammar induce a notion of -definitional equality among trees: two trees are -definitionally equal if they compute into the same tree. -Thus, trivially, all trees in a chain of computation -(such as the one above) -are definitionally equal to each other. So are the trees -

-
-    sum Zero (Succ one)
-    Succ one
-    sum (sum Zero Zero) (sum (Succ Zero) one)
-
-

-and infinitely many other trees. -

-

-A fact that has to be emphasized about def definitions is that -they are not performed as a first step of linearization. -We say that linearization is intensional, which means that -the definitional equality of two trees does not imply that -they have the same linearizations. For instance, each of the seven terms -shown above has a different linearizations in arithmetic notation: -

-
-    1 + 1
-    s(0) + s(0)
-    s(s(0) + 0)
-    s(s(0))
-    0 + s(0)
-    s(1)
-    0 + 0 + s(0) + 1
-
-

-This notion of intensionality is -no more exotic than the intensionality of any pretty-printing -function of a programming language (function that shows -the expressions of the language as strings). It is vital for -pretty-printing to be intensional in this sense - if we want, -for instance, to trace a chain of computation by pretty-printing each -intermediate step, what we want to see is a sequence of different -expression, which are definitionally equal. -

-

-What is more exotic is that GF has two ways of referring to the -abstract syntax objects. In the concrete syntax, the reference is intensional. -In the abstract syntax, the reference is extensional, since -type checking is extensional. The reason is that, -in the type theory with dependent types, types may depend on terms. -Two types depending on terms that are definitionally equal are -equal types. For instance, -

-
-    Proof (Odd one)
-    Proof (Odd (Succ Zero))
-
-

-are equal types. Hence, any tree that type checks as a proof that -1 is odd also type checks as a proof that the successor of 0 is odd. -(Recall, in this connection, that the -arguments a category depends on never play any role -in the linearization of trees of that category, -nor in the definition of the linearization type.) -

-

-In addition to computation, definitions impose a -paraphrase relation on expressions: -two strings are paraphrases if they -are linearizations of trees that are -definitionally equal. -Paraphrases are sometimes interesting for -translation: the direct translation -of a string, which is the linearization of the same tree -in the targer language, may be inadequate because it is e.g. -unidiomatic or ambiguous. In such a case, -the translation algorithm may be made to consider -translation by a paraphrase. -

-

-To stress express the distinction between -constructors (=canonical functions) -and other functions, GF has a judgement form -data to tell that certain functions are canonical, e.g. -

-
-    data Nat = Succ | Zero ;
-
-

-Unlike in Haskell, but similarly to ALF (where constructor functions -are marked with a flag C), -new constructors can be added to -a type with new data judgements. The type signatures of constructors -are given separately, in ordinary fun judgements. -One can also write directly -

-
-    data Succ : Nat -> Nat ;
-
-

-which is equivalent to the two judgements -

-
-    fun Succ : Nat -> Nat ;
-    data Nat = Succ ;
-
-

- -

Case study: representing anaphoric reference TODO

- -

Transfer modules TODO

-

-Transfer means noncompositional tree-transforming operations. -The command apply_transfer = at is typically used in a pipe: -

-
-    > p "John walks and John runs" | apply_transfer aggregate | l
-    John walks and runs
-
-

-See the -sources of this example. -

-

-See the -transfer language documentation -for more information. -

- -

Practical issues TODO

- -

Lexers and unlexers

-

-Lexers and unlexers can be chosen from -a list of predefined ones, using the flags-lexer and `` -unlexer`` either -in the grammar file or on the GF command line. -

-

-Given by help -lexer, help -unlexer: -

-
-      The default is words.
-      -lexer=words         tokens are separated by spaces or newlines
-      -lexer=literals      like words, but GF integer and string literals recognized
-      -lexer=vars          like words, but "x","x_...","$...$" as vars, "?..." as meta
-      -lexer=chars         each character is a token
-      -lexer=code          use Haskell's lex
-      -lexer=codevars      like code, but treat unknown words as variables, ?? as meta
-      -lexer=text          with conventions on punctuation and capital letters
-      -lexer=codelit       like code, but treat unknown words as string literals
-      -lexer=textlit       like text, but treat unknown words as string literals
-      -lexer=codeC         use a C-like lexer
-      -lexer=ignore        like literals, but ignore unknown words
-      -lexer=subseqs       like ignore, but then try all subsequences from longest
-  
-      The default is unwords.
-      -unlexer=unwords     space-separated token list (like unwords)
-      -unlexer=text        format as text: punctuation, capitals, paragraph <p>
-      -unlexer=code        format as code (spacing, indentation)
-      -unlexer=textlit     like text, but remove string literal quotes
-      -unlexer=codelit     like code, but remove string literal quotes
-      -unlexer=concat      remove all spaces
-      -unlexer=bind        like identity, but bind at "&+"
-
-

- -

Efficiency of grammars

-

-Issues: -

-
    -
  • the choice of datastructures in lincats -
  • the value of the optimize flag -
  • parsing efficiency: -fcfg vs. others -
- - -

Speech input and output

-

-Thespeak_aloud = sa command sends a string to the speech -synthesizer -Flite. -It is typically used via a pipe: -

-
-   generate_random | linearize | speak_aloud
-
-

-The result is only satisfactory for English. -

-

-The speech_input = si command receives a string from a -speech recognizer that requires the installation of -ATK. -It is typically used to pipe input to a parser: -

-
-   speech_input -tr | parse
-
-

-The method words only for grammars of English. -

-

-Both Flite and ATK are freely available through the links -above, but they are not distributed together with GF. -

- -

Multilingual syntax editor

-

-The -Editor User Manual -describes the use of the editor, which works for any multilingual GF grammar. -

-

-Here is a snapshot of the editor: -

-

- -

-

-The grammars of the snapshot are from the -Letter grammar package. -

- -

Interactive Development Environment (IDE)

-

-Forthcoming. -

- -

Communicating with GF

-

-Other processes can communicate with the GF command interpreter, -and also with the GF syntax editor. Useful flags when invoking GF are -

-
    -
  • -batch suppresses the promps and structures the communication with XML tags. -
  • -s suppresses non-output non-error messages and XML tags. --- -nocpu suppresses CPU time indication. -

    -Thus the most silent way to invoke GF is -
    -    gf -batch -s -nocpu
    -
    -
- - -

Embedded grammars in Haskell, Java, and Prolog

-

-GF grammars can be used as parts of programs written in the -following languages. The links give more documentation. -

- - - -

Alternative input and output grammar formats

-

-A summary is given in the following chart of GF grammar compiler phases: - -

- -

Larger case studies TODO

- -

Interfacing formal and natural languages

-

-Formal and Informal Software Specifications, -PhD Thesis by -Kristofer Johannisson, is an extensive example of this. -The system is based on a multilingual grammar relating the formal language OCL with -English and German. -

-

-A simpler example will be explained here. -

- -

A multimodal dialogue system

-

-See TALK project deliverables, TALK homepage -

- - - - diff --git a/doc/tutorial/gf-tutorial2_1.txt b/doc/tutorial/gf-tutorial2_1.txt deleted file mode 100644 index be011f8ca..000000000 --- a/doc/tutorial/gf-tutorial2_1.txt +++ /dev/null @@ -1,3166 +0,0 @@ -Grammatical Framework Tutorial -Author: Aarne Ranta aarne (at) cs.chalmers.se -Last update: %%date(%c) - -% NOTE: this is a txt2tags file. -% Create an html file from this file using: -% txt2tags --toc gf-tutorial2.txt - -%!target:html -%!encoding: iso-8859-1 - -%!postproc(tex): "subsection\*" "section" - -% workaround for some missing things in the format -% %!postproc(html): C-
-% %!postproc(html): -C
-% %!postproc(html): t- -% %!postproc(html): -t - - - - -[../gf-logo.png] - - - -%--! -==Introduction== - -===GF = Grammatical Framework=== - -The term GF is used for different things: - -- a **program** used for working with grammars -- a **programming language** in which grammars can be written -- a **theory** about grammars and languages - - -This tutorial is primarily about the GF program and -the GF programming language. -It will guide you - -- to use the GF program -- to write GF grammars -- to write programs in which GF grammars are used as components - - - -%--! -===What are GF grammars used for=== - -A grammar is a definition of a language. -From this definition, different language processing components -can be derived: - -- parsing: to analyse the language -- linearization: to generate the language -- translation: to analyse one language and generate another - - -A GF grammar can be seen as a declarative program from which these -processing tasks can be automatically derived. In addition, many -other tasks are readily available for GF grammars: - -- morphological analysis: find out the possible inflection forms of words -- morphological synthesis: generate all inflection forms of words -- random generation: generate random expressions -- corpus generation: generate all expressions -- teaching quizzes: train morphology and translation -- multilingual authoring: create a document in many languages simultaneously -- speech input: optimize a speech recognition system for your grammar - - -A typical GF application is based on a **multilingual grammar** involving -translation on a special domain. Existing applications of this idea include - -- [Alfa: http://www.cs.chalmers.se/~hallgren/Alfa/Tutorial/GFplugin.html]: - a natural-language interface to a proof editor - (languages: English, French, Swedish) -- [KeY http://www.key-project.org/]: - a multilingual authoring system for creating software specifications - (languages: OCL, English, German) -- [TALK http://www.talk-project.org]: - multilingual and multimodal dialogue systems - (languages: English, Finnish, French, German, Italian, Spanish, Swedish) -- [WebALT http://webalt.math.helsinki.fi/content/index_eng.html]: - a multilingual translator of mathematical exercises - (languages: Catalan, English, Finnish, French, Spanish, Swedish) -- [Numeral translator http://www.cs.chalmers.se/~bringert/gf/translate/]: - number words from 1 to 999,999 - (88 languages) - - -The specialization of a grammar to a domain makes it possible to -obtain much better translations than in an unlimited machine translation -system. This is due to the well-defined semantics of such domains. -Grammars having this character are called **application grammars**. -They are different from most grammars written by linguists just -because they are multilingual and domain-specific. - -However, there is another kind of grammars, which we call **resource grammars**. -These are large, comprehensive grammars that can be used on any domain. -The GF Resource Grammar Library has resource grammars for 10 languages. -These grammars can be used as **libraries** to define application grammars. -In this way, it is possible to write a high-quality grammar without -knowing about linguistics: in general, to write an application grammar -by using the resource library just requires practical knowledge of -the target language. and all theoretical knowledge about its grammar -is given by the libraries. - - - - -%--! -===Who is this tutorial for=== - -This tutorial is mainly for programmers who want to learn to write -application grammars. It will go through GF's programming concepts -without entering too deep into linguistics. Thus it should -be accessible to anyone who has some previous programming experience. - -A separate document is being written on how to write resource grammars. -This includes the ways in which linguistic problems posed by different -languages are solved in GF. - - -%--! -===The coverage of the tutorial=== - -The tutorial gives a hands-on introduction to grammar writing. -We start by building a small grammar for the domain of food: -in this grammar, you can say things like -``` - this Italian cheese is delicious -``` -in English and Italian. - -The first English grammar -[``food.cf`` food.cf] -is written in a context-free -notation (also known as BNF). The BNF format is often a good -starting point for GF grammar development, because it is -simple and widely used. However, the BNF format is not -good for multilingual grammars. While it is possible to -"translate" by just changing the words contained in a -BNF grammar to words of some other -language, proper translation usually involves more. -For instance, the order of words may have to be changed: -``` - Italian cheese ===> formaggio italiano -``` -The full GF grammar format is designed to support such -changes, by separating between the **abstract syntax** -(the logical structure) and the **concrete syntax** (the -sequence of words) of expressions. - -There is more than words and word order that makes languages -different. Words can have different forms, and which forms -they have vary from language to language. For instance, -Italian adjectives usually have four forms where English -has just one: -``` - delicious (wine, wines, pizza, pizzas) - vino delizioso, vini deliziosi, pizza deliziosa, pizze deliziose -``` -The **morphology** of a language describes the -forms of its words. While the complete description of morphology -belongs to resource grammars, this tutorial will explain the -programming concepts involved in morphology. This will moreover -make it possible to grow the fragment covered by the food example. -The tutorial will in fact build a miniature resource grammar in order -to illustrate the module structure of library-based application -grammar writing. - -Thus it is by elaborating the initial ``food.cf`` example that -the tutorial makes a guided tour through all concepts of GF. -While the constructs of the GF language are the main focus, -also the commands of the GF system are introduced as they -are needed. - -To learn how to write GF grammars is not the only goal of -this tutorial. To learn the commands of the GF system means -that simple applications of grammars, such as translation and -quiz systems, can be built simply by writing scripts for the -system. More complicated applications, such as natural-language -interfaces and dialogue systems, also require programming in -some general-purpose language. We will briefly explain how -GF grammars are used as components of Haskell, Java, Javascript, -and Prolog grammars. The tutorial concludes with a couple of -case studies showing how such complete systems can be built. - - - -%--! -===Getting the GF program=== - -The GF program is open-source free software, which you can download via the -GF Homepage: -[``http://www.cs.chalmers.se/~aarne/GF`` http://www.cs.chalmers.se/~aarne/GF] - -There you can download -- binaries for Linux, Solaris, Macintosh, and Windows -- source code and documentation -- grammar libraries and examples - - -If you want to compile GF from source, you need Haskell and Java -compilers. But normally you don't have to compile, and you definitely -don't need to know Haskell or Java to use GF. - - -To start the GF program, assuming you have installed it, just type -``` - % gf -``` -in the shell. You will see GF's welcome message and the prompt ``>``. -The command -``` - > help -``` -will give you a list of available commands. - -As a common convention in this Tutorial, we will use -- ``%`` as a prompt that marks system commands -- ``>`` as a prompt that marks GF commands - - -Thus you should not type these prompts, but only the lines that -follow them. - - -%--! -==The .cf grammar format== - -Now you are ready to try out your first grammar. -We start with one that is not written in the GF language, but -in the much more common BNF notation (Backus Naur Form). The GF -program understands a variant of this notation and translates it -internally to GF's own representation. - -To get started, type (or copy) the following lines into a file named -``food.cf``: -``` -Is. S ::= Item "is" Quality ; -That. Item ::= "that" Kind ; -This. Item ::= "this" Kind ; -QKind. Kind ::= Quality Kind ; -Cheese. Kind ::= "cheese" ; -Fish. Kind ::= "fish" ; -Wine. Kind ::= "wine" ; -Italian. Quality ::= "Italian" ; -Boring. Quality ::= "boring" ; -Delicious. Quality ::= "delicious" ; -Expensive. Quality ::= "expensive" ; -Fresh. Quality ::= "fresh" ; -Very. Quality ::= "very" Quality ; -Warm. Quality ::= "warm" ; -``` -For those who know ordinary BNF, the -notation we use includes one extra element: a **label** appearing -as the first element of each rule and terminated by a full stop. - -The grammar we wrote defines a set of phrases usable for speaking about food. -It builds **sentences** (``S``) by assigning ``Quality``s to -``Item``s. ``Item``s are build from ``Kind``s by prepending the -word "this" or "that". ``Kind``s are either **atomic**, such as -"cheese" and "wine", or formed by prepending a ``Quality`` to a -``Kind``. A ``Quality`` is either atomic, such as "Italian" and "boring", -or built by another ``Quality`` by prepending "very". Those familiar with -the context-free grammar notation will notice that, for instance, the -following sentence can be built using this grammar: -``` - this delicious Italian wine is very very expensive -``` - - - -%--! -===Importing grammars and parsing strings=== - -The first GF command needed when using a grammar is to **import** it. -The command has a long name, ``import``, and a short name, ``i``. -You can type either -``` - > import food.cf -``` -or -``` - > i food.cf -``` -to get the same effect. -The effect is that the GF program **compiles** your grammar into an internal -representation, and shows a new prompt when it is ready. - -You can now use GF for **parsing**: -``` - > parse "this cheese is delicious" - Is (This Cheese) Delicious - - > p "that wine is very very Italian" - Is (That Wine) (Very (Very Italian)) -``` -The ``parse`` (= ``p``) command takes a **string** -(in double quotes) and returns an **abstract syntax tree** - the thing -beginning with ``Is``. Trees are built from the rule labels given in the -grammar, and record the ways in which the rules are used to produce the -strings. A tree is, in general, something easier than a string -for a machine to understand and to process further. - -Strings that return a tree when parsed do so in virtue of the grammar -you imported. Try parsing something else, and you fail -``` - > p "hello world" - No success in cf parsing hello world - no tree found -``` - - - -%--! -===Generating trees and strings=== - -You can also use GF for **linearizing** -(``linearize = l``). This is the inverse of -parsing, taking trees into strings: -``` - > linearize Is (That Wine) Warm - that wine is warm -``` -What is the use of this? Typically not that you type in a tree at -the GF prompt. The utility of linearization comes from the fact that -you can obtain a tree from somewhere else. One way to do so is -**random generation** (``generate_random = gr``): -``` - > generate_random - Is (This (QKind Italian Fish)) Fresh -``` -Now you can copy the tree and paste it to the ``linearize command``. -Or, more conveniently, feed random generation into linearization by using -a **pipe**. -``` - > gr | l - this Italian fish is fresh -``` - -%--! -===Visualizing trees=== - -The gibberish code with parentheses returned by the parser does not -look like trees. Why is it called so? From the abstract mathematical -point of view, trees are a data structure that -represents **nesting**: trees are branching entities, and the branches -are themselves trees. Parentheses give a linear representation of trees, -useful for the computer. But the human eye may prefer to see a visualization; -for this purpose, GF provides the command ``visualizre_tree = vt``, to which -parsing (and any other tree-producing command) can be piped: - -``` - parse "this delicious cheese is very Italian" | vt -``` - -[Tree2.png] - - -%--! -===Some random-generated sentences=== - -Random generation is a good way to test a grammar; it can also -be quite amusing. So you may want to -generate ten strings with one and the same command: -``` - > gr -number=10 | l - that wine is boring - that fresh cheese is fresh - that cheese is very boring - this cheese is Italian - that expensive cheese is expensive - that fish is fresh - that wine is very Italian - this wine is Italian - this cheese is boring - this fish is boring -``` - - -%--! -===Systematic generation=== - -To generate //all// sentence that a grammar -can generate, use the command ``generate_trees = gt``. -``` - > generate_trees | l - that cheese is very Italian - that cheese is very boring - that cheese is very delicious - that cheese is very expensive - that cheese is very fresh - ... - this wine is expensive - this wine is fresh - this wine is warm - -``` -You get quite a few trees but not all of them: only up to a given -**depth** of trees. To see how you can get more, use the -``help = h`` command, -``` - help gt -``` -**Quiz**. If the command ``gt`` generated all -trees in your grammar, it would never terminate. Why? - - - -%--! -===More on pipes; tracing=== - -A pipe of GF commands can have any length, but the "output type" -(either string or tree) of one command must always match the "input type" -of the next command. - -The intermediate results in a pipe can be observed by putting the -**tracing** flag ``-tr`` to each command whose output you -want to see: -``` - > gr -tr | l -tr | p - - Is (This Cheese) Boring - this cheese is boring - Is (This Cheese) Boring -``` -This facility is good for test purposes: for instance, you -may want to see if a grammar is **ambiguous**, i.e. -contains strings that can be parsed in more than one way. - - - -%--! -===Writing and reading files=== - -To save the outputs of GF commands into a file, you can -pipe it to the ``write_file = wf`` command, -``` - > gr -number=10 | l | write_file exx.tmp -``` -You can read the file back to GF with the -``read_file = rf`` command, -``` - > read_file exx.tmp | p -lines -``` -Notice the flag ``-lines`` given to the parsing -command. This flag tells GF to parse each line of -the file separately. Without the flag, the grammar could -not recognize the string in the file, because it is not -a sentence but a sequence of ten sentences. - - - - -%--! -==The .gf grammar format== - -To see GF's internal representation of a grammar -that you have imported, you can give the command -``print_grammar = pg``, -``` - > print_grammar -``` -The output is quite unreadable at this stage, and you may feel happy that -you did not need to write the grammar in that notation, but that the -GF grammar compiler produced it. - -However, we will now start the demonstration -how GF's own notation gives you -much more expressive power than the ``.cf`` -format. We will introduce the ``.gf`` format by presenting -another way of defining the same grammar as in -``food.cf``. -Then we will show how the full GF grammar format enables you -to do things that are not possible in the context-free format. - - -%--! -===Abstract and concrete syntax=== - -A GF grammar consists of two main parts: - -- **abstract syntax**, defining what syntax trees there are -- **concrete syntax**, defining how trees are linearized into strings - - -The context-free format fuses these two things together, but it is always -possible to take them apart. For instance, the sentence formation rule -``` - Is. S ::= Item "is" Quality ; -``` -is interpreted as the following pair of GF rules: -``` - fun Is : Item -> Quality -> S ; - lin Is item quality = {s = item.s ++ "is" ++ quality.s} ; -``` -The former rule, with the keyword ``fun``, belongs to the abstract syntax. -It defines the **function** -``Is`` which constructs syntax trees of form -(``Is`` //item// //quality//). - -The latter rule, with the keyword ``lin``, belongs to the concrete syntax. -It defines the **linearization function** for -syntax trees of form (``Is`` //item// //quality//). - - -%--! -===Judgement forms=== - -Rules in a GF grammar are called **judgements**, and the keywords -``fun`` and ``lin`` are used for distinguishing between two -**judgement forms**. Here is a summary of the most important -judgement forms: - - - abstract syntax - - | form | reading | - | ``cat`` C | C is a category - | ``fun`` f ``:`` A | f is a function of type A - - - concrete syntax - - | form | reading | - | ``lincat`` C ``=`` T | category C has linearization type T - | ``lin`` f ``=`` t | function f has linearization t - - - -We return to the precise meanings of these judgement forms later. -First we will look at how judgements are grouped into modules, and -show how the food grammar is -expressed by using modules and judgements. - - -%--! -===Module types=== - -A GF grammar consists of **modules**, -into which judgements are grouped. The most important -module forms are - - - ``abstract`` A ``=`` M, abstract syntax A with judgements in - the module body M. - - ``concrete`` C ``of`` A ``=`` M, concrete syntax C of the - abstract syntax A, with judgements in the module body M. - - - -%--! -===Records and strings=== - -The linearization type of a category is a **record type**, with -zero of more **fields** of different types. The simplest record -type used for linearization in GF is -``` - {s : Str} -``` -which has one field, with **label** ``s`` and type ``Str``. - -Examples of records of this type are -``` - {s = "foo"} - {s = "hello" ++ "world"} -``` - -Whenever a record ``r`` of type ``{s : Str}`` is given, -``r.s`` is an object of type ``Str``. This is -a special case of the **projection** rule, allowing the extraction -of fields from a record: - -- if //r// : ``{`` ... //p// : //T// ... ``}`` then //r.p// : //T// - - -The type ``Str`` is really the type of **token lists**, but -most of the time one can conveniently think of it as the type of strings, -denoted by string literals in double quotes. - -Notice that -``` "hello world" -is not recommended as an expression of type ``Str``. It denotes -a token with a space in it, and will usually -not work with the lexical analysis that precedes parsing. A shorthand -exemplified by -``` ["hello world and people"] === "hello" ++ "world" ++ "and" ++ "people" -can be used for lists of tokens. The expression -``` [] -denotes the empty token list. - - - -%--! -===An abstract syntax example=== - -To express the abstract syntax of ``food.cf`` in -a file ``Food.gf``, we write two kinds of judgements: - -- Each category is introduced by a ``cat`` judgement. -- Each rule label is introduced by a ``fun`` judgement, - with the type formed from the nonterminals of the rule. - - -``` - abstract Food = { - - cat - S ; Item ; Kind ; Quality ; - - fun - Is : Item -> Quality -> S ; - This, That : Kind -> Item ; - QKind : Quality -> Kind -> Kind ; - Wine, Cheese, Fish : Kind ; - Very : Quality -> Quality ; - Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ; - } -``` -Notice the use of shorthands permitting the sharing of -the keyword in subsequent judgements, -``` - cat S ; Item ; === cat S ; cat Item ; -``` -and of the type in subsequent ``fun`` judgements, -``` - fun Wine, Fish : Kind ; === - fun Wine : Kind ; Fish : Kind ; === - fun Wine : Kind ; fun Fish : Kind ; -``` -The order of judgements in a module is free. - - - -%--! -===A concrete syntax example=== - -Each category introduced in ``Food.gf`` is -given a ``lincat`` rule, and each -function is given a ``lin`` rule. Similar shorthands -apply as in ``abstract`` modules. -``` - concrete FoodEng of Food = { - - lincat - S, Item, Kind, Quality = {s : Str} ; - - lin - Is item quality = {s = item.s ++ "is" ++ quality.s} ; - This kind = {s = "this" ++ kind.s} ; - That kind = {s = "that" ++ kind.s} ; - QKind quality kind = {s = quality.s ++ kind.s} ; - Wine = {s = "wine"} ; - Cheese = {s = "cheese"} ; - Fish = {s = "fish"} ; - Very quality = {s = "very" ++ quality.s} ; - Fresh = {s = "fresh"} ; - Warm = {s = "warm"} ; - Italian = {s = "Italian"} ; - Expensive = {s = "expensive"} ; - Delicious = {s = "delicious"} ; - Boring = {s = "boring"} ; - } -``` - - -%--! -===Modules and files=== - -Source files: Module name + ``.gf`` = file name - -Target files: each module is compiled into a ``.gfc`` file. - -Import ``FoodEng.gf`` and see what happens -``` - > i FoodEng.gf -``` -The GF program does not only read the file -``FoodEng.gf``, but also all other files that it -depends on - in this case, ``Food.gf``. - -For each file that is compiled, a ``.gfc`` file -is generated. The GFC format (="GF Canonical") is the -"machine code" of GF, which is faster to process than -GF source files. When reading a module, GF decides whether -to use an existing ``.gfc`` file or to generate -a new one, by looking at modification times. - - - -%--! -==Multilingual grammars and translation== - -The main advantage of separating abstract from concrete syntax is that -one abstract syntax can be equipped with many concrete syntaxes. -A system with this property is called a **multilingual grammar**. - -Multilingual grammars can be used for applications such as -translation. Let us build an Italian concrete syntax for -``Food`` and then test the resulting -multilingual grammar. - - - - -%--! -===An Italian concrete syntax=== - -``` -concrete FoodIta of Food = { - - lincat - S, Item, Kind, Quality = {s : Str} ; - - lin - Is item quality = {s = item.s ++ "è" ++ quality.s} ; - This kind = {s = "questo" ++ kind.s} ; - That kind = {s = "quello" ++ kind.s} ; - QKind quality kind = {s = kind.s ++ quality.s} ; - Wine = {s = "vino"} ; - Cheese = {s = "formaggio"} ; - Fish = {s = "pesce"} ; - Very quality = {s = "molto" ++ quality.s} ; - Fresh = {s = "fresco"} ; - Warm = {s = "caldo"} ; - Italian = {s = "italiano"} ; - Expensive = {s = "caro"} ; - Delicious = {s = "delizioso"} ; - Boring = {s = "noioso"} ; - -} - -``` - -%--! -===Using a multilingual grammar=== - -Import the two grammars in the same GF session. -``` - > i FoodEng.gf - > i FoodIta.gf -``` -Try generation now: -``` - > gr | l - quello formaggio molto noioso è italiano - - > gr | l -lang=FoodEng - this fish is warm -``` -Translate by using a pipe: -``` - > p -lang=FoodEng "this cheese is very delicious" | l -lang=FoodIta - questo formaggio è molto delizioso -``` -The ``lang`` flag tells GF which concrete syntax to use in parsing and -linearization. By default, the flag is set to the last-imported grammar. -To see what grammars are in scope and which is the main one, use the command -``print_options = po``: -``` - > print_options - main abstract : Food - main concrete : FoodIta - actual concretes : FoodIta FoodEng -``` - - -%--! -===Translation session=== - -If translation is what you want to do with a set of grammars, a convenient -way to do it is to open a ``translation_session = ts``. In this session, -you can translate between all the languages that are in scope. -A dot ``.`` terminates the translation session. -``` - > ts - - trans> that very warm cheese is boring - quello formaggio molto caldo è noioso - that very warm cheese is boring - - trans> questo vino molto italiano è molto delizioso - questo vino molto italiano è molto delizioso - this very Italian wine is very delicious - - trans> . - > -``` - - - -%--! -===Translation quiz=== - -This is a simple language exercise that can be automatically -generated from a multilingual grammar. The system generates a set of -random sentences, displays them in one language, and checks the user's -answer given in another language. The command ``translation_quiz = tq`` -makes this in a subshell of GF. -``` - > translation_quiz FoodEng FoodIta - - Welcome to GF Translation Quiz. - The quiz is over when you have done at least 10 examples - with at least 75 % success. - You can interrupt the quiz by entering a line consisting of a dot ('.'). - - this fish is warm - questo pesce è caldo - > Yes. - Score 1/1 - - this cheese is Italian - questo formaggio è noioso - > No, not questo formaggio è noioso, but - questo formaggio è italiano - - Score 1/2 - this fish is expensive -``` -You can also generate a list of translation exercises and save it in a -file for later use, by the command ``translation_list = tl`` -``` - > translation_list -number=25 FoodEng FoodIta -``` -The ``number`` flag gives the number of sentences generated. - - - -%--! -==Grammar architecture== - -===Extending a grammar=== - -The module system of GF makes it possible to **extend** a -grammar in different ways. The syntax of extension is -shown by the following example. We extend ``Food`` by -adding a category of questions and two new functions. -``` - abstract Morefood = Food ** { - cat - Question ; - fun - QIs : Item -> Quality -> Question ; - Pizza : Kind ; - - } -``` -Parallel to the abstract syntax, extensions can -be built for concrete syntaxes: -``` - concrete MorefoodEng of Morefood = FoodEng ** { - lincat - Question = {s : Str} ; - lin - QIs item quality = {s = "is" ++ item.s ++ quality.s} ; - Pizza = {s = "pizza"} ; - } -``` -The effect of extension is that all of the contents of the extended -and extending module are put together. - - - -%--! -===Multiple inheritance=== - -Specialized vocabularies can be represented as small grammars that -only do "one thing" each. For instance, the following are grammars -for fruit and mushrooms -``` - abstract Fruit = { - cat Fruit ; - fun Apple, Peach : Fruit ; - } - - abstract Mushroom = { - cat Mushroom ; - fun Cep, Agaric : Mushroom ; - } -``` -They can afterwards be combined into bigger grammars by using -**multiple inheritance**, i.e. extension of several grammars at the -same time: -``` - abstract Foodmarket = Food, Fruit, Mushroom ** { - fun - FruitKind : Fruit -> Kind ; - MushroomKind : Mushroom -> Kind ; - } -``` -At this point, you would perhaps like to go back to -``Food`` and take apart ``Wine`` to build a special -``Drink`` module. - - -%--! -===Visualizing module structure=== - -When you have created all the abstract syntaxes and -one set of concrete syntaxes needed for ``Foodmarket``, -your grammar consists of eight GF modules. To see how their -dependences look like, you can use the command -``visualize_graph = vg``, -``` - > visualize_graph -``` -and the graph will pop up in a separate window. - -The graph uses - -- oval boxes for abstract modules -- square boxes for concrete modules -- black-headed arrows for inheritance -- white-headed arrows for the concrete-of-abstract relation - - -[Foodmarket.png] - - - -%--! -===System commands=== - -To document your grammar, you may want to print the -graph into a file, e.g. a ``.png`` file that -can be included in an HTML document. You can do this -by first printing the graph into a file ``.dot`` and then -processing this file with the ``dot`` program. -``` - > pm -printer=graph | wf Foodmarket.dot - > ! dot -Tpng Foodmarket.dot > Foodmarket.png -``` -The latter command is a Unix command, issued from GF by using the -shell escape symbol ``!``. The resulting graph was shown in the previous section. - -The command ``print_multi = pm`` is used for printing the current multilingual -grammar in various formats, of which the format ``-printer=graph`` just -shows the module dependencies. Use ``help`` to see what other formats -are available: -``` - > help pm - > help -printer -``` - - - -%--! -==Resource modules== - - -===The golden rule of functional programming=== - -In comparison to the ``.cf`` format, the ``.gf`` format looks rather -verbose, and demands lots more characters to be written. You have probably -done this by the copy-paste-modify method, which is a common way to -avoid repeating work. - -However, there is a more elegant way to avoid repeating work than the copy-and-paste -method. The **golden rule of functional programming** says that - -- whenever you find yourself programming by copy-and-paste, write a function instead. - - -A function separates the shared parts of different computations from the -changing parts, parameters. In functional programming languages, such as -[Haskell http://www.haskell.org], it is possible to share much more than in -languages such as C and Java. - - -===Operation definitions=== - -GF is a functional programming language, not only in the sense that -the abstract syntax is a system of functions (``fun``), but also because -functional programming can be used to define concrete syntax. This is -done by using a new form of judgement, with the keyword ``oper`` (for -**operation**), distinct from ``fun`` for the sake of clarity. -Here is a simple example of an operation: -``` - oper ss : Str -> {s : Str} = \x -> {s = x} ; -``` -The operation can be **applied** to an argument, and GF will -**compute** the application into a value. For instance, -``` - ss "boy" ---> {s = "boy"} -``` -(We use the symbol ``--->`` to indicate how an expression is -computed into a value; this symbol is not a part of GF) - -Thus an ``oper`` judgement includes the name of the defined operation, -its type, and an expression defining it. As for the syntax of the defining -expression, notice the **lambda abstraction** form ``\x -> t`` of -the function. - - - -%--! -===The ``resource`` module type=== - -Operator definitions can be included in a concrete syntax. -But they are not really tied to a particular set of linearization rules. -They should rather be seen as **resources** -usable in many concrete syntaxes. - -The ``resource`` module type can be used to package -``oper`` definitions into reusable resources. Here is -an example, with a handful of operations to manipulate -strings and records. -``` - resource StringOper = { - oper - SS : Type = {s : Str} ; - ss : Str -> SS = \x -> {s = x} ; - cc : SS -> SS -> SS = \x,y -> ss (x.s ++ y.s) ; - prefix : Str -> SS -> SS = \p,x -> ss (p ++ x.s) ; - } -``` -Resource modules can extend other resource modules, in the -same way as modules of other types can extend modules of the -same type. Thus it is possible to build resource hierarchies. - - - -%--! -===Opening a ``resource``=== - -Any number of ``resource`` modules can be -**opened** in a ``concrete`` syntax, which -makes definitions contained -in the resource usable in the concrete syntax. Here is -an example, where the resource ``StringOper`` is -opened in a new version of ``FoodEng``. -``` - concrete Food2Eng of Food = open StringOper in { - - lincat - S, Item, Kind, Quality = SS ; - - lin - Is item quality = cc item (prefix "is" quality) ; - This = prefix "this" ; - That = prefix "that" ; - QKind = cc ; - Wine = ss "wine" ; - Cheese = ss "cheese" ; - Fish = ss "fish" ; - Very = prefix "very" ; - Fresh = ss "fresh" ; - Warm = ss "warm" ; - Italian = ss "Italian" ; - Expensive = ss "expensive" ; - Delicious = ss "delicious" ; - Boring = ss "boring" ; - - } -``` -The same string operations could be used to write ``FoodIta`` -more concisely. - - -%--! -===Division of labour=== - -Using operations defined in resource modules is a -way to avoid repetitive code. -In addition, it enables a new kind of modularity -and division of labour in grammar writing: grammarians familiar with -the linguistic details of a language can make this knowledge -available through resource grammar modules, whose users only need -to pick the right operations and not to know their implementation -details. - - - - -%--! -==Morphology== - -Suppose we want to say, with the vocabulary included in -``Food.gf``, things like -``` - all Italian wines are delicious -``` -The new grammatical facility we need are the plural forms -of nouns and verbs (//wines, are//), as opposed to their -singular forms. - -The introduction of plural forms requires two things: - -- the **inflection** of nouns and verbs in singular and plural -- the **agreement** of the verb to subject: - the verb must have the same number as the subject - - -Different languages have different rules of inflection and agreement. -For instance, Italian has also agreement in gender (masculine vs. feminine). -We want to express such special features of languages in the -concrete syntax while ignoring them in the abstract syntax. - -To be able to do all this, we need one new judgement form -and many new expression forms. -We also need to generalize linearization types -from strings to more complex types. - - -%--! -===Parameters and tables=== - -We define the **parameter type** of number in Englisn by -using a new form of judgement: -``` - param Number = Sg | Pl ; -``` -To express that ``Kind`` expressions in English have a linearization -depending on number, we replace the linearization type ``{s : Str}`` -with a type where the ``s`` field is a **table** depending on number: -``` - lincat Kind = {s : Number => Str} ; -``` -The **table type** ``Number => Str`` is in many respects similar to -a function type (``Number -> Str``). The main difference is that the -argument type of a table type must always be a parameter type. This means -that the argument-value pairs can be listed in a finite table. The following -example shows such a table: -``` - lin Cheese = {s = table { - Sg => "cheese" ; - Pl => "cheeses" - } - } ; -``` -The table consists of **branches**, where a **pattern** on the -left of the arrow ``=>`` is assigned a **value** on the right. - -The application of a table to a parameter is done by the **selection** -operator ``!``. For instance, -``` - table {Sg => "cheese" ; Pl => "cheeses"} ! Pl -``` -is a selection that computes into the value ``"cheeses"``. -This computation is performed by **pattern matching**: return -the value from the first branch whose pattern matches the -selection argument. - - -%--! -===Inflection tables, paradigms, and ``oper`` definitions=== - -All English common nouns are inflected in number, most of them in the -same way: the plural form is obtained from the singular by adding the -ending //s//. This rule is an example of -a **paradigm** - a formula telling how the inflection -forms of a word are formed. - -From the GF point of view, a paradigm is a function that takes a **lemma** - -also known as a **dictionary form** - and returns an inflection -table of desired type. Paradigms are not functions in the sense of the -``fun`` judgements of abstract syntax (which operate on trees and not -on strings), but operations defined in ``oper`` judgements. -The following operation defines the regular noun paradigm of English: -``` - oper regNoun : Str -> {s : Number => Str} = \x -> { - s = table { - Sg => x ; - Pl => x + "s" - } - } ; -``` -The **gluing** operator ``+`` tells that -the string held in the variable ``x`` and the ending ``"s"`` -are written together to form one **token**. Thus, for instance, -``` - (regNoun "cheese").s ! Pl ---> "cheese" + "s" ---> "cheeses" -``` - - - -%--! -===Worst-case functions and data abstraction=== - -Some English nouns, such as ``mouse``, are so irregular that -it makes no sense to see them as instances of a paradigm. Even -then, it is useful to perform **data abstraction** from the -definition of the type ``Noun``, and introduce a constructor -operation, a **worst-case function** for nouns: -``` - oper mkNoun : Str -> Str -> Noun = \x,y -> { - s = table { - Sg => x ; - Pl => y - } - } ; -``` -Thus we could define -``` - lin Mouse = mkNoun "mouse" "mice" ; -``` -and -``` - oper regNoun : Str -> Noun = \x -> - mkNoun x (x + "s") ; -``` -instead of writing the inflection table explicitly. - -The grammar engineering advantage of worst-case functions is that -the author of the resource module may change the definitions of -``Noun`` and ``mkNoun``, and still retain the -interface (i.e. the system of type signatures) that makes it -correct to use these functions in concrete modules. In programming -terms, ``Noun`` is then treated as an **abstract datatype**. - - - -%--! -===A system of paradigms using Prelude operations=== - -In addition to the completely regular noun paradigm ``regNoun``, -some other frequent noun paradigms deserve to be -defined, for instance, -``` - sNoun : Str -> Noun = \kiss -> mkNoun kiss (kiss + "es") ; -``` -What about nouns like //fly//, with the plural //flies//? The already -available solution is to use the longest common prefix -//fl// (also known as the **technical stem**) as argument, and define -``` - yNoun : Str -> Noun = \fl -> mkNoun (fl + "y") (fl + "ies") ; -``` -But this paradigm would be very unintuitive to use, because the technical stem -is not an existing form of the word. A better solution is to use -the lemma and a string operator ``init``, which returns the initial segment (i.e. -all characters but the last) of a string: -``` - yNoun : Str -> Noun = \fly -> mkNoun fly (init fly + "ies") ; -``` -The operation ``init`` belongs to a set of operations in the -resource module ``Prelude``, which therefore has to be -``open``ed so that ``init`` can be used. - - - -%--! -===An intelligent noun paradigm using ``case`` expressions=== - -It may be hard for the user of a resource morphology to pick the right -inflection paradigm. A way to help this is to define a more intelligent -paradigm, which chooses the ending by first analysing the lemma. -The following variant for English regular nouns puts together all the -previously shown paradigms, and chooses one of them on the basis of -the final letter of the lemma (found by the prelude operator ``last``). -``` - regNoun : Str -> Noun = \s -> case last s of { - "s" | "z" => mkNoun s (s + "es") ; - "y" => mkNoun s (init s + "ies") ; - _ => mkNoun s (s + "s") - } ; -``` -This definition displays many GF expression forms not shown befores; -these forms are explained in the next section. - -The paradigms ``regNoun`` does not give the correct forms for -all nouns. For instance, //mouse - mice// and -//fish - fish// must be given by using ``mkNoun``. -Also the word //boy// would be inflected incorrectly; to prevent -this, either use ``mkNoun`` or modify -``regNoun`` so that the ``"y"`` case does not -apply if the second-last character is a vowel. - - - -%--! -===Pattern matching=== - -We have so far built all expressions of the ``table`` form -from branches whose patterns are constants introduced in -``param`` definitions, as well as constant strings. -But there are more expressive patterns. Here is a summary of the possible forms: -- a variable pattern (identifier other than constant parameter) matches anything -- the wild card ``_`` matches anything -- a string literal pattern, e.g. ``"s"``, matches the same string -- a disjunctive pattern ``P | ... | Q`` matches anything that - one of the disjuncts matches - - -Pattern matching is performed in the order in which the branches -appear in the table: the branch of the first matching pattern is followed. - -As syntactic sugar, one-branch tables can be written concisely, -``` - \\P,...,Q => t === table {P => ... table {Q => t} ...} -``` -Finally, the ``case`` expressions common in functional -programming languages are syntactic sugar for table selections: -``` - case e of {...} === table {...} ! e -``` - - -%--! -===Morphological resource modules=== - -A common idiom is to -gather the ``oper`` and ``param`` definitions -needed for inflecting words in -a language into a morphology module. Here is a simple -example, [``MorphoEng`` resource/MorphoEng.gf]. -``` - --# -path=.:prelude - - resource MorphoEng = open Prelude in { - - param - Number = Sg | Pl ; - - oper - Noun, Verb : Type = {s : Number => Str} ; - - mkNoun : Str -> Str -> Noun = \x,y -> { - s = table { - Sg => x ; - Pl => y - } - } ; - - regNoun : Str -> Noun = \s -> case last s of { - "s" | "z" => mkNoun s (s + "es") ; - "y" => mkNoun s (init s + "ies") ; - _ => mkNoun s (s + "s") - } ; - - mkVerb : Str -> Str -> Verb = \x,y -> mkNoun y x ; - - regVerb : Str -> Verb = \s -> case last s of { - "s" | "z" => mkVerb s (s + "es") ; - "y" => mkVerb s (init s + "ies") ; - "o" => mkVerb s (s + "es") ; - _ => mkVerb s (s + "s") - } ; - } -``` -The first line gives as a hint to the compiler the -**search path** needed to find all the other modules that the -module depends on. The directory ``prelude`` is a subdirectory of -``GF/lib``; to be able to refer to it in this simple way, you can -set the environment variable ``GF_LIB_PATH`` to point to this -directory. - - -%--! -===Testing resource modules=== - -To test a ``resource`` module independently, you must import it -with the flag ``-retain``, which tells GF to retain ``oper`` definitions -in the memory; the usual behaviour is that ``oper`` definitions -are just applied to compile linearization rules -(this is called **inlining**) and then thrown away. -``` - > i -retain MorphoEng.gf -``` -The command ``compute_concrete = cc`` computes any expression -formed by operations and other GF constructs. For example, -``` - > cc regVerb "echo" - {s : Number => Str = table Number { - Sg => "echoes" ; - Pl => "echo" - } - } -``` - -The command ``show_operations = so``` shows the type signatures -of all operations returning a given value type: -``` - > so Verb - MorphoEng.mkNoun : Str -> Str -> {s : {MorphoEng.Number} => Str} - MorphoEng.mkVerb : Str -> Str -> {s : {MorphoEng.Number} => Str} - MorphoEng.regNoun : Str -> {s : {MorphoEng.Number} => Str} - MorphoEng.regVerb : Str -> { s : {MorphoEng.Number} => Str} -``` -Why does the command also show the operations that form -``Noun``s? The reason is that the type expression -``Verb`` is first computed, and its value happens to be -the same as the value of ``Noun``. - - - -==Using parameters in concrete syntax== - -We can now enrich the concrete syntax definitions to -comprise morphology. This will involve a more radical -variation between languages (e.g. English and Italian) -then just the use of different words. In general, -parameters and linearization types are different in -different languages - but this does not prevent the -use of a common abstract syntax. - - -%--! -===Parametric vs. inherent features, agreement=== - -The rule of subject-verb agreement in English says that the verb -phrase must be inflected in the number of the subject. This -means that a noun phrase (functioning as a subject), inherently -//has// a number, which it passes to the verb. The verb does not -//have// a number, but must be able to //receive// whatever number the -subject has. This distinction is nicely represented by the -different linearization types of **noun phrases** and **verb phrases**: -``` - lincat NP = {s : Str ; n : Number} ; - lincat VP = {s : Number => Str} ; -``` -We say that the number of ``NP`` is an **inherent feature**, -whereas the number of ``NP`` is a **variable feature** (or a -**parametric feature**). - -The agreement rule itself is expressed in the linearization rule of -the predication function: -``` - lin PredVP np vp = {s = np.s ++ vp.s ! np.n} ; -``` -The following section will present -``FoodsEng``, assuming the abstract syntax ``Foods`` -that is similar to ``Food`` but also has the -plural determiners ``These`` and ``Those``. -The reader is invited to inspect the way in which agreement works in -the formation of sentences. - - -%--! -===English concrete syntax with parameters=== - -The grammar uses both -[``Prelude`` ../../lib/prelude/Prelude.gf] and -[``MorphoEng`` resource/MorphoEng]. -We will later see how to make the grammar even -more high-level by using a resource grammar library -and parametrized modules. -``` ---# -path=.:resource:prelude - -concrete FoodsEng of Foods = open Prelude, MorphoEng in { - - lincat - S, Quality = SS ; - Kind = {s : Number => Str} ; - Item = {s : Str ; n : Number} ; - - lin - Is item quality = ss (item.s ++ (mkVerb "are" "is").s ! item.n ++ quality.s) ; - This = det Sg "this" ; - That = det Sg "that" ; - These = det Pl "these" ; - Those = det Pl "those" ; - QKind quality kind = {s = \\n => quality.s ++ kind.s ! n} ; - Wine = regNoun "wine" ; - Cheese = regNoun "cheese" ; - Fish = mkNoun "fish" "fish" ; - Very = prefixSS "very" ; - Fresh = ss "fresh" ; - Warm = ss "warm" ; - Italian = ss "Italian" ; - Expensive = ss "expensive" ; - Delicious = ss "delicious" ; - Boring = ss "boring" ; - - oper - det : Number -> Str -> Noun -> {s : Str ; n : Number} = \n,d,cn -> { - s = d ++ cn.s ! n ; - n = n - } ; - -} -``` - - - -%--! -===Hierarchic parameter types=== - -The reader familiar with a functional programming language such as -[Haskell http://www.haskell.org] must have noticed the similarity -between parameter types in GF and **algebraic datatypes** (``data`` definitions -in Haskell). The GF parameter types are actually a special case of algebraic -datatypes: the main restriction is that in GF, these types must be finite. -(It is this restriction that makes it possible to invert linearization rules into -parsing methods.) - -However, finite is not the same thing as enumerated. Even in GF, parameter -constructors can take arguments, provided these arguments are from other -parameter types - only recursion is forbidden. Such parameter types impose a -hierarchic order among parameters. They are often needed to define -the linguistically most accurate parameter systems. - -To give an example, Swedish adjectives -are inflected in number (singular or plural) and -gender (uter or neuter). These parameters would suggest 2*2=4 different -forms. However, the gender distinction is done only in the singular. Therefore, -it would be inaccurate to define adjective paradigms using the type -``Gender => Number => Str``. The following hierarchic definition -yields an accurate system of three adjectival forms. -``` - param AdjForm = ASg Gender | APl ; - param Gender = Utr | Neutr ; -``` -Here is an example of pattern matching, the paradigm of regular adjectives. -``` - oper regAdj : Str -> AdjForm => Str = \fin -> table { - ASg Utr => fin ; - ASg Neutr => fin + "t" ; - APl => fin + "a" ; - } -``` -A constructor can be used as a pattern that has patterns as arguments. For instance, -the adjectival paradigm in which the two singular forms are the same, -can be defined -``` - oper plattAdj : Str -> AdjForm => Str = \platt -> table { - ASg _ => platt ; - APl => platt + "a" ; - } -``` - - -%--! -===Morphological analysis and morphology quiz=== - -Even though morphology is in GF -mostly used as an auxiliary for syntax, it -can also be useful on its own right. The command ``morpho_analyse = ma`` -can be used to read a text and return for each word the analyses that -it has in the current concrete syntax. -``` - > rf bible.txt | morpho_analyse -``` -In the same way as translation exercises, morphological exercises can -be generated, by the command ``morpho_quiz = mq``. Usually, -the category is set to be something else than ``S``. For instance, -``` - > i lib/resource/french/VerbsFre.gf - > morpho_quiz -cat=V - - Welcome to GF Morphology Quiz. - ... - - réapparaître : VFin VCondit Pl P2 - réapparaitriez - > No, not réapparaitriez, but - réapparaîtriez - Score 0/1 -``` -Finally, a list of morphological exercises can be generated -off-line and saved in a -file for later use, by the command ``morpho_list = ml`` -``` - > morpho_list -number=25 -cat=V | wf exx.txt -``` -The ``number`` flag gives the number of exercises generated. - - - -%--! -===Discontinuous constituents=== - -A linearization type may contain more strings than one. -An example of where this is useful are English particle -verbs, such as //switch off//. The linearization of -a sentence may place the object between the verb and the particle: -//he switched it off//. - -The following judgement defines transitive verbs as -**discontinuous constituents**, i.e. as having a linearization -type with two strings and not just one. -``` - lincat TV = {s : Number => Str ; part : Str} ; -``` -This linearization rule -shows how the constituents are separated by the object in complementization. -``` - lin PredTV tv obj = {s = \\n => tv.s ! n ++ obj.s ++ tv.part} ; -``` -There is no restriction in the number of discontinuous constituents -(or other fields) a ``lincat`` may contain. The only condition is that -the fields must be of finite types, i.e. built from records, tables, -parameters, and ``Str``, and not functions. - -A mathematical result -about parsing in GF says that the worst-case complexity of parsing -increases with the number of discontinuous constituents. This is -potentially a reason to avoid discontinuous constituents. -Moreover, the parsing and linearization commands only give accurate -results for categories whose linearization type has a unique ``Str`` -valued field labelled ``s``. Therefore, discontinuous constituents -are not a good idea in top-level categories accessed by the users -of a grammar application. - - -%--! -===Free variation=== - -Sometimes there are many alternative ways to define a concrete syntax. -For instance, the verb negation in English can be expressed both by -//does not// and //doesn't//. In linguistic terms, these expressions -are in **free variation**. The ``variants`` construct of GF can -be used to give a list of strings in free variation. For example, -``` - NegVerb verb = {s = variants {["does not"] ; "doesn't} ++ verb.s ! Pl} ; -``` -An empty variant list -``` - variants {} -``` -can be used e.g. if a word lacks a certain form. - -In general, ``variants`` should be used cautiously. It is not -recommended for modules aimed to be libraries, because the -user of the library has no way to choose among the variants. - - -===Overloading of operations=== - -Large libraries, such as the GF Resource Grammar Library, may define -hundreds of names, which can be unpractical -for both the library writer and the user. The writer has to invent longer -and longer names which are not always intuitive, -and the user has to learn or at least be able to find all these names. -A solution to this problem, adopted by languages such as C++, is **overloading**: -the same name can be used for several functions. When such a name is used, the -compiler performs **overload resolution** to find out which of the possible functions -is meant. The resolution is based on the types of the functions: all functions that -have the same name must have different types. - -In C++, functions with the same name can be scattered everywhere in the program. -In GF, they must be grouped together in ``overload`` groups. Here is an example -of an overload group, defining four ways to define nouns in Italian: -``` - oper mkN = overload { - mkN : Str -> N = -- regular nouns - mkN : Str -> Gender -> N = -- regular nouns with unexpected gender - mkN : Str -> Str -> N = -- irregular nouns - mkN : Str -> Str -> Gender -> N = -- irregular nouns with unexpected gender - } -``` -All of the following uses of ``mkN`` are easy to resolve: -``` - lin Pizza = mkN "pizza" ; -- Str -> N - lin Hand = mkN "mano" Fem ; -- Str -> Gender -> N - lin Man = mkN "uomo" "uomini" ; -- Str -> Str -> N -``` - - - - - - - -%--! -==Using the resource grammar library TODO== - -===Coverage=== - -The GF Resource Grammar Library contains grammar rules for -10 languages (in addition, 2 languages are available as incomplete -implementations, and a few more are under construction). Its purpose -is to make these rules available for application programmers, -who can thereby concentrate on the semantic and stylistic -aspects of their grammars, without having to think about -grammaticality. The targeted level of application grammarians -is that of a skilled programmer with -a practical knowledge of the target languages, but without -theoretical knowledge about their grammars. -Such a combination of -skills is typical of programmers who want to localize -software to new languages. - -The current resource languages are -- ``Ara``bic -- ``Cat``alan -- ``Dan``ish -- ``Eng``lish -- ``Fin``nish -- ``Fre``nch -- ``Ger``man -- ``Ita``lian -- ``Nor``wegian -- ``Rus``sian -- ``Spa``nish -- ``Swe``dish - - -The first three letters (``Eng`` etc) are used in grammar module names. -The Arabic and Catalan implementations are still incomplete, but -enough to be used in many applications. - -To give an example application, consider -music playing devices. In the application, -we may have a semantical category ``Kind``, examples -of ``Kind``s being ``Song`` and ``Artist``. In German, for instance, ``Song`` -is linearized into the noun "Lied", but knowing this is not -enough to make the application work, because the noun must be -produced in both singular and plural, and in four different -cases. By using the resource grammar library, it is enough to -write -``` - lin Song = mkN "Lied" "Lieder" neuter -``` -and the eight forms are correctly generated. The resource grammar -library contains a complete set of inflectional paradigms (such as -``mkN`` here), enabling the definition of any lexical items. - -The resource grammar library is not only about inflectional paradigms - it -also has syntax rules. The music player application -might also want to modify songs with properties, such as "American", -"old", "good". The German grammar for adjectival modifications is -particularly complex, because adjectives have to agree in gender, -number, and case, and also depend on what determiner is used -("ein amerikanisches Lied" vs. "das amerikanische Lied"). All this -variation is taken care of by the resource grammar function -``` - fun AdjCN : AP -> CN -> CN -``` -(see the tables in the end of this document for the list of all resource grammar -functions). The resource grammar implementation of the rule adding properties -to kinds is -``` - lin PropKind kind prop = AdjCN prop kind -``` -given that -``` - lincat Prop = AP - lincat Kind = CN -``` -The resource library API is devided into language-specific -and language-independent parts. To put it roughly, -- the lexicon API is language-specific -- the syntax API is language-independent - - -Thus, to render the above example in French instead of German, we need to -pick a different linearization of ``Song``, -``` - lin Song = mkN "chanson" feminine -``` -But to linearize ``PropKind``, we can use the very same rule as in German. -The resource function ``AdjCN`` has different implementations in the two -languages (e.g. a different word order in French), -but the application programmer need not care about the difference. - - -===Note on APIs=== - -From version 1.1 onwards, the resource library is available via two -APIs: -- original ``fun`` and ``oper`` definitions -- overloaded ``oper`` definitions - - -Introducing overloading in GF version 2.7 has been a success in improving -the accessibility of libraries. It has also created a layer of abstraction -between the writers and users of libraries, and thereby makes the library -easier to modify. We shall therefore use the overloaded API -in this document. The original function names are mainly interesting -for those who want to write or modify libraries. - - - -===A complete example=== - -To summarize the example, and also give a template for a programmer to work on, -here is the complete implementation of a small system with songs and properties. -The abstract syntax defines a "domain ontology": -``` - abstract Music = { - cat - Kind, - Property ; - fun - PropKind : Kind -> Property -> Kind ; - Song : Kind ; - American : Property ; - } -``` -The concrete syntax is defined by a functor (parametrized module), -independently of language, by opening -two interfaces: the resource ``Grammar`` and an application lexicon. -``` - incomplete concrete MusicI of Music = open Grammar, MusicLex in { - lincat - Kind = CN ; - Property = AP ; - lin - PropKind k p = AdjCN p k ; - Song = UseN song_N ; - American = PositA american_A ; - } -``` -The application lexicon ``MusicLex`` has an abstract syntax that extends -the resource category system ``Cat``. -``` - abstract MusicLex = Cat ** { - fun - song_N : N ; - american_A : A ; - } -``` -Each language has its own concrete syntax, which opens the -inflectional paradigms module for that language: -``` - concrete MusicLexGer of MusicLex = - CatGer ** open ParadigmsGer in { - lin - song_N = reg2N "Lied" "Lieder" neuter ; - american_A = regA "amerikanisch" ; - } - - concrete MusicLexFre of MusicLex = - CatFre ** open ParadigmsFre in { - lin - song_N = regGenN "chanson" feminine ; - american_A = regA "américain" ; - } -``` -The top-level ``Music`` grammars are obtained by -instantiating the two interfaces of ``MusicI``: -``` - concrete MusicGer of Music = MusicI with - (Grammar = GrammarGer), - (MusicLex = MusicLexGer) ; - - concrete MusicFre of Music = MusicI with - (Grammar = GrammarFre), - (MusicLex = MusicLexFre) ; -``` -Both of these files can use the same ``path``, defined as -``` - --# -path=.:present:prelude -``` -The ``present`` category contains the compiled resources, restricted to -present tense; ``alltenses`` has the full resources. - -To localize the music player system to a new language, -all that is needed is two modules, -one implementing ``MusicLex`` and the other -instantiating ``Music``. The latter is -completely trivial, whereas the former one involves the choice of correct -vocabulary and inflectional paradigms. For instance, Finnish is added as follows: -``` - concrete MusicLexFin of MusicLex = - CatFin ** open ParadigmsFin in { - lin - song_N = regN "kappale" ; - american_A = regA "amerikkalainen" ; - } - - concrete MusicFin of Music = MusicI with - (Grammar = GrammarFin), - (MusicLex = MusicLexFin) ; -``` -More work is of course needed if the language-independent linearizations in -MusicI are not satisfactory for some language. The resource grammar guarantees -that the linearizations are possible in all languages, in the sense of grammatical, -but they might of course be inadequate for stylistic reasons. Assume, -for the sake of argument, that adjectival modification does not sound good in -English, but that a relative clause would be preferrable. One can then start as -before, -``` - concrete MusicLexEng of MusicLex = - CatEng ** open ParadigmsEng in { - lin - song_N = regN "song" ; - american_A = regA "American" ; - } - - concrete MusicEng0 of Music = MusicI with - (Grammar = GrammarEng), - (MusicLex = MusicLexEng) ; -``` -The module ``MusicEng0`` would not be used on the top level, however, but -another module would be built on top of it, with a restricted import from -``MusicEng0``. ``MusicEng`` inherits everything from ``MusicEng0`` -except ``PropKind``, and -gives its own definition of this function: -``` - concrete MusicEng of Music = - MusicEng0 - [PropKind] ** open GrammarEng in { - lin - PropKind k p = - RelCN k (UseRCl TPres ASimul PPos - (RelVP IdRP (UseComp (CompAP p)))) ; - } -``` - -===To find rules in the resource grammar library=== - -====Inflection paradigms==== - -Inflection paradigms are defined separately for each language //L// -in the module ``Paradigms``//L//. To test them, the command -``cc`` (= ``compute_concrete``) -can be used: -``` - > i -retain german/ParadigmsGer.gf - - > cc mkN "Schlange" - { - s : Number => Case => Str = table Number { - Sg => table Case { - Nom => "Schlange" ; - Acc => "Schlange" ; - Dat => "Schlange" ; - Gen => "Schlange" - } ; - Pl => table Case { - Nom => "Schlangen" ; - Acc => "Schlangen" ; - Dat => "Schlangen" ; - Gen => "Schlangen" - } - } ; - g : Gender = Fem - } -``` -For the sake of convenience, every language implements these five paradigms: -``` - oper - mkN : Str -> N ; -- regular nouns - mkA : Str -> A : -- regular adjectives - mkV : Str -> V ; -- regular verbs - mkPN : Str -> PN ; -- regular proper names - mkV2 : V -> V2 ; -- direct transitive verbs -``` -It is often possible to initialize a lexicon by just using these functions, -and later revise it by using the more involved paradigms. For instance, in -German we cannot use ``mkN "Lied"`` for ``Song``, because the result would be a -Masculine noun with the plural form ``"Liede"``. -The individual ``Paradigms`` modules -tell what cases are covered by the regular heuristics. - -As a limiting case, one could even initialize the lexicon for a new language -by copying the English (or some other already existing) lexicon. This would -produce language with correct grammar but with content words directly borrowed from -English - maybe not so strange in certain technical domains. - - - -====Syntax rules==== - -Syntax rules should be looked for in the module ``Constructors``. -Below this top-level module exposing overloaded constructors, -there are around 10 abstract modules, each defining constructors for -a group of one or more related categories. For instance, the module -``Noun`` defines how to construct common nouns, noun phrases, and determiners. -But these special modules are seldom needed by the users of the library. - -TODO: when are they needed? - -Browsing the libraries is helped by the gfdoc-generated HTML pages, -whose LaTeX versions are included in the present document. - - - -====Browsing by the parser==== - -A method alternative to browsing library documentation is -to use the parser. -Even though parsing is not an intended end-user application -of resource grammars, it is a useful technique for application grammarians -to browse the library. To find out which resource function implements -a particular structure, one can just parse a string that exemplifies this -structure. For instance, to find out how sentences are built using -transitive verbs, write -``` - > i english/LangEng.gf - - > p -cat=Cl -fcfg "she loves him" - - PredVP (UsePron she_Pron) (ComplV2 love_V2 (UsePron he_Pron)) -``` -The parser returns original constructors, not overloaded ones. - -Parsing with the English resource grammar has an acceptable speed, but -with most languages it takes just too much resources even to build the -parser. However, examples parsed in one language can always be linearized into -other languages: -``` - > i italian/LangIta.gf - - > l PredVP (UsePron she_Pron) (ComplV2 love_V2 (UsePron he_Pron)) - - lo ama -``` -Therefore, one can use the English parser to write an Italian grammar, and also -to write a language-independent (incomplete) grammar. One can also parse strings -that are bizarre in English but the intended way of expression in another language. -For instance, the phrase for "I am hungry" in Italian is literally "I have hunger". -This can be built by parsing "I have beer" in LanEng and then writing -``` - lin IamHungry = - let beer_N = regGenN "fame" feminine - in - PredVP (UsePron i_Pron) (ComplV2 have_V2 - (DetCN (DetSg MassDet NoOrd) (UseN beer_N))) ; -``` -which uses ParadigmsIta.regGenN. - - - - - -%--! -==More constructs for concrete syntax== - -In this chapter, we go through constructs that are not necessary in simple grammars -or when the concrete syntax relies on libraries, but very useful when writing advanced -concrete syntax implementations, such as resource grammar libraries. - - -%--! -===Local definitions=== - -Local definitions ("``let`` expressions") are used in functional -programming for two reasons: to structure the code into smaller -expressions, and to avoid repeated computation of one and -the same expression. Here is an example, from -[``MorphoIta`` resource/MorphoIta.gf]: -``` - oper regNoun : Str -> Noun = \vino -> - let - vin = init vino ; - o = last vino - in - case o of { - "a" => mkNoun Fem vino (vin + "e") ; - "o" | "e" => mkNoun Masc vino (vin + "i") ; - _ => mkNoun Masc vino vino - } ; -``` - - -===Record extension and subtyping=== - -Record types and records can be **extended** with new fields. For instance, -in German it is natural to see transitive verbs as verbs with a case. -The symbol ``**`` is used for both constructs. -``` - lincat TV = Verb ** {c : Case} ; - - lin Follow = regVerb "folgen" ** {c = Dative} ; -``` -To extend a record type or a record with a field whose label it -already has is a type error. - -A record type //T// is a **subtype** of another one //R//, if //T// has -all the fields of //R// and possibly other fields. For instance, -an extension of a record type is always a subtype of it. - -If //T// is a subtype of //R//, an object of //T// can be used whenever -an object of //R// is required. For instance, a transitive verb can -be used whenever a verb is required. - -**Contravariance** means that a function taking an //R// as argument -can also be applied to any object of a subtype //T//. - - - -===Tuples and product types=== - -Product types and tuples are syntactic sugar for record types and records: -``` - T1 * ... * Tn === {p1 : T1 ; ... ; pn : Tn} - === {p1 = T1 ; ... ; pn = Tn} -``` -Thus the labels ``p1, p2,...`` are hard-coded. - - -===Record and tuple patterns=== - -Record types of parameter types are also parameter types. -A typical example is a record of agreement features, e.g. French -``` - oper Agr : PType = {g : Gender ; n : Number ; p : Person} ; -``` -Notice the term ``PType`` rather than just ``Type`` referring to -parameter types. Every ``PType`` is also a ``Type``, but not vice-versa. - -Pattern matching is done in the expected way, but it can moreover -utilize partial records: the branch -``` - {g = Fem} => t -``` -in a table of type ``Agr => T`` means the same as -``` - {g = Fem ; n = _ ; p = _} => t -``` -Tuple patterns are translated to record patterns in the -same way as tuples to records; partial patterns make it -possible to write, slightly surprisingly, -``` - case of { - => t - ... - } -``` - - -%--! -===Regular expression patterns=== - -To define string operations computed at compile time, such -as in morphology, it is handy to use regular expression patterns: - - //p// ``+`` //q// : token consisting of //p// followed by //q// - - //p// ``*`` : token //p// repeated 0 or more times - (max the length of the string to be matched) - - ``-`` //p// : matches anything that //p// does not match - - //x// ``@`` //p// : bind to //x// what //p// matches - - //p// ``|`` //q// : matches what either //p// or //q// matches - - -The last three apply to all types of patterns, the first two only to token strings. -As an example, we give a rule for the formation of English word forms -ending with an //s// and used in the formation of both plural nouns and -third-person present-tense verbs. -``` - add_s : Str -> Str = \w -> case w of { - _ + "oo" => w + "s" ; -- bamboo - _ + ("s" | "z" | "x" | "sh" | "o") => w + "es" ; -- bus, hero - _ + ("a" | "o" | "u" | "e") + "y" => w + "s" ; -- boy - x + "y" => x + "ies" ; -- fly - _ => w + "s" -- car - } ; -``` -Here is another example, the plural formation in Swedish 2nd declension. -The second branch uses a variable binding with ``@`` to cover the cases where an -unstressed pre-final vowel //e// disappears in the plural -(//nyckel-nycklar, seger-segrar, bil-bilar//): -``` - plural2 : Str -> Str = \w -> case w of { - pojk + "e" => pojk + "ar" ; - nyck + "e" + l@("l" | "r" | "n") => nyck + l + "ar" ; - bil => bil + "ar" - } ; -``` - - -Semantics: variables are always bound to the **first match**, which is the first -in the sequence of binding lists ``Match p v`` defined as follows. In the definition, -``p`` is a pattern and ``v`` is a value. -``` - Match (p1|p2) v = Match p1 v ++ Match p2 v - Match (p1+p2) s = [Match p1 s1 ++ Match p2 s2 | - i <- [0..length s], (s1,s2) = splitAt i s] - Match p* s = [[]] if Match "" s ++ Match p s ++ Match (p+p) s ++... /= [] - Match -p v = [[]] if Match p v = [] - Match c v = [[]] if c == v -- for constant and literal patterns c - Match x v = [[(x,v)]] -- for variable patterns x - Match x@p v = [[(x,v)]] + M if M = Match p v /= [] - Match p v = [] otherwise -- failure -``` -Examples: -- ``x + "e" + y`` matches ``"peter"`` with ``x = "p", y = "ter"`` -- ``x + "er"*`` matches ``"burgerer"`` with ``x = "burg" - - - - - -%--! -===Prefix-dependent choices=== - -Sometimes a token has different forms depending on the token -that follows. An example is the English indefinite article, -which is //an// if a vowel follows, //a// otherwise. -Which form is chosen can only be decided at run time, i.e. -when a string is actually build. GF has a special construct for -such tokens, the ``pre`` construct exemplified in -``` - oper artIndef : Str = - pre {"a" ; "an" / strs {"a" ; "e" ; "i" ; "o"}} ; -``` -Thus -``` - artIndef ++ "cheese" ---> "a" ++ "cheese" - artIndef ++ "apple" ---> "an" ++ "apple" -``` -This very example does not work in all situations: the prefix -//u// has no general rules, and some problematic words are -//euphemism, one-eyed, n-gram//. It is possible to write -``` - oper artIndef : Str = - pre {"a" ; - "a" / strs {"eu" ; "one"} ; - "an" / strs {"a" ; "e" ; "i" ; "o" ; "n-"} - } ; -``` - - -===Predefined types and operations=== - -GF has the following predefined categories in abstract syntax: -``` - cat Int ; -- integers, e.g. 0, 5, 743145151019 - cat Float ; -- floats, e.g. 0.0, 3.1415926 - cat String ; -- strings, e.g. "", "foo", "123" -``` -The objects of each of these categories are **literals** -as indicated in the comments above. No ``fun`` definition -can have a predefined category as its value type, but -they can be used as arguments. For example: -``` - fun StreetAddress : Int -> String -> Address ; - lin StreetAddress number street = {s = number.s ++ street.s} ; - - -- e.g. (StreetAddress 10 "Downing Street") : Address -``` -FIXME: The linearization type is ``{s : Str}`` for all these categories. - - - - -==More concepts of abstract syntax== - -This section is about the use of the type theory part of GF for -including more semantics in grammars. Some of the subsections present -ideas that have not yet been used in real-world applications, and whose -tool support outside the GF program is not complete. - - -===GF as a logical framework=== - -In this section, we will show how -to encode advanced semantic concepts in an abstract syntax. -We use concepts inherited from **type theory**. Type theory -is the basis of many systems known as **logical frameworks**, which are -used for representing mathematical theorems and their proofs on a computer. -In fact, GF has a logical framework as its proper part: -this part is the abstract syntax. - -In a logical framework, the formalization of a mathematical theory -is a set of type and function declarations. The following is an example -of such a theory, represented as an ``abstract`` module in GF. -``` -abstract Arithm = { - cat - Prop ; -- proposition - Nat ; -- natural number - fun - Zero : Nat ; -- 0 - Succ : Nat -> Nat ; -- successor of x - Even : Nat -> Prop ; -- x is even - And : Prop -> Prop -> Prop ; -- A and B - } -``` -A concrete syntax is given below, as an example of using the resource grammar -library. - - - -===Dependent types=== - -**Dependent types** are a characteristic feature of GF, -inherited from the -**constructive type theory** of Martin-Löf and -distinguishing GF from most other grammar formalisms and -functional programming languages. -The initial main motivation for developing GF was, indeed, -to have a grammar formalism with dependent types. -As can be inferred from the fact that we introduce them only now, -after having written lots of grammars without them, -dependent types are no longer the only motivation for GF. -But they are still important and interesting. - - -Dependent types can be used for stating stronger -**conditions of well-formedness** than non-dependent types. -A simple example is postal addresses. Ignoring the other details, -let us take a look at addresses consisting of -a street, a city, and a country. -``` -abstract Address = { - cat - Address ; Country ; City ; Street ; - - fun - mkAddress : Country -> City -> Street -> Address ; - - UK, France : Country ; - Paris, London, Grenoble : City ; - OxfordSt, ShaftesburyAve, BdRaspail, RueBlondel, AvAlsaceLorraine : Street ; - } -``` -The linearization rules are straightforward, -``` - lin - mkAddress country city street = - ss (street.s ++ "," ++ city.s ++ "," ++ country.s) ; - UK = ss ("U.K.") ; - France = ss ("France") ; - Paris = ss ("Paris") ; - London = ss ("London") ; - Grenoble = ss ("Grenoble") ; - OxfordSt = ss ("Oxford" ++ "Street") ; - ShaftesburyAve = ss ("Shaftesbury" ++ "Avenue") ; - BdRaspail = ss ("boulevard" ++ "Raspail") ; - RueBlondel = ss ("rue" ++ "Blondel") ; - AvAlsaceLorraine = ss ("avenue" ++ "Alsace-Lorraine") ; -``` -Notice that, in ``mkAddress``, we have -reversed the order of the constituents. The type of ``mkAddress`` -in the abstract syntax takes its arguments in a "logical" order, -with increasing precision. (This order is sometimes even used in the -concrete syntax of addresses, e.g. in Russia). - -Both existing and non-existing addresses are recognized by this -grammar. The non-existing ones in the following randomly generated -list have afterwards been marked by *: -``` - > gr -cat=Address -number=7 | l - - * Oxford Street , Paris , France - * Shaftesbury Avenue , Grenoble , U.K. - boulevard Raspail , Paris , France - * rue Blondel , Grenoble , U.K. - * Shaftesbury Avenue , Grenoble , France - * Oxford Street , London , France - * Shaftesbury Avenue , Grenoble , France -``` -Dependent types provide a way to guarantee that addresses are -well-formed. What we do is to include **contexts** in -``cat`` judgements: -``` - cat - Address ; - Country ; - City Country ; - Street (x : Country)(City x) ; -``` -The first two judgements are as before, but the third one makes -``City`` dependent on ``Country``: there are no longer just cities, -but cities of the U.K. and cities of France. The fourth judgement -makes ``Street`` dependent on ``City``; but since -``City`` is itself dependent on ``Country``, we must -include them both in the context, moreover guaranteeing that -the city is one of the given country. Since the context itself -is built by using a dependent type, we have to use variables -to indicate the dependencies. The judgement we used for ``City`` -is actually shorthand for -``` - cat City (x : Country) -``` -which is only possible if the subsequent context does not depend on ``x``. - -The ``fun`` judgements of the grammar are modified accordingly: -``` - fun - mkAddress : (x : Country) -> (y : City x) -> Street x y -> Address ; - - UK : Country ; - France : Country ; - Paris : City France ; - London : City UK ; - Grenoble : City France ; - OxfordSt : Street UK London ; - ShaftesburyAve : Street UK London ; - BdRaspail : Street France Paris ; - RueBlondel : Street France Paris ; - AvAlsaceLorraine : Street France Grenoble ; -``` -Since the type of ``mkAddress`` now has dependencies among -its argument types, we have to use variables just like we used in -the context of ``Street`` above. What we claimed to be the -"logical" order of the arguments is now forced by the type system -of GF: a variable must be declared (=bound) before it can be -referenced (=used). - -The effect of dependent types is that the *-marked addresses above are -no longer well-formed. What the GF parser actually does is that it -initially accepts them (by using a context-free parsing algorithm) -and then rejects them (by type checking). The random generator does not produce -illegal addresses (this could be useful in bulk mailing!). -The linearization algorithm does not care about type dependencies; -actually, since the //categories// (ignoring their arguments) -are the same in both abstract syntaxes, -we use the same concrete syntax -for both of them. - -**Remark**. Function types //without// -variables are actually a shorthand notation: writing -``` - fun PredV1 : NP -> V1 -> S -``` -is shorthand for -``` - fun PredV1 : (x : NP) -> (y : V1) -> S -``` -or any other naming of the variables. Actually the use of variables -sometimes shortens the code, since we can write e.g. -``` - oper triple : (x,y,z : Str) -> Str = ... -``` -If a bound variable is not used, it can here, as elswhere in GF, be replaced by -a wildcard: -``` - oper triple : (_,_,_ : Str) -> Str = ... -``` - - - -===Dependent types in concrete syntax=== - -The **functional fragment** of GF -terms and types comprises function types, applications, lambda -abstracts, constants, and variables. This fragment is similar in -abstract and concrete syntax. In particular, -dependent types are also available in concrete syntax. -We have not made use of them yet, -but we will now look at one example of how they -can be used. - -Those readers who are familiar with functional programming languages -like ML and Haskell, may already have missed **polymorphic** -functions. For instance, Haskell programmers have access to -the functions -``` - const :: a -> b -> a - const c _ = c - - flip :: (a -> b -> c) -> b -> a -> c - flip f y x = f x y -``` -which can be used for any given types ``a``,``b``, and ``c``. - -The GF counterpart of polymorphic functions are **monomorphic** -functions with explicit **type variables**. Thus the above -definitions can be written -``` - oper const :(a,b : Type) -> a -> b -> a = - \_,_,c,_ -> c ; - - oper flip : (a,b,c : Type) -> (a -> b ->c) -> b -> a -> c = - \_,_,_,f,x,y -> f y x ; -``` -When the operations are used, the type checker requires -them to be equipped with all their arguments; this may be a nuisance -for a Haskell or ML programmer. - - - -===Expressing selectional restrictions=== - -This section introduces a way of using dependent types to -formalize a notion known as **selectional restrictions** -in linguistics. We first present a mathematical model -of the notion, and then integrate it in a linguistically -motivated syntax. - -In linguistics, a -grammar is usually thought of as being about **syntactic well-formedness** -in a rather liberal sense: an expression can be well-formed without -being meaningful, in other words, without being -**semantically well-formed**. -For instance, the sentence -``` - the number 2 is equilateral -``` -is syntactically well-formed but semantically ill-formed. -It is well-formed because it combines a well-formed -noun phrase ("the number 2") with a well-formed -verb phrase ("is equilateral") and satisfies the agreement -rule saying that the verb phrase is inflected in the -number of the noun phrase: -``` - fun PredVP : NP -> VP -> S ; - lin PredVP np v = {s = np.s ++ vp.s ! np.n} ; -``` -It is ill-formed because the predicate "is equilateral" -is only defined for triangles, not for numbers. - -In a straightforward type-theoretical formalization of -mathematics, domains of mathematical objects -are defined as types. In GF, we could write -``` - cat Nat ; - cat Triangle ; - cat Prop ; -``` -for the types of natural numbers, triangles, and propositions, -respectively. -Noun phrases are typed as objects of basic types other than -``Prop``, whereas verb phrases are functions from basic types -to ``Prop``. For instance, -``` - fun two : Nat ; - fun Even : Nat -> Prop ; - fun Equilateral : Triangle -> Prop ; -``` -With these judgements, and the linearization rules -``` - lin two = ss ["the number 2"] ; - lin Even x = ss (x.s ++ ["is even"]) ; - lin Equilateral x = ss (x.s ++ ["is equilateral"]) ; -``` -we can form the proposition ``Even two`` -``` - the number 2 is even -``` -but no proposition linearized to -``` - the number 2 is equilateral -``` -since ``Equilateral two`` is not a well-formed type-theoretical object. -It is not even accepted by the context-free parser. - -When formalizing mathematics, e.g. in the purpose of -computer-assisted theorem proving, we are certainly interested -in semantic well-formedness: we want to be sure that a proposition makes -sense before we make the effort of proving it. The straightforward typing -of nouns and predicates shown above is the way in which this -is guaranteed in various proof systems based on type theory. -(Notice that it is still possible to form //false// propositions, -e.g. "the number 3 is even". -False and meaningless are different things.) - -As shown by the linearization rules for ``two``, ``Even``, -etc, it //is// possible to use straightforward mathematical typings -as the abstract syntax of a grammar. However, this syntax is not very -expressive linguistically: for instance, there is no distinction between -adjectives and verbs. It is hard to give rules for structures like -adjectival modification ("even number") and conjunction of predicates -("even or odd"). - -By using dependent types, it is simple to combine a linguistically -motivated system of categories with mathematically motivated -type restrictions. What we need is a category of domains of -individual objects, -``` - cat Dom -``` -and dependencies of other categories on this: -``` - cat - S ; -- sentence - V1 Dom ; -- one-place verb with specific subject type - V2 Dom Dom ; -- two-place verb with specific subject and object types - A1 Dom ; -- one-place adjective - A2 Dom Dom ; -- two-place adjective - NP Dom ; -- noun phrase for an object of specific type - Conj ; -- conjunction - Det ; -- determiner -``` -Having thus parametrized categories on domains, we have to reformulate -the rules of predication, etc, accordingly. This is straightforward: -``` - fun - PredV1 : (A : Dom) -> NP A -> V1 A -> S ; - ComplV2 : (A,B : Dom) -> V2 A B -> NP B -> V1 A ; - DetCN : Det -> (A : Dom) -> NP A ; - ModA1 : (A : Dom) -> A1 A -> Dom ; - ConjS : Conj -> S -> S -> S ; - ConjV1 : (A : Dom) -> Conj -> V1 A -> V1 A -> V1 A ; -``` -In linearization rules, -we use wildcards for the domain arguments, -because they don't affect linearization: -``` - lin - PredV1 _ np vp = ss (np.s ++ vp.s) ; - ComplV2 _ _ v2 np = ss (v2.s ++ np.s) ; - DetCN det cn = ss (det.s ++ cn.s) ; - ModA1 cn a1 = ss (a1.s ++ cn.s) ; - ConjS conj s1 s2 = ss (s1.s ++ conj.s ++ s2.s) ; - ConjV1 _ conj v1 v2 = ss (v1.s ++ conj.s ++ v2.s) ; -``` -The domain arguments thus get suppressed in linearization. -Parsing initially returns metavariables for them, -but type checking can usually restore them -by inference from those arguments that are not suppressed. - -One traditional linguistic example of domain restrictions -(= selectional restrictions) is the contrast between the two sentences -``` - John plays golf - golf plays John -``` -To explain the contrast, we introduce the functions -``` - human : Dom ; - game : Dom ; - play : V2 human game ; - John : NP human ; - Golf : NP game ; -``` -Both sentences still pass the context-free parser, -returning trees with lots of metavariables of type ``Dom``: -``` - PredV1 ?0 John (ComplV2 ?1 ?2 play Golf) - PredV1 ?0 Golf (ComplV2 ?1 ?2 play John) -``` -But only the former sentence passes the type checker, which moreover -infers the domain arguments: -``` - PredV1 human John (ComplV2 human game play Golf) -``` -To try this out in GF, use ``pt = put_term`` with the **tree transformation** -that solves the metavariables by type checking: -``` - > p -tr "John plays golf" | pt -transform=solve - > p -tr "golf plays John" | pt -transform=solve -``` -In the latter case, no solutions are found. - -A known problem with selectional restrictions is that they can be more -or less liberal. For instance, -``` - John loves Mary - John loves golf -``` -should both make sense, even though ``Mary`` and ``golf`` -are of different types. A natural solution in this case is to -formalize ``love`` as a **polymorphic** verb, which takes -a human as its first argument but an object of any type as its second -argument: -``` - fun love : (A : Dom) -> V2 human A ; - lin love _ = ss "loves" ; -``` -In other words, it is possible for a human to love anything. - -A problem related to polymorphism is **subtyping**: what -is meaningful for a ``human`` is also meaningful for -a ``man`` and a ``woman``, but not the other way round. -One solution to this is **coercions**: functions that -"lift" objects from subtypes to supertypes. - - -===Case study: selectional restrictions and statistical language models TODO=== - - -===Proof objects=== - -Perhaps the most well-known idea in constructive type theory is -the **Curry-Howard isomorphism**, also known as the -**propositions as types principle**. Its earliest formulations -were attempts to give semantics to the logical systems of -propositional and predicate calculus. In this section, we will consider -a more elementary example, showing how the notion of proof is useful -outside mathematics, as well. - -We first define the category of unary (also known as Peano-style) -natural numbers: -``` - cat Nat ; - fun Zero : Nat ; - fun Succ : Nat -> Nat ; -``` -The **successor function** ``Succ`` generates an infinite -sequence of natural numbers, beginning from ``Zero``. - -We then define what it means for a number //x// to be //less than// -a number //y//. Our definition is based on two axioms: -- ``Zero`` is less than ``Succ`` //y// for any //y//. -- If //x// is less than //y//, then``Succ`` //x// is less than ``Succ`` //y//. - - -The most straightforward way of expressing these axioms in type theory -is as typing judgements that introduce objects of a type ``Less`` //x y //: -``` - cat Less Nat Nat ; - fun lessZ : (y : Nat) -> Less Zero (Succ y) ; - fun lessS : (x,y : Nat) -> Less x y -> Less (Succ x) (Succ y) ; -``` -Objects formed by ``lessZ`` and ``lessS`` are -called **proof objects**: they establish the truth of certain -mathematical propositions. -For instance, the fact that 2 is less that -4 has the proof object -``` - lessS (Succ Zero) (Succ (Succ (Succ Zero))) - (lessS Zero (Succ (Succ Zero)) (lessZ (Succ Zero))) -``` -whose type is -``` - Less (Succ (Succ Zero)) (Succ (Succ (Succ (Succ Zero)))) -``` -which is the formalization of the proposition that 2 is less than 4. - -GF grammars can be used to provide a **semantic control** of -well-formedness of expressions. We have already seen examples of this: -the grammar of well-formed addresses and the grammar with -selectional restrictions above. By introducing proof objects -we have now added a very powerful technique of expressing semantic conditions. - -A simple example of the use of proof objects is the definition of -well-formed //time spans//: a time span is expected to be from an earlier to -a later time: -``` - from 3 to 8 -``` -is thus well-formed, whereas -``` - from 8 to 3 -``` -is not. The following rules for spans impose this condition -by using the ``Less`` predicate: -``` - cat Span ; - fun span : (m,n : Nat) -> Less m n -> Span ; -``` -A possible practical application of this idea is **proof-carrying documents**: -to be semantically well-formed, the abstract syntax of a document must contain a proof -of some property, although the proof is not shown in the concrete document. -Think, for instance, of small documents describing flight connections: - -//To fly from Gothenburg to Prague, first take LH3043 to Frankfurt, then OK0537 to Prague.// - -The well-formedness of this text is partly expressible by dependent typing: -``` - cat - City ; - Flight City City ; - fun - Gothenburg, Frankfurt, Prague : City ; - LH3043 : Flight Gothenburg Frankfurt ; - OK0537 : Flight Frankfurt Prague ; -``` -This rules out texts saying //take OK0537 from Gothenburg to Prague//. However, there is a -further condition saying that it must be possible to change from LH3043 to OK0537 in Frankfurt. -This can be modelled as a proof object of a suitable type, which is required by the constructor -that connects flights. -``` - cat - IsPossible (x,y,z : City)(Flight x y)(Flight y z) ; - fun - Connect : (x,y,z : City) -> - (u : Flight x y) -> (v : Flight y z) -> - IsPossible x y z u v -> Flight x z ; -``` - - - -===Variable bindings=== - -Mathematical notation and programming languages have lots of -expressions that **bind** variables. For instance, -a universally quantifier proposition -``` - (All x)B(x) -``` -consists of the **binding** ``(All x)`` of the variable ``x``, -and the **body** ``B(x)``, where the variable ``x`` can have -**bound occurrences**. - -Variable bindings appear in informal mathematical language as well, for -instance, -``` - for all x, x is equal to x - - the function that for any numbers x and y returns the maximum of x+y - and x*y -``` -In type theory, variable-binding expression forms can be formalized -as functions that take functions as arguments. The universal -quantifier is defined -``` - fun All : (Ind -> Prop) -> Prop -``` -where ``Ind`` is the type of individuals and ``Prop``, -the type of propositions. If we have, for instance, the equality predicate -``` - fun Eq : Ind -> Ind -> Prop -``` -we may form the tree -``` - All (\x -> Eq x x) -``` -which corresponds to the ordinary notation -``` - (All x)(x = x). -``` - - -An abstract syntax where trees have functions as arguments, as in -the two examples above, has turned out to be precisely the right -thing for the semantics and computer implementation of -variable-binding expressions. The advantage lies in the fact that -only one variable-binding expression form is needed, the lambda abstract -``\x -> b``, and all other bindings can be reduced to it. -This makes it easier to implement mathematical theories and reason -about them, since variable binding is tricky to implement and -to reason about. The idea of using functions as arguments of -syntactic constructors is known as **higher-order abstract syntax**. - -The question now arises: how to define linearization rules -for variable-binding expressions? -Let us first consider universal quantification, -``` - fun All : (Ind -> Prop) -> Prop -``` -We write -``` - lin All B = {s = "(" ++ "All" ++ B.$0 ++ ")" ++ B.s} -``` -to obtain the form shown above. -This linearization rule brings in a new GF concept - the ``$0`` -field of ``B`` containing a bound variable symbol. -The general rule is that, if an argument type of a function is -itself a function type ``A -> C``, the linearization type of -this argument is the linearization type of ``C`` -together with a new field ``$0 : Str``. In the linearization rule -for ``All``, the argument ``B`` thus has the linearization -type -``` - {$0 : Str ; s : Str}, -``` -since the linearization type of ``Prop`` is -``` - {s : Str} -``` -In other words, the linearization of a function -consists of a linearization of the body together with a -field for a linearization of the bound variable. -Those familiar with type theory or lambda calculus -should notice that GF requires trees to be in -**eta-expanded** form in order to be linearizable: -any function of type -``` - A -> B -``` -always has a syntax tree of the form -``` - \x -> b -``` -where ``b : B`` under the assumption ``x : A``. -It is in this form that an expression can be analysed -as having a bound variable and a body. - - -Given the linearization rule -``` - lin Eq a b = {s = "(" ++ a.s ++ "=" ++ b.s ++ ")"} -``` -the linearization of -``` - \x -> Eq x x -``` -is the record -``` - {$0 = "x", s = ["( x = x )"]} -``` -Thus we can compute the linearization of the formula, -``` - All (\x -> Eq x x) --> {s = "[( All x ) ( x = x )]"}. -``` - -How did we get the //linearization// of the variable ``x`` -into the string ``"x"``? GF grammars have no rules for -this: it is just hard-wired in GF that variable symbols are -linearized into the same strings that represent them in -the print-out of the abstract syntax. - - -To be able to //parse// variable symbols, however, GF needs to know what -to look for (instead of e.g. trying to parse //any// -string as a variable). What strings are parsed as variable symbols -is defined in the lexical analysis part of GF parsing -``` - > p -cat=Prop -lexer=codevars "(All x)(x = x)" - All (\x -> Eq x x) -``` -(see more details on lexers below). If several variables are bound in the -same argument, the labels are ``$0, $1, $2``, etc. - - - -===Semantic definitions=== - -We have seen that, -just like functional programming languages, GF has declarations -of functions, telling what the type of a function is. -But we have not yet shown how to **compute** -these functions: all we can do is provide them with arguments -and linearize the resulting terms. -Since our main interest is the well-formedness of expressions, -this has not yet bothered -us very much. As we will see, however, computation does play a role -even in the well-formedness of expressions when dependent types are -present. - -GF has a form of judgement for **semantic definitions**, -recognized by the key word ``def``. At its simplest, it is just -the definition of one constant, e.g. -``` - def one = Succ Zero ; -``` -We can also define a function with arguments, -``` - def Neg A = Impl A Abs ; -``` -which is still a special case of the most general notion of -definition, that of a group of **pattern equations**: -``` - def - sum x Zero = x ; - sum x (Succ y) = Succ (Sum x y) ; -``` -To compute a term is, as in functional programming languages, -simply to follow a chain of reductions until no definition -can be applied. For instance, we compute -``` - Sum one one --> - Sum (Succ Zero) (Succ Zero) --> - Succ (sum (Succ Zero) Zero) --> - Succ (Succ Zero) -``` -Computation in GF is performed with the ``pt`` command and the -``compute`` transformation, e.g. -``` - > p -tr "1 + 1" | pt -transform=compute -tr | l - sum one one - Succ (Succ Zero) - s(s(0)) -``` - -The ``def`` definitions of a grammar induce a notion of -**definitional equality** among trees: two trees are -definitionally equal if they compute into the same tree. -Thus, trivially, all trees in a chain of computation -(such as the one above) -are definitionally equal to each other. So are the trees -``` - sum Zero (Succ one) - Succ one - sum (sum Zero Zero) (sum (Succ Zero) one) -``` -and infinitely many other trees. - -A fact that has to be emphasized about ``def`` definitions is that -they are //not// performed as a first step of linearization. -We say that **linearization is intensional**, which means that -the definitional equality of two trees does not imply that -they have the same linearizations. For instance, each of the seven terms -shown above has a different linearizations in arithmetic notation: -``` - 1 + 1 - s(0) + s(0) - s(s(0) + 0) - s(s(0)) - 0 + s(0) - s(1) - 0 + 0 + s(0) + 1 -``` -This notion of intensionality is -no more exotic than the intensionality of any **pretty-printing** -function of a programming language (function that shows -the expressions of the language as strings). It is vital for -pretty-printing to be intensional in this sense - if we want, -for instance, to trace a chain of computation by pretty-printing each -intermediate step, what we want to see is a sequence of different -expression, which are definitionally equal. - -What is more exotic is that GF has two ways of referring to the -abstract syntax objects. In the concrete syntax, the reference is intensional. -In the abstract syntax, the reference is extensional, since -**type checking is extensional**. The reason is that, -in the type theory with dependent types, types may depend on terms. -Two types depending on terms that are definitionally equal are -equal types. For instance, -``` - Proof (Odd one) - Proof (Odd (Succ Zero)) -``` -are equal types. Hence, any tree that type checks as a proof that -1 is odd also type checks as a proof that the successor of 0 is odd. -(Recall, in this connection, that the -arguments a category depends on never play any role -in the linearization of trees of that category, -nor in the definition of the linearization type.) - -In addition to computation, definitions impose a -**paraphrase** relation on expressions: -two strings are paraphrases if they -are linearizations of trees that are -definitionally equal. -Paraphrases are sometimes interesting for -translation: the **direct translation** -of a string, which is the linearization of the same tree -in the targer language, may be inadequate because it is e.g. -unidiomatic or ambiguous. In such a case, -the translation algorithm may be made to consider -translation by a paraphrase. - -To stress express the distinction between -**constructors** (=**canonical** functions) -and other functions, GF has a judgement form -``data`` to tell that certain functions are canonical, e.g. -``` - data Nat = Succ | Zero ; -``` -Unlike in Haskell, but similarly to ALF (where constructor functions -are marked with a flag ``C``), -new constructors can be added to -a type with new ``data`` judgements. The type signatures of constructors -are given separately, in ordinary ``fun`` judgements. -One can also write directly -``` - data Succ : Nat -> Nat ; -``` -which is equivalent to the two judgements -``` - fun Succ : Nat -> Nat ; - data Nat = Succ ; -``` - - -===Case study: representing anaphoric reference TODO=== - - -==Transfer modules TODO== - -Transfer means noncompositional tree-transforming operations. -The command ``apply_transfer = at`` is typically used in a pipe: -``` - > p "John walks and John runs" | apply_transfer aggregate | l - John walks and runs -``` -See the -[sources ../../transfer/examples/aggregation] of this example. - -See the -[transfer language documentation ../transfer.html] -for more information. - - -==Practical issues TODO== - - -===Lexers and unlexers=== - -Lexers and unlexers can be chosen from -a list of predefined ones, using the flags``-lexer`` and `` -unlexer`` either -in the grammar file or on the GF command line. - -Given by ``help -lexer``, ``help -unlexer``: -``` - The default is words. - -lexer=words tokens are separated by spaces or newlines - -lexer=literals like words, but GF integer and string literals recognized - -lexer=vars like words, but "x","x_...","$...$" as vars, "?..." as meta - -lexer=chars each character is a token - -lexer=code use Haskell's lex - -lexer=codevars like code, but treat unknown words as variables, ?? as meta - -lexer=text with conventions on punctuation and capital letters - -lexer=codelit like code, but treat unknown words as string literals - -lexer=textlit like text, but treat unknown words as string literals - -lexer=codeC use a C-like lexer - -lexer=ignore like literals, but ignore unknown words - -lexer=subseqs like ignore, but then try all subsequences from longest - - The default is unwords. - -unlexer=unwords space-separated token list (like unwords) - -unlexer=text format as text: punctuation, capitals, paragraph

- -unlexer=code format as code (spacing, indentation) - -unlexer=textlit like text, but remove string literal quotes - -unlexer=codelit like code, but remove string literal quotes - -unlexer=concat remove all spaces - -unlexer=bind like identity, but bind at "&+" -``` - - -===Efficiency of grammars=== - -Issues: - -- the choice of datastructures in ``lincat``s -- the value of the ``optimize`` flag -- parsing efficiency: ``-fcfg`` vs. others - - -===Speech input and output=== - -The``speak_aloud = sa`` command sends a string to the speech -synthesizer -[Flite http://www.speech.cs.cmu.edu/flite/doc/]. -It is typically used via a pipe: -``` generate_random | linearize | speak_aloud -The result is only satisfactory for English. - -The ``speech_input = si`` command receives a string from a -speech recognizer that requires the installation of -[ATK http://mi.eng.cam.ac.uk/~sjy/software.htm]. -It is typically used to pipe input to a parser: -``` speech_input -tr | parse -The method words only for grammars of English. - -Both Flite and ATK are freely available through the links -above, but they are not distributed together with GF. - - -===Multilingual syntax editor=== - -The -[Editor User Manual http://www.cs.chalmers.se/~aarne/GF2.0/doc/javaGUImanual/javaGUImanual.htm] -describes the use of the editor, which works for any multilingual GF grammar. - -Here is a snapshot of the editor: - -[../quick-editor.png] - -The grammars of the snapshot are from the -[Letter grammar package http://www.cs.chalmers.se/~aarne/GF/examples/letter]. - - - -===Interactive Development Environment (IDE)=== - -Forthcoming. - - -===Communicating with GF=== - -Other processes can communicate with the GF command interpreter, -and also with the GF syntax editor. Useful flags when invoking GF are -- ``-batch`` suppresses the promps and structures the communication with XML tags. -- ``-s`` suppresses non-output non-error messages and XML tags. --- ``-nocpu`` suppresses CPU time indication. - -Thus the most silent way to invoke GF is -``` - gf -batch -s -nocpu -``` - - - -===Embedded grammars in Haskell, Java, and Prolog=== - -GF grammars can be used as parts of programs written in the -following languages. The links give more documentation. - -- [Java http://www.cs.chalmers.se/~bringert/gf/gf-java.html] -- [Haskell http://www.cs.chalmers.se/~aarne/GF/src/GF/Embed/EmbedAPI.hs] -- [Prolog http://www.cs.chalmers.se/~peb/software.html] - - -===Alternative input and output grammar formats=== - -A summary is given in the following chart of GF grammar compiler phases: -[../gf-compiler.png] - - -==Larger case studies TODO== - -===Interfacing formal and natural languages=== - -[Formal and Informal Software Specifications http://www.cs.chalmers.se/~krijo/thesis/thesisA4.pdf], -PhD Thesis by -[Kristofer Johannisson http://www.cs.chalmers.se/~krijo], is an extensive example of this. -The system is based on a multilingual grammar relating the formal language OCL with -English and German. - -A simpler example will be explained here. - - -===A multimodal dialogue system=== - -See TALK project deliverables, [TALK homepage http://www.talk-project.org] - diff --git a/doc/tutorial/music/Music.gf b/doc/tutorial/music/Music.gf deleted file mode 100644 index 23defb7a6..000000000 --- a/doc/tutorial/music/Music.gf +++ /dev/null @@ -1,12 +0,0 @@ - abstract Music = { - - flags startcat=Kind ; - - cat - Kind ; - Property ; - fun - PropKind : Kind -> Property -> Kind ; - Song : Kind ; - American : Property ; -} \ No newline at end of file diff --git a/doc/tutorial/music/MusicEng.gf b/doc/tutorial/music/MusicEng.gf deleted file mode 100644 index 60f7b31d4..000000000 --- a/doc/tutorial/music/MusicEng.gf +++ /dev/null @@ -1,11 +0,0 @@ ---# -path=.:present:api:prelude - - concrete MusicEng of Music = - MusicI - [PropKind] - with - (Syntax = SyntaxEng), - (MusicLex = MusicLexEng) ** - open SyntaxEng in { - lin - PropKind k p = mkCN k (mkRS (mkRCl which_RP (mkVP p))) ; - } diff --git a/doc/tutorial/music/MusicFin.gf b/doc/tutorial/music/MusicFin.gf deleted file mode 100644 index 2ced47d78..000000000 --- a/doc/tutorial/music/MusicFin.gf +++ /dev/null @@ -1,5 +0,0 @@ ---# -path=.:present:prelude - - concrete MusicFin of Music = MusicI with - (Syntax = SyntaxFin), - (MusicLex = MusicLexFin) ; diff --git a/doc/tutorial/music/MusicFre.gf b/doc/tutorial/music/MusicFre.gf deleted file mode 100644 index 69e85a119..000000000 --- a/doc/tutorial/music/MusicFre.gf +++ /dev/null @@ -1,6 +0,0 @@ ---# -path=.:present:prelude - - - concrete MusicFre of Music = MusicI with - (Syntax = SyntaxFre), - (MusicLex = MusicLexFre) ; diff --git a/doc/tutorial/music/MusicGer.gf b/doc/tutorial/music/MusicGer.gf deleted file mode 100644 index 75621a25a..000000000 --- a/doc/tutorial/music/MusicGer.gf +++ /dev/null @@ -1,6 +0,0 @@ ---# -path=.:present:api:prelude - - concrete MusicGer of Music = MusicI with - (Syntax = SyntaxGer), - (MusicLex = MusicLexGer) ; - diff --git a/doc/tutorial/music/MusicI.gf b/doc/tutorial/music/MusicI.gf deleted file mode 100644 index 54a6a6c37..000000000 --- a/doc/tutorial/music/MusicI.gf +++ /dev/null @@ -1,9 +0,0 @@ - incomplete concrete MusicI of Music = open Syntax, MusicLex in { - lincat - Kind = CN ; - Property = AP ; - lin - PropKind k p = mkCN p k ; - Song = mkCN song_N ; - American = mkAP american_A ; - } diff --git a/doc/tutorial/music/MusicLex.gf b/doc/tutorial/music/MusicLex.gf deleted file mode 100644 index 87a670698..000000000 --- a/doc/tutorial/music/MusicLex.gf +++ /dev/null @@ -1,5 +0,0 @@ - abstract MusicLex = Cat ** { - fun - song_N : N ; - american_A : A ; - } diff --git a/doc/tutorial/music/MusicLexEng.gf b/doc/tutorial/music/MusicLexEng.gf deleted file mode 100644 index 8aef6b6c5..000000000 --- a/doc/tutorial/music/MusicLexEng.gf +++ /dev/null @@ -1,5 +0,0 @@ - concrete MusicLexEng of MusicLex = CatEng ** open ParadigmsEng in { - lin - song_N = mkN "song" "songs" ; - american_A = mkA "American" ; - } \ No newline at end of file diff --git a/doc/tutorial/music/MusicLexFin.gf b/doc/tutorial/music/MusicLexFin.gf deleted file mode 100644 index 4e438092e..000000000 --- a/doc/tutorial/music/MusicLexFin.gf +++ /dev/null @@ -1,7 +0,0 @@ - concrete MusicLexFin of MusicLex = - CatFin ** open ParadigmsFin in { - lin - song_N = mkN "kappale" ; - american_A = mkA "amerikkalainen" ; - } - diff --git a/doc/tutorial/music/MusicLexFre.gf b/doc/tutorial/music/MusicLexFre.gf deleted file mode 100644 index e09368a5c..000000000 --- a/doc/tutorial/music/MusicLexFre.gf +++ /dev/null @@ -1,6 +0,0 @@ - concrete MusicLexFre of MusicLex = CatFre ** open ParadigmsFre in { - - lin - song_N = mkN "chanson" feminine ; - american_A = mkA "américain" ; - } diff --git a/doc/tutorial/music/MusicLexGer.gf b/doc/tutorial/music/MusicLexGer.gf deleted file mode 100644 index 8d0974a77..000000000 --- a/doc/tutorial/music/MusicLexGer.gf +++ /dev/null @@ -1,6 +0,0 @@ - concrete MusicLexGer of MusicLex = - CatGer ** open ParadigmsGer in { - lin - song_N = mkN "Lied" "Lieder" neuter ; - american_A = mkA "amerikanisch" ; - } diff --git a/doc/tutorial/music/old/Music.gf b/doc/tutorial/music/old/Music.gf deleted file mode 100644 index e662bc70e..000000000 --- a/doc/tutorial/music/old/Music.gf +++ /dev/null @@ -1,9 +0,0 @@ - abstract Music = { - cat - Kind ; - Property ; - fun - PropKind : Kind -> Property -> Kind ; - Song : Kind ; - American : Property ; -} \ No newline at end of file diff --git a/doc/tutorial/music/old/MusicEng.gf b/doc/tutorial/music/old/MusicEng.gf deleted file mode 100644 index 1339ab757..000000000 --- a/doc/tutorial/music/old/MusicEng.gf +++ /dev/null @@ -1,7 +0,0 @@ ---# -path=.:present:prelude - - concrete MusicEng of Music = MusicEng0 - [PropKind] ** open GrammarEng in { - lin - PropKind k p = - RelCN k (UseRCl TPres ASimul PPos (RelVP IdRP (UseComp (CompAP p)))) ; - } diff --git a/doc/tutorial/music/old/MusicEng0.gf b/doc/tutorial/music/old/MusicEng0.gf deleted file mode 100644 index 2d9ae53b3..000000000 --- a/doc/tutorial/music/old/MusicEng0.gf +++ /dev/null @@ -1,3 +0,0 @@ - concrete MusicEng0 of Music = MusicI with - (Grammar = GrammarEng), - (MusicLex = MusicLexEng) ; diff --git a/doc/tutorial/music/old/MusicFin.gf b/doc/tutorial/music/old/MusicFin.gf deleted file mode 100644 index 1778446a6..000000000 --- a/doc/tutorial/music/old/MusicFin.gf +++ /dev/null @@ -1,5 +0,0 @@ ---# -path=.:present:prelude - - concrete MusicFin of Music = MusicI with - (Grammar = GrammarFin), - (MusicLex = MusicLexFin) ; diff --git a/doc/tutorial/music/old/MusicFre.gf b/doc/tutorial/music/old/MusicFre.gf deleted file mode 100644 index 4992589ef..000000000 --- a/doc/tutorial/music/old/MusicFre.gf +++ /dev/null @@ -1,6 +0,0 @@ ---# -path=.:present:prelude - - - concrete MusicFre of Music = MusicI with - (Grammar = GrammarFre), - (MusicLex = MusicLexFre) ; diff --git a/doc/tutorial/music/old/MusicGer.gf b/doc/tutorial/music/old/MusicGer.gf deleted file mode 100644 index eaf22f287..000000000 --- a/doc/tutorial/music/old/MusicGer.gf +++ /dev/null @@ -1,6 +0,0 @@ ---# -path=.:present:prelude - - concrete MusicGer of Music = MusicI with - (Grammar = GrammarGer), - (MusicLex = MusicLexGer) ; - diff --git a/doc/tutorial/music/old/MusicI.gf b/doc/tutorial/music/old/MusicI.gf deleted file mode 100644 index a831fd7e6..000000000 --- a/doc/tutorial/music/old/MusicI.gf +++ /dev/null @@ -1,9 +0,0 @@ - incomplete concrete MusicI of Music = open Grammar, MusicLex in { - lincat - Kind = CN ; - Property = AP ; - lin - PropKind k p = AdjCN p k ; - Song = UseN song_N ; - American = PositA american_A ; - } \ No newline at end of file diff --git a/doc/tutorial/music/old/MusicLex.gf b/doc/tutorial/music/old/MusicLex.gf deleted file mode 100644 index 87a670698..000000000 --- a/doc/tutorial/music/old/MusicLex.gf +++ /dev/null @@ -1,5 +0,0 @@ - abstract MusicLex = Cat ** { - fun - song_N : N ; - american_A : A ; - } diff --git a/doc/tutorial/music/old/MusicLexEng.gf b/doc/tutorial/music/old/MusicLexEng.gf deleted file mode 100644 index 3d90e8f37..000000000 --- a/doc/tutorial/music/old/MusicLexEng.gf +++ /dev/null @@ -1,5 +0,0 @@ - concrete MusicLexEng of MusicLex = CatEng ** open ParadigmsEng in { - lin - song_N = regN "song" ; - american_A = regA "American" ; - } \ No newline at end of file diff --git a/doc/tutorial/music/old/MusicLexFin.gf b/doc/tutorial/music/old/MusicLexFin.gf deleted file mode 100644 index eb6ba7ef0..000000000 --- a/doc/tutorial/music/old/MusicLexFin.gf +++ /dev/null @@ -1,6 +0,0 @@ - concrete MusicLexFin of MusicLex = CatFin ** open ParadigmsFin in { - lin - song_N = regN "kappale" ; - american_A = regA "amerikkalainen" ; - } - diff --git a/doc/tutorial/music/old/MusicLexFre.gf b/doc/tutorial/music/old/MusicLexFre.gf deleted file mode 100644 index 31efbc728..000000000 --- a/doc/tutorial/music/old/MusicLexFre.gf +++ /dev/null @@ -1,5 +0,0 @@ - concrete MusicLexFre of MusicLex = CatFre ** open ParadigmsFre in { - lin - song_N = regGenN "chanson" feminine ; - american_A = regA "américain" ; - } diff --git a/doc/tutorial/music/old/MusicLexGer.gf b/doc/tutorial/music/old/MusicLexGer.gf deleted file mode 100644 index 52e16bc0c..000000000 --- a/doc/tutorial/music/old/MusicLexGer.gf +++ /dev/null @@ -1,5 +0,0 @@ - concrete MusicLexGer of MusicLex = CatGer ** open ParadigmsGer in { - lin - song_N = reg2N "Lied" "Lieder" neuter ; - american_A = regA "amerikanisch" ; - } diff --git a/doc/tutorial/old/Fish.gf b/doc/tutorial/old/Fish.gf deleted file mode 100644 index c404115e9..000000000 --- a/doc/tutorial/old/Fish.gf +++ /dev/null @@ -1,4 +0,0 @@ -abstract Fish = { - cat Fish ; - fun Salmon, Perch : Fish ; -} diff --git a/doc/tutorial/old/FishEng.gf b/doc/tutorial/old/FishEng.gf deleted file mode 100644 index 560f6cda4..000000000 --- a/doc/tutorial/old/FishEng.gf +++ /dev/null @@ -1,5 +0,0 @@ -concrete FishEng of Fish = { - lin - Salmon = {s = "salmon"} ; - Perch = {s = "perch"} ; -} diff --git a/doc/tutorial/old/Gatherer.gf b/doc/tutorial/old/Gatherer.gf deleted file mode 100644 index 4ef16485a..000000000 --- a/doc/tutorial/old/Gatherer.gf +++ /dev/null @@ -1,5 +0,0 @@ -abstract Gatherer = Paleolithic, Fish, Mushrooms ** { - fun - FishCN : Fish -> CN ; - MushroomCN : Mushroom -> CN ; -} \ No newline at end of file diff --git a/doc/tutorial/old/Gatherer.gif b/doc/tutorial/old/Gatherer.gif deleted file mode 100644 index 758b8ea8b3443763579e1a02a9776e18e114c82b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12415 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 VP -> S ; - UseV : V -> VP ; - ComplTV : TV -> NP -> VP ; - UseA : A -> VP ; - ModA : A -> CN -> CN ; - This, That, Def, Indef : CN -> NP ; - Boy, Louse, Snake, Worm : CN ; - Green, Rotten, Thick, Warm : A ; - Laugh, Sleep, Swim : V ; - Eat, Kill, Wash : TV ; -} \ No newline at end of file diff --git a/doc/tutorial/old/PaleolithicEng.gf b/doc/tutorial/old/PaleolithicEng.gf deleted file mode 100644 index ac78f9d9d..000000000 --- a/doc/tutorial/old/PaleolithicEng.gf +++ /dev/null @@ -1,28 +0,0 @@ -concrete PaleolithicEng of Paleolithic = { -lincat - S, NP, VP, CN, A, V, TV = {s : Str} ; -lin - PredVP np vp = {s = np.s ++ vp.s} ; - UseV v = v ; - ComplTV tv np = {s = tv.s ++ np.s} ; - UseA a = {s = "is" ++ a.s} ; - This cn = {s = "this" ++ cn.s} ; - That cn = {s = "that" ++ cn.s} ; - Def cn = {s = "the" ++ cn.s} ; - Indef cn = {s = "a" ++ cn.s} ; - ModA a cn = {s = a.s ++ cn.s} ; - Boy = {s = "boy"} ; - Louse = {s = "louse"} ; - Snake = {s = "snake"} ; - Worm = {s = "worm"} ; - Green = {s = "green"} ; - Rotten = {s = "rotten"} ; - Thick = {s = "thick"} ; - Warm = {s = "warm"} ; - Laugh = {s = "laughs"} ; - Sleep = {s = "sleeps"} ; - Swim = {s = "swims"} ; - Eat = {s = "eats"} ; - Kill = {s = "kills"} ; - Wash = {s = "washes"} ; -} \ No newline at end of file diff --git a/doc/tutorial/old/PaleolithicIta.gf b/doc/tutorial/old/PaleolithicIta.gf deleted file mode 100644 index 242c615d7..000000000 --- a/doc/tutorial/old/PaleolithicIta.gf +++ /dev/null @@ -1,28 +0,0 @@ -concrete PaleolithicIta of Paleolithic = { -lincat - S, NP, VP, CN, A, V, TV = {s : Str} ; -lin - PredVP np vp = {s = np.s ++ vp.s} ; - UseV v = v ; - ComplTV tv np = {s = tv.s ++ np.s} ; - UseA a = {s = "è" ++ a.s} ; - This cn = {s = "questo" ++ cn.s} ; - That cn = {s = "quello" ++ cn.s} ; - Def cn = {s = "il" ++ cn.s} ; - Indef cn = {s = "un" ++ cn.s} ; - ModA a cn = {s = cn.s ++ a.s} ; - Boy = {s = "ragazzo"} ; - Louse = {s = "pidocchio"} ; - Snake = {s = "serpente"} ; - Worm = {s = "verme"} ; - Green = {s = "verde"} ; - Rotten = {s = "marcio"} ; - Thick = {s = "grosso"} ; - Warm = {s = "caldo"} ; - Laugh = {s = "ride"} ; - Sleep = {s = "dorme"} ; - Swim = {s = "nuota"} ; - Eat = {s = "mangia"} ; - Kill = {s = "uccide"} ; - Wash = {s = "lava"} ; -} diff --git a/doc/tutorial/old/paleolithic.cf b/doc/tutorial/old/paleolithic.cf deleted file mode 100644 index 08496c800..000000000 --- a/doc/tutorial/old/paleolithic.cf +++ /dev/null @@ -1,23 +0,0 @@ -PredVP. S ::= NP VP ; -UseV. VP ::= V ; -ComplTV. VP ::= TV NP ; -UseA. VP ::= "is" A ; -This. NP ::= "this" CN ; -That. NP ::= "that" CN ; -Def. NP ::= "the" CN ; -Indef. NP ::= "a" CN ; -ModA. CN ::= A CN ; -Boy. CN ::= "boy" ; -Louse. CN ::= "louse" ; -Snake. CN ::= "snake" ; -Worm. CN ::= "worm" ; -Green. A ::= "green" ; -Rotten. A ::= "rotten" ; -Thick. A ::= "thick" ; -Warm. A ::= "warm" ; -Laugh. V ::= "laughs" ; -Sleep. V ::= "sleeps" ; -Swim. V ::= "swims" ; -Eat. TV ::= "eats" ; -Kill. TV ::= "kills" -Wash. TV ::= "washes" ; diff --git a/doc/tutorial/old/paleolithic.ebnf b/doc/tutorial/old/paleolithic.ebnf deleted file mode 100644 index cd091ae04..000000000 --- a/doc/tutorial/old/paleolithic.ebnf +++ /dev/null @@ -1,8 +0,0 @@ -S ::= NP VP ; -VP ::= V | TV NP | "is" A ; -NP ::= ("this" | "that" | "the" | "a") CN ; -CN ::= A CN ; -CN ::= "boy" | "louse" | "snake" | "worm" ; -A ::= "green" | "rotten" | "thick" | "warm" ; -V ::= "laughs" | "sleeps" | "swims" ; -TV ::= "eats" | "kills" | "washes" ; diff --git a/doc/tutorial/prelude b/doc/tutorial/prelude deleted file mode 100644 index 3f7b84056..000000000 --- a/doc/tutorial/prelude +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass[nwbk_0pt]{book} -\usepackage[latin1]{inputenc} - -%\setlength{\oddsidemargin}{0mm} -%\setlength{\evensidemargin}{-2mm} -%\setlength{\topmargin}{-12mm} -%\setlength{\textheight}{220mm} -%\setlength{\textwidth}{158mm} - -\newcommand{\bequ}{\begin{quote}} -\newcommand{\enqu}{\end{quote}} -%%% \ No newline at end of file diff --git a/doc/tutorial/resource-food/Food.gf b/doc/tutorial/resource-food/Food.gf deleted file mode 100644 index 66a23e4a9..000000000 --- a/doc/tutorial/resource-food/Food.gf +++ /dev/null @@ -1,14 +0,0 @@ -abstract Food = { - - cat - S ; Item ; Kind ; Quality ; - - fun - Is : Item -> Quality -> S ; - This, That, All : Kind -> Item ; - QKind : Quality -> Kind -> Kind ; - Wine, Cheese, Fish, Beer, Pizza : Kind ; - Very : Quality -> Quality ; - Fresh, Warm, Italian, Expensive, Delicious, Boring : Quality ; - -} diff --git a/doc/tutorial/resource-food/FoodEng.gf b/doc/tutorial/resource-food/FoodEng.gf deleted file mode 100644 index 0fdf8235c..000000000 --- a/doc/tutorial/resource-food/FoodEng.gf +++ /dev/null @@ -1,9 +0,0 @@ ---# -path=.:present:prelude - -concrete FoodEng of Food = FoodI - [Pizza] with - (Syntax = SyntaxEng), - (LexFood = LexFoodEng) ** - open SyntaxEng, ParadigmsEng in { - - lin Pizza = mkCN (mkA "Italian") (mkN "pie") ; -} diff --git a/doc/tutorial/resource-food/FoodFin.gf b/doc/tutorial/resource-food/FoodFin.gf deleted file mode 100644 index 200d39b75..000000000 --- a/doc/tutorial/resource-food/FoodFin.gf +++ /dev/null @@ -1,5 +0,0 @@ ---# -path=.:present:prelude - -concrete FoodFin of Food = FoodI with - (Syntax = SyntaxFin), - (LexFood = LexFoodFin) ; diff --git a/doc/tutorial/resource-food/FoodFre.gf b/doc/tutorial/resource-food/FoodFre.gf deleted file mode 100644 index 60b8f0dc2..000000000 --- a/doc/tutorial/resource-food/FoodFre.gf +++ /dev/null @@ -1,30 +0,0 @@ ---# -path=present:prelude - -concrete FoodFre of Food = open SyntaxFre,ParadigmsFre in { - - lincat - S = Utt ; - Item = NP ; - Kind = CN ; - Quality = AP ; - - lin - Is item quality = mkUtt (mkCl item quality) ; - This kind = mkNP (mkDet this_Quant) kind ; - That kind = mkNP (mkDet that_Quant) kind ; - All kind = mkNP all_Predet (mkNP defPlDet kind) ; - QKind quality kind = mkCN quality kind ; - Wine = mkCN (mkN "vin") ; - Beer = mkCN (mkN "bière") ; - Pizza = mkCN (mkN "pizza" feminine) ; - Cheese = mkCN (mkN "fromage" masculine) ; - Fish = mkCN (mkN "poisson") ; - Very quality = mkAP very_AdA quality ; - Fresh = mkAP (mkA "frais" "fraîche") ; - Warm = mkAP (mkA "chaud") ; - Italian = mkAP (mkA "italien") ; - Expensive = mkAP (mkA "cher") ; - Delicious = mkAP (mkA "délicieux") ; - Boring = mkAP (mkA "ennuyeux") ; - -} diff --git a/doc/tutorial/resource-food/FoodGer.gf b/doc/tutorial/resource-food/FoodGer.gf deleted file mode 100644 index 2e76d3f39..000000000 --- a/doc/tutorial/resource-food/FoodGer.gf +++ /dev/null @@ -1,5 +0,0 @@ ---# -path=.:present:prelude - -concrete FoodGer of Food = FoodI with - (Syntax = SyntaxGer), - (LexFood = LexFoodGer) ; diff --git a/doc/tutorial/resource-food/FoodI.gf b/doc/tutorial/resource-food/FoodI.gf deleted file mode 100644 index 1d637be24..000000000 --- a/doc/tutorial/resource-food/FoodI.gf +++ /dev/null @@ -1,28 +0,0 @@ -incomplete concrete FoodI of Food = open Syntax, LexFood in { - - lincat - S = Utt ; - Item = NP ; - Kind = CN ; - Quality = AP ; - - lin - Is item quality = mkUtt (mkCl item quality) ; - This kind = mkNP (mkDet this_Quant) kind ; - That kind = mkNP (mkDet that_Quant) kind ; - All kind = mkNP all_Predet (mkNP defPlDet kind) ; - QKind quality kind = mkCN quality kind ; - Wine = mkCN wine_N ; - Beer = mkCN beer_N ; - Pizza = mkCN pizza_N ; - Cheese = mkCN cheese_N ; - Fish = mkCN fish_N ; - Very quality = mkAP very_AdA quality ; - Fresh = mkAP fresh_A ; - Warm = mkAP warm_A ; - Italian = mkAP italian_A ; - Expensive = mkAP expensive_A ; - Delicious = mkAP delicious_A ; - Boring = mkAP boring_A ; - -} diff --git a/doc/tutorial/resource-food/LexFood.gf b/doc/tutorial/resource-food/LexFood.gf deleted file mode 100644 index 18578c4d8..000000000 --- a/doc/tutorial/resource-food/LexFood.gf +++ /dev/null @@ -1,16 +0,0 @@ -interface LexFood = open Syntax in { - - oper - wine_N : N ; - beer_N : N ; - pizza_N : N ; - cheese_N : N ; - fish_N : N ; - fresh_A : A ; - warm_A : A ; - italian_A : A ; - expensive_A : A ; - delicious_A : A ; - boring_A : A ; - -} diff --git a/doc/tutorial/resource-food/LexFoodFin.gf b/doc/tutorial/resource-food/LexFoodFin.gf deleted file mode 100644 index b4f8809ac..000000000 --- a/doc/tutorial/resource-food/LexFoodFin.gf +++ /dev/null @@ -1,16 +0,0 @@ -instance LexFoodFin of LexFood = open SyntaxFin, ParadigmsFin in { - - oper - wine_N = mkN "viini" ; - beer_N = mkN "olut" ; - pizza_N = mkN "pizza" ; - cheese_N = mkN "juusto" ; - fish_N = mkN "kala" ; - fresh_A = mkA "tuore" ; - warm_A = mkA "lämmin" ; - italian_A = mkA "italialainen" ; - expensive_A = mkA "kallis" ; - delicious_A = mkA "herkullinen" ; - boring_A = mkA "tylsä" ; - -} diff --git a/doc/tutorial/resource-food/LexFoodGer.gf b/doc/tutorial/resource-food/LexFoodGer.gf deleted file mode 100644 index 7f04f2e8d..000000000 --- a/doc/tutorial/resource-food/LexFoodGer.gf +++ /dev/null @@ -1,16 +0,0 @@ -instance LexFoodGer of LexFood = open SyntaxGer, ParadigmsGer in { - - oper - wine_N = mkN "Wein" ; - beer_N = mkN "Bier" "Biere" neuter ; - pizza_N = mkN "Pizza" "Pizzen" feminine ; - cheese_N = mkN "Käse" "Käsen" masculine ; - fish_N = mkN "Fisch" ; - fresh_A = mkA "frisch" ; - warm_A = mkA "warm" "wärmer" "wärmste" ; - italian_A = mkA "italienisch" ; - expensive_A = mkA "teuer" ; - delicious_A = mkA "köstlich" ; - boring_A = mkA "langweilig" ; - -} diff --git a/doc/tutorial/resource/LexEng.gf b/doc/tutorial/resource/LexEng.gf deleted file mode 100644 index c939aac9f..000000000 --- a/doc/tutorial/resource/LexEng.gf +++ /dev/null @@ -1,34 +0,0 @@ ---# -path=.:prelude - -resource LexEng = open SyntaxEng, MorphoEng, Prelude in { - - oper - - -- constructors for open lexicon - - mkN : (man,men : Str) -> CN ; - regN : (car : Str) -> CN ; - - mkA : (hot : Str) -> AP ; - - mkV : (go,goes : Str) -> V ; - regV : (walk : Str) -> V ; - - mkV2 : (look : V) -> (at : Str) -> V2 ; - dirV2 : (eat : V) -> V2 ; - - -------------------------------------------- - -- definitions, hidden from users - - mkN x y = mkNoun x y ** {lock_CN = <>} ; - regN x = regNoun x ** {lock_CN = <>} ; - - mkA x = ss x ** {lock_AP = <>} ; - - mkV x y = mkVerb x y ** {lock_V = <>} ; - regV x = regVerb x ** {lock_V = <>} ; - - mkV2 x p = x ** {c = p ; lock_V2 = <>} ; - dirV2 x = mkV2 x [] ; - -} diff --git a/doc/tutorial/resource/LexFoods.gf b/doc/tutorial/resource/LexFoods.gf deleted file mode 100644 index 5bda608a3..000000000 --- a/doc/tutorial/resource/LexFoods.gf +++ /dev/null @@ -1,4 +0,0 @@ -interface LexFoods = open Syntax in { - - -} \ No newline at end of file diff --git a/doc/tutorial/resource/LexIta.gf b/doc/tutorial/resource/LexIta.gf deleted file mode 100644 index 0b8940e1e..000000000 --- a/doc/tutorial/resource/LexIta.gf +++ /dev/null @@ -1,46 +0,0 @@ ---# -path=.:prelude - -resource LexIta = open SyntaxIta, MorphoIta, Prelude in { - - oper - - -- constructors for genders - - Gender : Type ; - masculine, feminine : Gender ; - - -- constructors for open lexicon - - mkN : Gender -> (vino,vini : Str) -> CN ; - regN : (vino : Str) -> CN ; - femN : CN -> CN ; - - mkA : (nero,nera,neri,nere : Str) -> AP ; - regA : (nero : Str) -> AP ; - - mkV : (ama,amano : Str) -> V ; - regV : (amare : Str) -> V ; - - mkV2 : (aspettare : V) -> (a : Str) -> V2 ; - dirV2 : (mangiare : V) -> V2 ; - - -------------------------------------------- - -- definitions, hidden from users - - Gender = MorphoIta.Gender ; - masculine = Masc ; - feminine = Fem ; - - mkN g x y = mkNoun g x y ** {lock_CN = <>} ; - regN x = regNoun x ** {lock_CN = <>} ; - - mkA x y z u = mkAdjective x y z u ** {lock_AP = <>} ; - regA x = regAdjective x ** {lock_AP = <>} ; - - mkV x y = mkVerb x y ** {lock_V = <>} ; - regV x = regVerb x ** {lock_V = <>} ; - - mkV2 x p = x ** {c = p ; lock_V2 = <>} ; - dirV2 x = mkV2 x [] ; - -} diff --git a/doc/tutorial/smarthouse/Smart.gf b/doc/tutorial/smarthouse/Smart.gf deleted file mode 100644 index f23082b47..000000000 --- a/doc/tutorial/smarthouse/Smart.gf +++ /dev/null @@ -1,17 +0,0 @@ -abstract Smart = { - -flags startcat = Command ; - -cat - Command ; - Kind ; - Action Kind ; - Device Kind ; -fun - CAction : (k : Kind) -> Action k -> Device k -> Command ; - DKindOne : (k : Kind) -> Device k ; - light, fan : Kind ; - switchOn, switchOff : (k : Kind) -> Action k ; - dim : Action light ; -} - diff --git a/doc/tutorial/smarthouse/SmartEng.gf b/doc/tutorial/smarthouse/SmartEng.gf deleted file mode 100644 index 0f59cd1e0..000000000 --- a/doc/tutorial/smarthouse/SmartEng.gf +++ /dev/null @@ -1,19 +0,0 @@ ---# -path=.:prelude - -concrete SmartEng of Smart = open Prelude in { - --- part of grammar Toy1 from the Regulus book - -lincat - Command, Kind, Action, Device = SS ; -lin - CAction _ act dev = ss (act.s ++ dev.s) ; - DKindOne k = ss ("the" ++ k.s) ; - - light = ss "light" ; - fan = ss "fan" ; - switchOn _ = ss ["switch on"] ; - switchOff _ = ss ["switch off"] ; - dim = ss "dim" ; -} -